مزایای استفاده از روش RAG
استفاده از روش RAG (تولید مبتنی بر بازیابی) در ساخت چت باتها، مزایای قابل توجهی را به همراه دارد که میتواند به حل بسیاری از مشکلات کاربران و کسبوکارها، سازمان ها و نهادها کمک کند.
دسترسی به اطلاعات دقیق و مرتبط
یکی از بزرگترین مزایای RAG، قابلیت بازیابی اطلاعات از منابع معتبر و مرتبطی است که شما در اختیار چت بات قرار میدهید.
این روش به چت باتها امکان میدهد تا پاسخهای دقیق و تخصصی ارائه دهند.
بهجای تولید پاسخهای عمومی یا نامرتبط با مجموعه فعالیتی شما، RAG اطلاعات را از پایگاه های دانش و داده ها یا مستندات خاصی که شما مشخص کرده اید بازیابی کرده و در پاسخها بهکار میگیرد.
مثال: چت بات میتواند اطلاعات را مستقیماً از یک فایل PDF آموزشی یا یک فایل اکسل یا پایگاه داده داخلی استخراج کرده و به کاربران ارائه دهد.
ترکیب قدرت بازیابی و تولید محتوا
RAG بهطور هوشمندانه دو تکنیک قدرتمند هوش مصنوعی را ترکیب میکند:
- بازیابی اطلاعات
- تولید متن
این ترکیب به چت باتها کمک میکند تا پاسخهایی نه تنها دقیق، بلکه روان و قابل فهم و همچنین قابل ارائه در چند زبان مختلف و با لحن های مختلف ارائه دهند.
مثال: اگر کاربر سوالی درباره یک موضوع خاص بپرسد، RAG ابتدا اطلاعات مرتبط را پیدا کرده و سپس آن را بهصورت پاسخ قابل فهم و حرفهای تولید میکند.
افزایش کیفیت تجربه کاربری
چت باتهایی که از RAG استفاده میکنند، میتوانند تجربهای شخصیسازیشده و دقیقتر برای کاربران فراهم کنند. این امر باعث افزایش رضایت کاربران و اعتماد به سیستم میشود.
مثال: در یک وبسایت فروش آنلاین، چت بات میتواند بهجای پاسخهای کلی، اطلاعات دقیقی درباره محصولات خاص از کاتالوگ یا دیتابیس بازیابی کند.
انعطافپذیری بالا
روش RAG برای انواع دادهها و منابع قابل استفاده است. این روش میتواند اطلاعات را از فایلهای PDF، اکسل، پایگاههای داده، یا حتی وبسایتها استخراج کند، که آن را به یک ابزار بسیار انعطافپذیر تبدیل میکند.
مثال: چت بات میتواند همزمان به سوالات مربوط به یک جزوه آموزشی و یک فایل اکسل سوال و جواب پاسخ دهد.
کاهش خطا در پاسخدهی
با بازیابی اطلاعات از منابع معتبر، احتمال تولید پاسخهای اشتباه یا نامرتبط کاهش مییابد. این ویژگی بهویژه در چت باتهای تخصصی، مانند چت باتهای پزشکی یا حقوقی، بسیار مهم است.
مثال: چت بات پزشکی میتواند اطلاعات مرتبط را از منابع علمی بازیابی کند و پاسخهای دقیق و معتبر ارائه دهد.
بهبود عملکرد در مقیاس بزرگ
RAG به دلیل استفاده از منابع خارجی و ترکیب آنها با مدلهای تولید متن، در مقیاسهای بزرگ عملکرد بسیار خوبی دارد. این قابلیت به کسبوکارها امکان میدهد که حجم زیادی از دادهها را مدیریت کرده و از آنها برای ارائه خدمات بهتر استفاده کنند.
مفاهیم پایه در RAG
برای درک بهتر روش RAG و نحوه عملکرد آن، ابتدا باید با چند مفهوم پایه در هوش مصنوعی و پردازش زبان طبیعی (NLP) آشنا شویم.
این مفاهیم به ما کمک میکنند تا بفهمیم چگونه دادهها پردازش میشوند و چت باتها پاسخهای دقیق و مرتبط تولید میکنند.
وکتور (Vector)
وکتور در علوم کامپیوتر و هوش مصنوعی به مجموعهای از اعداد اطلاق میشود که برای نمایش ویژگیهای دادهها استفاده میشود. به زبان ساده، وکتور یک روش ریاضی برای نمایش دادهها (مانند متن، تصویر یا صوت) به صورتی است که الگوریتمهای هوش مصنوعی بتوانند با آن کار کنند.
بردارهای تعبیهشده (Embedding)
Embedding به فرآیند تبدیل دادههای متنی (یا هر نوع داده دیگر) به وکتورهای عددی اشاره دارد. در NLP، این فرآیند به ما کمک میکند تا متنها را در قالب عددی نمایش دهیم، بهگونهای که معنا و ارتباط کلمات حفظ شود.
مثال: کلمات “گربه” و “حیوان” در فضای وکتوری ممکن است به هم نزدیک باشند، زیرا از نظر معنایی مرتبط هستند.
فضای وکتوری (Vector Space)
فضای وکتوری یک فضای چندبعدی است که وکتورها در آن قرار میگیرند.
هر وکتور یک نقطه در این فضا است و فاصله بین وکتورها نشاندهنده شباهت یا تفاوت بین دادههای آنهاست. در RAG، این مفهوم برای یافتن دادههای مرتبط از منابع مختلف استفاده میشود.
بازیابی اطلاعات (Retrieval)
در این مرحله، سیستم به دنبال اطلاعات مرتبط از یک پایگاه داده یا منبع خاص میگردد.
این کار با استفاده از تطبیق وکتورها انجام میشود؛ یعنی سیستم بررسی میکند که کدام وکتورها (یا دادهها) به درخواست کاربر شباهت بیشتری دارند.
تولید متن (Generation)
پس از بازیابی اطلاعات، سیستم از یک مدل تولید متن (مانند GPT یا سایر مدلهای مشابه) استفاده میکند تا پاسخ مناسب را بر اساس اطلاعات بازیابیشده تولید کند.
این مرحله ترکیبی از اطلاعات بازیابیشده و توانایی مدل در تولید متن طبیعی و روان است.
گام به گام مسیر RAG
حالا که با مفاهیم پایه آشنا شدیم، میتوانیم مسیر کلی روش RAG را توضیح دهیم.
RAG یک روش ترکیبی است که از دو مرحله اصلی بازیابی اطلاعات و تولید متن تشکیل شده است. در ادامه، مراحل گام به گام فرآیند RAG را شرح میدهیم:
دریافت درخواست کاربر
ابتدا کاربر یک سوال یا درخواست را مطرح میکند. این درخواست میتواند یک جمله ساده یا یک سوال پیچیده باشد.
مثال: کاربر میپرسد: “تفاوت بین گربه و سگ چیست؟”
تبدیل درخواست به وکتور
در این مرحله، درخواست کاربر با استفاده از مدلهای Embedding (مانند مدلهای BERT، Sentence Transformers یا OpenAI Embeddings) به یک وکتور عددی تبدیل میشود. این وکتور نمایانگر معنای درخواست کاربر است.
جستجوی وکتورها در پایگاه داده
سیستم وکتور درخواست کاربر را با وکتورهای موجود در پایگاه داده مقایسه میکند تا دادههای مرتبط را پیدا کند. پایگاه داده معمولاً شامل وکتورهای تعبیهشده از اطلاعات مختلف (مانند متنهای PDF، اکسل، یا سایر منابع) است.
مثال: اگر پایگاه داده شامل اطلاعاتی درباره حیوانات باشد، سیستم متنهایی درباره گربه و سگ را پیدا میکند.
بازیابی اطلاعات مرتبط
پس از تطبیق وکتورها، سیستم اطلاعات مرتبط (مانند متنهای کوتاه یا بلند) را از پایگاه داده استخراج میکند. این مرحله به سیستم کمک میکند تا به جای تولید پاسخهای عمومی، از دادههای معتبر و خاص استفاده کند.
مثال: متنهای بازیابیشده میتوانند شامل توضیحاتی درباره ویژگیهای گربه و سگ باشند.
ترکیب اطلاعات بازیابیشده
سیستم اطلاعات بازیابیشده را با درخواست کاربر ترکیب میکند تا زمینهای برای تولید پاسخ مناسب فراهم شود. این مرحله تضمین میکند که پاسخ نهایی کاملاً مرتبط با درخواست کاربر باشد.
تولید پاسخ نهایی
در این مرحله، مدل تولید متن (مانند GPT) اطلاعات بازیابیشده را به یک پاسخ طبیعی، روان و قابل فهم تبدیل میکند. مدل تولید متن به سیستم اجازه میدهد تا دادههای خام را به صورت جملات منسجم و مفید ارائه دهد.
مثال: پاسخ نهایی میتواند به این صورت باشد: “گربهها حیوانات مستقلتری هستند و معمولاً رفتار آرامتری دارند، در حالی که سگها اجتماعیترند و نیاز به توجه بیشتری دارند.”
ارائه پاسخ به کاربر
در نهایت، پاسخ تولیدشده به کاربر ارائه میشود. این پاسخ معمولاً دقیق، مرتبط و بهگونهای طراحی شده است که نیاز کاربر را برطرف کند.

