RAG (Retrieval-Augmented Generation) چیست؟
Retrieval-Augmented Generation (RAG) تکنیکی است که نقاط قوت مدل های زبان بزرگ (LLM) را با بازیابی داده های خارجی ترکیب می کند تا کیفیت و ارتباط پاسخ های تولید شده را بهبود بخشد.. LLM های سنتی از پایگاه های دانش از پیش آموزش دیده خود استفاده می کنند، در حالی که خطوط لوله RAG پایگاه های داده یا اسناد خارجی را در زمان اجرا پرس و جو می کنند و اطلاعات مربوطه را بازیابی می کنند تا از آنها برای تولید پاسخ های دقیق تر و غنی تر استفاده کنند. این به ویژه در مواردی مفید است که سؤال پیچیده، خاص یا بر اساس یک چارچوب زمانی معین است، با توجه به اینکه پاسخهای مدل با اطلاعات بهروز مربوط به دامنه غنی شدهاند.
منظره فعلی RAG
مدلهای بزرگ زبان، نحوه دسترسی و پردازش اطلاعات را کاملا متحول کردهاند. با این حال، تنها تکیه بر دانش پیش ورودی داخلی، می تواند انعطاف پذیری پاسخ های آنها را محدود کند – به خصوص برای سؤالات پیچیده. Retrieval-Augmented Generation این مشکل را با اجازه دادن به LLMها برای دستیابی و تجزیه و تحلیل دادهها از سایر منابع خارجی موجود برای تولید پاسخهای دقیقتر و روشنتر برطرف میکند.
توسعه اخیر در بازیابی اطلاعات و پردازش زبان طبیعی، به ویژه LLM و RAG، مرزهای جدیدی از کارایی و پیچیدگی را باز می کند. این تحولات را می توان در خطوط کلی زیر ارزیابی کرد:
- بازیابی اطلاعات پیشرفته: بهبود بازیابی اطلاعات در سیستم های RAG برای کارآمد بودن بسیار مهم است. کارهای اخیر بردارهای مختلف، الگوریتم های رتبه بندی مجدد، روش های جستجوی ترکیبی را برای بهبود جستجوی دقیق توسعه داده اند.
- ذخیره سازی معنایی: به نظر می رسد که این یکی از راه های اصلی است که در آن هزینه های محاسباتی بدون نیاز به صرف نظر از پاسخ های ثابت کاهش می یابد. این بدان معناست که پاسخها به پرسوجوهای فعلی همراه با زمینه معنایی و عملگرایانه آنها در حافظه پنهان ذخیره میشوند، که دوباره زمانهای پاسخ سریعتر را ارتقا میدهد و اطلاعات ثابتی را ارائه میدهد.
- یکپارچهسازی چندوجهی: علاوه بر سیستمهای LLM و RAG مبتنی بر متن، این رویکرد تصاویر و سایر روشهای چارچوب را نیز پوشش میدهد. این امکان دسترسی به تنوع بیشتری از مواد منبع را فراهم می کند و منجر به پاسخ هایی می شود که به طور فزاینده ای پیچیده و به تدریج دقیق تر می شوند.
چالشهای معماری سنتی RAG
در حالی که RAG برای رفع نیازهای مختلف در حال تکامل است. هنوز چالش هایی در مقابل معماری سنتی RAG وجود دارد:
- خلاصه سازی: خلاصه کردن اسناد بزرگ ممکن است دشوار باشد. اگر سند طولانی باشد، ساختار RAG معمولی ممکن است اطلاعات مهم را نادیده بگیرد زیرا فقط K قطعات بالایی را دریافت می کند.
- مقایسه اسناد: مقایسه موثر اسناد هنوز یک چالش است. چارچوب RAG اغلب منجر به مقایسه ناقص می شود زیرا K تکه های تصادفی برتر را از هر سند به طور تصادفی انتخاب می کند.
- تجزیه و تحلیل داده های ساخت یافتهs: رسیدگی به پرسشهای دادههای عددی ساختاریافته، مانند تعیین زمان تعطیلات بعدی کارمند بسته به محل زندگیاش، دشوار است. بازیابی و تجزیه و تحلیل دقیق نقطه داده با این مدل ها دقیق نیست.
- رسیدگی به پرس و جوها با چند بخش: پاسخ دادن به سوالات با چند بخش همچنان محدود است. به عنوان مثال، کشف الگوهای مرخصی مشترک در همه مناطق در یک سازمان بزرگ، زمانی که به K قطعات محدود شود، چالش برانگیز است و تحقیقات کامل را محدود می کند.
به سمت Agentic RAG حرکت کنید
RAG نمایندگی از عوامل هوشمند برای پاسخ به سؤالات پیچیده ای که نیاز به برنامه ریزی دقیق، استدلال چند مرحله ای و ادغام ابزارهای خارجی دارند، استفاده می کند. این کارگزاران وظایف یک محقق ماهر را انجام میدهند، به طرز ماهرانهای در میان انبوهی از اسناد پیمایش میکنند، دادهها را مقایسه میکنند، یافتهها را خلاصه میکنند و پاسخهای جامع و دقیق را تولید میکنند.
مفهوم عوامل در چارچوب کلاسیک RAG گنجانده شده است تا عملکرد و قابلیت های سیستم را بهبود بخشد و در نتیجه RAG عامل ایجاد شود. این عوامل وظایف و استدلال اضافی فراتر از بازیابی و ایجاد اطلاعات اولیه، و همچنین هماهنگی و کنترل اجزای مختلف خط لوله RAG را بر عهده می گیرند.
سه استراتژی اصلی عامل
روترها بسته به نوع آنها پرس و جوها را به ماژول ها یا پایگاه های داده مناسب ارسال می کنند. روترها به صورت پویا با استفاده از مدلهای زبان بزرگ تصمیم میگیرند که متن یک درخواست بر روی آن قرار میگیرد، تا با موتور انتخابی که باید برای بهبود دقت و کارایی خط لوله شما ارسال شود، تماس بگیرید.
تبدیلهای پرس و جو فرآیندهایی هستند که در بازنویسی پرس و جوی کاربر برای مطابقت با اطلاعات مورد نیاز یا برعکس، برای مطابقت با آنچه پایگاه داده ارائه میکند، دخیل هستند. این می تواند یکی از موارد زیر باشد: بازنویسی، بسط یا تجزیه سؤالات پیچیده به سؤالات فرعی ساده تر که به راحتی قابل حل هستند.
همچنین برای پاسخگویی به یک پرسش پیچیده با استفاده از چندین منبع داده، یک موتور پرس و جوی فرعی را می طلبد.
ابتدا، سؤال پیچیده به سؤالات سادهتر برای هر یک از منابع داده تجزیه میشود. سپس تمام پاسخهای میانی جمعآوری شده و نتیجه نهایی ترکیب میشود.
لایه های عامل برای خطوط لوله RAG
- مسیریابی: سؤال بر اساس ارتباط به پردازش مبتنی بر دانش مربوطه هدایت می شود. مثال: وقتی کاربر میخواهد برای دستههای خاصی از کتابها توصیههایی دریافت کند، میتوان پرس و جو را به یک پایگاه دانش حاوی دانش درباره آن دسته از کتابها هدایت کرد.
- برنامه ریزی پرس و جو: این شامل تجزیه پرس و جو به پرس و جوهای فرعی و سپس ارسال آنها به خطوط لوله مربوطه می باشد. عامل برای همه موارد، مانند سال در این مورد، پرسشهای فرعی تولید میکند و آنها را به پایگاههای دانش مربوطه ارسال میکند.
- استفاده از ابزار: یک مدل زبان با یک API یا ابزار خارجی صحبت میکند و میداند که چه چیزی مستلزم آن است، قرار است ارتباط در کدام پلتفرم انجام شود و چه زمانی لازم است این کار انجام شود. مثال: با توجه به درخواست کاربر برای پیشبینی آبوهوا برای یک روز معین، LLM با API آبوهوا ارتباط برقرار میکند، مکان و تاریخ را شناسایی میکند، سپس بازگشتی را که از API میآید برای ارائه اطلاعات درست تجزیه میکند.
- واکنش نشان دهید فرآیندی تکراری از تفکر و عمل همراه با برنامه ریزی، استفاده از ابزار و مشاهده است.
به عنوان مثال، برای طراحی یک برنامه تعطیلات پایان به انتها، سیستم خواستههای کاربر را در نظر میگیرد و جزئیات مسیر، جاذبههای گردشگری، رستورانها و اقامتگاه را با تماس با APIها دریافت میکند. سپس، سیستم نتایج را با توجه به صحت و مرتبط بودن بررسی میکند و یک برنامه سفر تفصیلی مرتبط با درخواست و برنامه کاربر ارائه میکند. - برنامه ریزی پرس و جو پویا: عامل به جای انجام متوالی، چندین عملیات یا پرس و جوهای فرعی را به صورت همزمان اجرا می کند و سپس این نتایج را جمع می کند.
به عنوان مثال، اگر کسی بخواهد نتایج مالی دو شرکت را با هم مقایسه کند و تفاوت را در برخی معیارها تعیین کند، آنگاه نماینده قبل از جمعآوری یافتهها، دادههای هر دو شرکت را به صورت موازی پردازش میکند. LLMCompiler یکی از چنین چارچوب هایی است که منجر به هماهنگی کارآمد فراخوانی موازی توابع می شود.
عامل RAG و LLMaIndex
LLMaIndex اجرای بسیار کارآمد خطوط لوله RAG را نشان می دهد. این کتابخانه به سادگی با فراهم کردن ابزارهایی در پردازش و بازیابی دادهها و همچنین رابطهایی با منابع مختلف داده، بخش گمشده را در ادغام دادههای سازمانی ساختاریافته در مدلهای هوش مصنوعی مولد پر میکند. اجزای اصلی LlamaIndex در زیر توضیح داده شده است.
LlamaParse اسناد را تجزیه می کند.
Llama Cloud برای خدمات سازمانی با خطوط لوله RAG که با کمترین میزان کار دستی مستقر شده است.
با استفاده از چندین LLM و ذخیره سازی برداری، LlamaIndex یک راه یکپارچه برای ساخت برنامه های کاربردی در Python و TypeScript با RAG ارائه می دهد. ویژگیهای آن باعث میشود که شرکتهایی که مایل به استفاده از هوش مصنوعی برای تصمیمگیری مبتنی بر دادههای پیشرفته هستند، مورد تقاضا باشد.
اجزای کلیدی اجرای Agentic Rag با LLMaIndex
بیایید به برخی از مواد تشکیل دهنده RAG عامل و نحوه پیاده سازی آنها در LlamaIndex بپردازیم.
1. استفاده از ابزار و مسیریابی
عامل مسیریابی بر اساس نوع اعلان انتخاب می کند که کدام LLM یا ابزار برای یک سوال معین بهتر است استفاده شود. این منجر به تصمیمات حساس متنی می شود، مانند اینکه آیا کاربر یک مرور کلی می خواهد یا یک خلاصه دقیق. نمونههایی از چنین رویکردهایی Router Query Engine در LlamaIndex است که به صورت پویا ابزارهایی را انتخاب میکند که پاسخها را به پرس و جوها به حداکثر میرساند.
2. حفظ متن طولانی مدت
در حالی که مهم ترین کار حافظه حفظ زمینه در چندین تعامل است، در مقابل، عوامل مجهز به حافظه در نوع عامل RAG به طور مداوم از تعاملاتی که منجر به پاسخ های منسجم و مملو از زمینه می شود آگاه هستند.
LlamaIndex همچنین دارای یک موتور چت است که دارای حافظه برای مکالمات متنی و پرس و جوهای تک شات است. برای جلوگیری از سرریز شدن پنجره زمینه LLM، چنین حافظه ای باید در طول بحث طولانی کنترل دقیقی داشته باشد و به شکل خلاصه کاهش یابد.
3. موتورهای فرعی برای برنامه ریزی
اغلب اوقات، شخص باید یک پرس و جو پیچیده را به مشاغل کوچکتر و قابل مدیریت تقسیم کند. موتور پرس و جوی فرعی یکی از عملکردهای اصلی است که LlamaIndex برای آن به عنوان یک عامل استفاده می شود، به موجب آن یک پرس و جو بزرگ به موارد کوچکتر تقسیم می شود، به صورت متوالی اجرا می شود و سپس برای تشکیل یک پاسخ منسجم ترکیب می شود. توانایی عامل ها برای بررسی گام به گام چندین جنبه یک پرس و جو، مفهوم برنامه ریزی چند مرحله ای در مقابل یک برنامه خطی را نشان می دهد.
4. بازتاب و تصحیح خطا
عوامل انعکاسی خروجی تولید می کنند اما سپس کیفیت آن خروجی را بررسی می کنند تا در صورت لزوم اصلاحاتی انجام شود. این مهارت در حصول اطمینان از دقت بسیار مهم است و اینکه آنچه به دست می آید همان چیزی است که مورد نظر شخص بوده است. به لطف گردش کار خود انعکاسی LlamaIndex، یک نماینده عملکرد خود را با تلاش مجدد یا تنظیم فعالیت هایی که سطوح کیفی خاصی را برآورده نمی کنند، بررسی می کند. اما چون خود تصحیح میشود، Agentic RAG تا حدودی برای آن دسته از برنامههای کاربردی سازمانی قابل اعتماد است که قابلیت اطمینان در آنها بسیار مهم است.
5. استدلال عاملی پیچیده:
کاوش مبتنی بر درخت زمانی اعمال میشود که ماموران برای دستیابی به چیزی باید تعدادی از مسیرهای ممکن را بررسی کنند. برخلاف تصمیمگیری متوالی، استدلال مبتنی بر درخت به عامل امکان میدهد تا استراتژیهای چندگانه را به یکباره در نظر بگیرد و امیدوارکنندهترین را بر اساس معیارهای ارزیابی بهروز شده در زمان واقعی انتخاب کند.
LlamaCloud و LlamaParse
LlamaCloud با مجموعه گسترده ای از خدمات مدیریت شده طراحی شده برای تقویت زمینه سازمانی در برنامه های LLM و RAG، یک جهش بزرگ در محیط LlamaIndex است. این راه حل، مهندسان هوش مصنوعی را قادر می سازد تا با کاهش فرآیند پیچیده کشمکش داده ها، بر توسعه منطق کلیدی کسب و کار تمرکز کنند.
یکی دیگر از موتورهای تجزیه موجود LlamaParse است که به راحتی با خطوط لوله جذب و بازیابی در LlamaIndex ادغام می شود. این یکی از مهمترین عناصری است که اسناد پیچیده و نیمه ساختار یافته را با اشیاء جاسازی شده مانند جداول و شکل ها مدیریت می کند. یکی دیگر از اجزای سازنده مهم API جذب و بازیابی مدیریت شده است که تعدادی راه برای بارگیری، پردازش و ذخیره آسان داده ها از مجموعه بزرگی از منابع، مانند مخزن داده مرکزی LlamaHub یا خروجی های LlamaParse ارائه می دهد. علاوه بر این، از ادغام های مختلف ذخیره سازی داده ها پشتیبانی می کند.
نتیجه گیری
Agentic RAG نشان دهنده یک تغییر در پردازش اطلاعات با وارد کردن هوش بیشتر به خود عوامل است. در بسیاری از موقعیتها، RAG عامل میتواند با فرآیندها یا APIهای مختلف ترکیب شود تا نتیجه دقیقتر و دقیقتری ارائه کند. برای مثال، در مورد خلاصهسازی اسناد، RAG عامل قبل از ایجاد خلاصه یا مقایسه مشخصات، هدف کاربر را ارزیابی میکند. هنگام ارائه پشتیبانی مشتری، RAG agent می تواند به طور دقیق و جداگانه به سوالات پیچیده مشتری پاسخ دهد، نه تنها بر اساس مدل آموزشی آنها، بلکه بر اساس حافظه موجود و منابع خارجی به طور یکسان. Agentic RAG تغییر از مدل های مولد به سیستم های دقیق تر را برجسته می کند که از انواع دیگر منابع برای دستیابی به نتیجه ای قوی و دقیق استفاده می کنند. با این حال، این مدلها و RAGهای Agenitc از آنجایی که اکنون مولد و هوشمند هستند، در تلاش هستند تا بازدهی بالاتری داشته باشند زیرا دادههای بیشتری به خطوط لوله اضافه میشود.