پارادایم‌ های RAG در مدل‌ های زبانی بزرگ

پارادایم‌ های RAG در مدل‌ های زبانی بزرگ

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۰۴ مهر ۱۴۰۳
آخرین بروزرسانی: 04 مهر 1403
زمان مطالعه: 10 دقیقه
۰
(۰)

در این مقاله، به بررسی چگونگی تکامل سیستم‌های RAG در طی سال‌های اخیر می‌پردازیم. همچنین تفاوت‌های بین چارچوب‌های Naive RAG، Advanced RAG و Modular RAG را شرح خواهیم داد. در نهایت، خلاصه‌ای از یافته‌های کلیدی یک مقاله نظرسنجی برجسته در مورد فناوری RAG، Gao et al. 2024، ارائه خواهیم کرد.

فریم‌ ورک RAG چیست؟

مدل‌های زبان بزرگ (LLMs) مانند سری GPT از OpenAI، سری LLama توسط متا و جمینی توسط گوگل به دستاوردهای قابل توجهی در زمینه هوش مصنوعی جنریتیو رسیدند.

اما این مدل‌ها قطعی نیستند. اغلب، LLMها ممکن است محتوایی تولید کنند که نادرست یا نامرتبط باشد، به اطلاعات قدیمی تکیه کند یا فرآیند تصمیم‌گیری آن‌ها شفاف نباشد؛ به اصطلاح منجر به استدلال جعبه سیاه (Black Box) شود. فریم‌ورک نسل بازیابی- تقویت‌شده (RAG) برای کمک به کاهش این چالش‌ها طراحی شده است. RAG پایگاه دانش LLMها را با اطلاعات اضافی موضوع خاص تقویت می‌کند.

برای مثال، از سیستم‌های مبتنی بر RAG در برنامه‌های پیشرفته پرسش و پاسخ (Q&A) مانند چت‌بات‌ها استفاده می‌شود. برای اینکه یک چت‌بات بتواند سوالات مربوط به موضوعات خاصی را درک کرده و به آن‌ها پاسخ دهد، لازم است دانش مدل‌های زبان بزرگ (LLMs) را با داده‌های موردنیاز تقویت کند. این‌جا، جایی است که RAG وارد میدان می‌شود.

دوره آموزش Vector Database [با رویکرد تصویر و متون فارسی] نیک آموز

چارچوب RAG: پرسش‌ ها و پاسخ‌ ها

چارچوب RAG به سه سوال کلیدی پاسخ می‌دهد:

  • چه چیزی را بازیابی کنیم؟ (What to retrieve)
  • چه زمانی بازیابی کنیم؟ (When to retrieve)
  • چگونه از اطلاعات بازیابی شده استفاده کنیم؟ (How to use the retrieved information)

در سال‌های اخیر، تحقیقات و نوآوری‌های زیادی در زمینه RAG انجام شده است. سیستم‌های RAG را می‌توان به سه دسته تقسیم کرد:

  • RAG ساده (Naive RAG)
  • RAG پیشرفته (Advanced RAG)
  • RAG ماژولار (Modular RAG)

در تصویر زیر، مقایسه‌ای بین این سه نوع RAG می‌بینید:

 

 

انواع Rag

 

کپشن: مقایسه بین سه پارادایم RAG- مقاله Gao et al سال ۲۰۲۴

Naive RAG

RAG ساده یک روش پردازش زبان طبیعی (NLP) است که برای بهبود پاسخگویی به سوالات کاربران طراحی شده است. این روش ترکیبی از دو کارکرد اصلی NLP یعنی بازیابی اطلاعات و تولید متن است. RAG ساده از سه مرحله کلیدی تشکیل شده است:

۱. فهرست‌ نویسی داده (Data Indexing)

  • بارگذاری داده (Data Loading): در این مرحله، تمامی اسناد یا اطلاعات موردنیاز برای پاسخگویی به سوالات، وارد سیستم می‌شوند.
  • تقسیم داده (Data Splitting): اسناد بزرگ به قطعات کوچک‌تر، به عنوان مثال بخش‌هایی با حداکثر ۵۰۰ کاراکتر، تقسیم می‌شوند.
  • جاسازی داده (Data Embedding): برای اینکه کامپیوتر بتواند محتوای داده‌ها را درک کند، آن‌ها به شکل بردار (vector) تبدیل می‌شوند. این کار با استفاده از یک مدل جاسازی (embedding model) انجام می‌گیرد.
  • ذخیره‌سازی داده (Data Storing): وکتورهای جاسازی شده در یک وکتور دیتابیس‌ ذخیره می‌شوند تا بعداً به‌راحتی قابل جستجو باشند.