آموزش ساخت چت بات اختصاصی با RAG
برای پیاده سازی این تکنیک ما به چند شیوه میتوانیم عمل کنیم که در نهایت همگی در چهارچوب روش های ذکر شده تعریف میشوند.
تصمیم انتخاب این روش ها با توجه به نیاز ما مشخص میشود.
ساخت چت بات اختصاصی با pdf
اگر نیاز شما به این صورت است که یک دانشنامه کلی و کتاب گونه در اختیار دارید که سوال کاربر میتواند مربوط به بخشی از این کتاب باشد راه حل پیشنهادی استفاده از RAG برای فایل های pdf می باشد به این صورت که یک فایل pdf را توسط مدل های Embedding مانند text-embedding-3-large به وکتور تبدیل کرده و در دیتابیس های وکتوری مانند FAISS و یا Chroma ذخیره میکند.
در گام بعدی سوال کاربر هم به وکتور تبدیل شده و با دیتابیس مقایسه و شباهت سنجی میشود.
در نتیجه بخشی که بیشترین شباهت را داشت به عنوان ورودی به مدل llm به همراه سوال کاربر ارسال شده و پاسخ نهایی به کاربر نمایش داده می شود.
نمونه کد پیاده سازی شده RAG برای فایل pdf به عنوان ورودی را میتوانید در لینک زیر مشاهده کنید.
https://github.com/alibinabaji/rag-pdf/blob/main/pdf.py
ساخت چت بات اختصاصی با excel
استراتژی دوم به این صورت هست که شما برای پرسش و پاسخ هایی مانند FAQ نیاز به چت بات اختصاصی دارید.
پیشنهاد عملیاتی برای این نوع نیاز به این صورت است که سوالات و پاسخ ها را در یک فایل اکسل جمع آوری کنید.
صرفا سوالات را را توسط مدل های Embeddings مانند text-embedding-3-large به وکتور تبدیل کرده و در دیتابیس های وکتوری مانند FAISS و یا Chroma ذخیره کنید.
سپس سوالا کاربر را نیز به همین ترتیب به وکتور تبدیل کرده و مشابه روش PDF شباهت سنجی کرده و پاسخ سوالی که بیشترین شباهت را داشت به عنوان خروجی نهایی به کاربر ارسال نمایید.
نمونه کد پیاده سازی شده RAG برای فایل excel به عنوان ورودی را میتوانید در لینک زیر مشاهده کنید.
https://github.com/alibinabaji/rag-excel/blob/main/excel.py