۲. بازیابی (Retrieval)

زمانی که کاربر سوالی می‌پرسد، ابتدا ورودی کاربر با استفاده از همان مدل جاسازی که در مرحله فهرست‌نویسی داده استفاده شد، به یک وکتور ( کوئری وکتور) تبدیل می‌شود.

سپس این کوئری وکتور با تمام بردارهای موجود در وکتور دیتابیس مطابقت داده می‌شود تا شبیه‌ترین وکتورها (که ممکن است حاوی پاسخ به سوال کاربر باشند) را پیدا کند. برای این کار از معیار‌هایی مانند فاصله اقلیدسی (Euclidean distance) استفاده می‌کند. در این مرحله، هدف شناسایی قطعات دانش مرتبط است.

۳. تکمیل و تولید (Augmentation & Generation)

مدل LLM سوال کاربر و اطلاعات مرتبط بازیابی شده از وکتور دیتابیس را دریافت می‌کند تا پاسخی ایجاد کند. این فرآیند، سوال را با داده‌های شناسایی شده (Augmentation) ترکیب می‌کند تا پاسخی (Generation) ایجاد کند.

مشکلات RAG ساده

RAG ساده با چالش‌هایی در تمام مراحل خود روبرو است:

  • بازیابی: ناتوانی در بازیابی تمام بخش‌های مرتبط یا بازیابی بخش‌های نامربوط.
  • افزایش: چالش‌هایی در زمینه ادغام بخش‌های بازیابی شده که ممکن است جدا از هم یا حاوی اطلاعات تکراری باشند.
  • تولید: LLM ممکن است به‌طور بالقوه پاسخ‌هایی را تولید کند که در زمینه ارائه شده (بخش‌های بازیابی شده) پایه و اساس نداشته باشند یا پاسخ‌هایی را براساس زمینه نامربوطی که بازیابی شده است، تولید کنند.

RAG پیشرفته

استراتژی‌های RAG پیشرفته برای رفع چالش‌های موجود در RAG ساده (Naive RAG) توسعه پیدا کرده است. در زیر به بررسی تکنیک‌های کلیدی RAG پیشرفته می‌پردازیم.

برنامه‌های کاربردی RAG باید بتوانند به‌طور موثر اسناد مرتبط را از دیتا سورس را بازیابی کنند. اما در هر مرحله چالش‌های متعددی وجود دارد.

۱. چگونه می‌توانیم به بازنمایی معنایی دقیق داکیومنت‌ها و کوئری‌ها دست پیدا کنیم؟

۲. چه روش‌هایی می‌توانند فضای معنایی کوئری‌ها و قطعه‌های متنی  را همسو کنند؟

۳. چگونه خروجی بازیاب (Retriever) را می‌توان با ترجیحات مدل زبان بزرگ (LLM) همسو کرد؟

در اینجا به بررسی کلی استراتژی‌های پیش از بازیابی، بازیابی و پس از بازیابی می‌پردازیم:

پیش از بازیابی

چگونه فهرست‌سازی داده‌ها را بهینه کنیم؟

  • بهبود کیفیت داده: حذف اطلاعات غیرمرتبط، رفع ابهام در نهادها و اصطلاحات، تایید صحت اطلاعات، حفظ زمینه و به‌روزرسانی اطلاعات منسوخ.
  • بهینه‌سازی ساختار فهرست: بهینه‌سازی اندازه قطعه‌های متنی برای پوشش زمینه مرتبط یا افزودن اطلاعات از ساختار گراف برای به تصویر کشیدن روابط بین نهادها (Entities).
  • اضافه کردن متادیتا: اضافه کردن تاریخ، فصل‌ها، زیربخش‌ها، اهداف یا هر اطلاعات مرتبط دیگری به قطعات متنی به عنوان متادیتا برای بهبود فیلتر کردن داده‌ها.

بهینه‌ سازی قطعات متنی

هنگام استفاده از منابع داده یا داکیومنت‌های خارجی برای ساختن پایپ‌لاین RAG، اولین قدم تبدیل آن‌ها به قطعات متنی کوچکتر برای استخراج ویژگی‌های دقیق است. سپس این قطعات متنی برای نشان دادن معنای خود، جاسازی (Embedded) می‌شوند. اما جاسازی قطعات متنی خیلی بزرگ یا خیلی کوچک ممکن است منجر به نتایج بهینه نشود؛ بنابراین باید به بهینه‌سازی اندازه قطعاتی اقدام کنیم که برای نوع اسناد در پایپ‌لاین RAG دراختیار داریم.

خلاصه‌ ای از تکنیک‌ های پیش از بازیابی 

  • پنجره کشویی (Sliding Window): این روش، تکه‌تکه کردن اطلاعات است. شبیه برش دادن یک کیک به بخش‌های کوچک‌تر. این کار باعث می‌شود مدل زبان (Language Model) بخش‌های مرتبط را بهتر شناسایی کند.
  • ادغام خودکار نتایج (Auto-Merging Retrieval): در مرحله اول جستجو، قسمت‌های کوچک‌تری از متن را بررسی می‌کند و سپس سراغ بخش‌های بزرگ‌تر و مرتبط‌تر می‌رود تا مدل زبان آن‌ها را پردازش کند.
  • انتخاب بر اساس چکیده (Abstract Embedding): این روش با اولویت دادن به چکیده یا خلاصه مقالات (Top-K retrieval)، درک کلی از کل متن را برای مدل زبان فراهم می‌کند.
  • فیلتر کردن بر اساس متادیتا (Metadata Filtering): از اطلاعات جانبی مقالات مثل تاریخ انتشار یا نویسنده برای بهبود فرآیند فیلتر کردن استفاده می‌کند.
  • فهرست‌نویسی گراف (Graph Indexing): این روش موجودیت‌ها (Entities) و روابط بین آن‌ها را به گره‌ها و اتصالات در یک شبکه تبدیل می‌کند که به شکل قابل توجهی ارتباط نتایج با جستجو را بالا می‌برد.

همانطور که می‌بینید، این روش‌ها به مدل‌های زبان کمک می‌کنند تا با کارآمدی بیشتری به دنبال اطلاعات مورد نیاز شما باشند.

بازیابی (Retrieval)

پس از مشخص شدن اندازه قطعات متنی، مرحله بعدی قرار دادن این قطعات در فضای معنایی با استفاده از یک مدل embedding (مدل جاسازی) است. در این مرحله، هدف ما شناسایی مرتبط‌ترین قطعات متنی با کوئری است. این کار با محاسبه شباهت بین کوئری و قطعات متنی انجام می‌شود. در اینجا، ما می‌توانیم مدل‌های جاسازی را که برای تعبیه هر دو کوئری و قطعات متنی بهینه کنیم.

تنظیم دقیق دانش حوزه (Domain Knowledge Fine-Tuning) 

برای اطمینان از اینکه یک مدل جاسازی به‌طور دقیق اطلاعات خاص حوزه سیستم RAG را ثبت می‌کند، مهم است از مجموعه داده‌های خاص حوزه برای تنظیم دقیق استفاده شود. مجموعه داده برای تنظیم دقیق مدل جاسازی باید شامل موارد زیر باشد: 

  • کوئری‌ها
  • یک corpus (مجموعه متن) 
  • اسناد مرتبط

معیار های شباهت (Similarity Metrics) 

روش‌های مختلفی برای اندازه‌گیری شباهت بین وکتورها وجود دارد. انتخاب معیار شباهت نیز یک مسئله بهینه‌سازی است. وکتوردیتابیس‌ها (ChromaDB، Pinecode، Weaviate) از چندین معیار شباهت مختلف پشتیبانی می‌کنند. در اینجا چند نمونه از معیارهای شباهت مختلف آورده شده است:

  • Cosine Similarity
  • Euclidean Distance (L2)
  • Dot Product
  • L2 Squared Distance
  • Manhattan Distance

پس از بازیابی (Post-Retrieval)

پس از اینکه تکه‌های متنی موردنظر را از وکتور دیتابیس بازیابی کردیم، مرحله بعدی باید آن‌ها را با کوئری ترکیب کنیم و به عنوان ورودی به مدل زبان بزرگ (LLM) دهیم. در این میان، ممکن است بعضی از این تکه‌های بازیابی شده تکراری، پر سروصدا یا حاوی اطلاعات نامرتبط باشد. این موضوع ممکن است روی نحوه پردازش متن توسط LLM تاثیر بگذارد. درادامه، چند راهکار را معرفی می‌کنیم که بتوانیم بر این مشکلات غلبه کنیم:

رتبه‌ بندی مجدد (Reranking)

اطلاعات بازیابی شده را دوباره رتبه‌بندی کرده تا اولویت با مرتبط‌ترین محتوا باشد. مدل‌های زبان بزرگ اغلب با اضافه شدن متن بیشتر، افت عملکرد را تجربه می‌کنند. رتبه‌بندی مجدد با مرتب کردن دوباره تکه متن‌های بازیابی شده و شناسایی Top-Kمرتبط‌ترین تکه متنی، این مشکل را حل می‌کند. این تکه‌های منتخب بعدا به عنوان متن ورودی برای LLM استفاده می‌شود. کتابخانه‌هایی مثل LlamaIndex، Langchain و HayStack امکان استفاده از رتبه‌بندی مجدد را فراهم می‌کنند.

فشرده‌ سازی پرامپت‌ ها (Prompt Compression)

اطلاعات بازیابی شده ممکن است پرسروصدا باشند. به همین دلیل بسیار مهم است که متون نامرتبط را فشرده و اندازه متن را قبل از ارائه به LLM کم کنیم. برای تخمین اهمیت عناصر، از مدل‌های زبان کوچک (Small Language Models) برای محاسبه اطلاعات متقابل پرامپت یا Perplexity استفاده می‌شود. درصورت طولانی بودن متن می‌توانید از تکنیک‌های خلاصه‌سازی استفاده کنید.

ماژولار RAG

سیستم RAG ماژولار با ترکیب کردن ماژول‌ها و تکنیک‌های مختلف از RAG پیشرفته، کل سیستم را بهبود می‌بخشد. به‌عنوان مثال، این سیستم یک ماژول جستجو برای بازیابی شباهت و همچنین رویکردی برای تنظیم دقیق بازیاب (retriever) استفاده می‌کند. RAG ماژولار به یک الگوی استاندارد در ساخت برنامه‌های کاربردی RAG تبدیل شده است. چند نمونه از ماژول های این سیستم عبارتند از:

ماژول جستجو (Search Module)

علاوه‌بر بازیابی متن مرتبط از وکتور دیتابیس، ماژول‌های جستجو، دیتا را از منابع دیگری مانند موتورهای جستجو، داده‌های جدولی و غیره ادغام می‌کند.

ماژول حافظه (Memory Module)

این ماژول یک مؤلفه حافظه به سیستم RAG اضافه می‌کند که در آن LLM می‌تواند نه‌تنها به بخش‌های بازیابی‌شده از وکتور دیتابیس بلکه به کوئری‌های قبلی که در حافظه سیستم ذخیره شدند، نیز مراجعه کند.

فیوژن (Fusion)

شامل جستجوهای موازی وکتور برای پرسش‌های اصلی و توسعه‌یافته، رتبه‌بندی هوشمند مجدد برای بهینه‌سازی نتایج و مطابقت دادن بهترین نتایج با پرسش‌های جدید است.

مسیریابی (Routing)

مسیریابی کوئری براساس پرسش کاربر، اقدام بعدی مانند خلاصه‌سازی (summarization) یا جستجو در دیتابیس‌های خاص را تعیین می‌کند.

کلام پایانی؛ گامی بلند در مسیر تکامل RAG

سیستم‌های RAG ابزاری قدرتمند برای بهبود عملکرد مدل‌های زبان بزرگ (LLMs) در زمینه‌های مختلف مانند پرسش و پاسخ، تولید متن، خلاصه‌سازی و ترجمه هستند. RAG با ترکیب بازیابی اطلاعات، تولید متن و استدلال، به LLMها کمک می‌کند تا پاسخ‌های دقیق‌تر، مرتبط‌تر و خلاقانه‌تری ارائه دهند. با ادامه تحقیقات و نوآوری‌ها در این زمینه، می‌توان انتظار داشت که شاهد کاربردهای وسیع‌تر و شگفت‌انگیزتر RAG در آینده باشیم.

چه رتبه ای می‌دهید؟

میانگین ۰ / ۵. از مجموع ۰

اولین نفر باش

گوش به زنگ یلدا
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
401 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران