ساخت چتبات هوشمند | قسمت سوم
Dec. 8, 2025, 8:12 a.m. - توسط مدیر
معماری RAG در چتبات ما
چگونه لایه RAG دقت پاسخها را چند برابر میکند؟
چتباتهای سازمانی برای اینکه بتوانند در موقعیتهای واقعی پاسخ دقیق، قابل اعتماد و مستند ارائه دهند، نیازمند یک لایهی دانش مستقل هستند؛ لایهای که بتواند اطلاعات داخلی شرکت را به مدل زبانی تزریق کند.
در معماری چتبات ما این نقش بر عهده RAG (Retrieval-Augmented Generation) است.
در این مقاله معماری RAG، تکنولوژیهای مورد استفاده و دلیل انتخاب آنها را بهصورت کامل توضیح میدهم.
🔹 RAG چیست و چرا در چتبات مهم است؟
مدلهای زبانی (LLM) معمولاً دانش عمومی دارند و از دادههایی که به آنها آموزش داده شدهاند استفاده میکنند.
اما در محیط سازمانی، پاسخها باید دقیقاً مطابق با:
-
قوانین داخلی
-
دستورالعملها
-
گردشکار
-
سیاستهای پشتیبانی
-
فرآیندهای اختصاصی
باشند.
بنابراین لازم است چتبات بتواند دادههای داخلی شرکت را بازیابی و در فرایند پاسخدهی استفاده کند.
لایه RAG دقیقاً همین کار را انجام میدهد.
🔵 معماری RAG در چتبات: سه بخش اصلی
لایه RAG در معماری ما از سه بخش تشکیل شده است:
-
Embedding Pipeline
-
Vector Database
-
Retrieval Engine
در ادامه هر بخش را با جزئیات کامل توضیح میدهم.
1) Embedding Pipeline
تبدیل اسناد سازمانی به دادههای قابل فهم برای مدل
تمام اسناد داخلی قبل از ورود به سیستم باید به یک شکل عددی قابل جستجو تبدیل شوند.
برای این کار از Embedding استفاده میکنیم.
🔧 تکنولوژیها:
-
SentenceTransformers
-
مدل
multilingual-e5-large -
بردار ۱۰۲۴ بعدی
🎯 دلیل انتخاب:
-
دقت بسیار خوب روی زبان فارسی
-
مناسب برای متنهای طولانی، گزارشها و فایلهای سازمانی
-
عملکرد قوی در سناریوهای Semantic Search
-
پایداری بالا در محیط Production
🔬 ورودیهای این مرحله:
-
فایلهای PDF
-
متنهای خام
-
پیامها و راهنماهای داخلی
-
دستورالعملهای پشتیبانی
-
مستندات فنی
🔍 خروجی:
هر سند → یک بردار ۱۰۲۴ بعدی → آماده ذخیرهسازی در VectorDB
2) Vector Database
جایی که دانش سازمان ذخیره و قابل جستجو میشود
برای ذخیره embeddingها از یک پایگاه داده برداری استفاده میکنیم.
🔧 تکنولوژی:
-
Qdrant
(نسخه داکرایز شده برای محیطهای توسعه و Production)
قابلیتهایی که استفاده میکنیم:
-
HNSW Index برای جستجوی سریع
-
فیلترگذاری برای جداسازی مجموعهها (multi-client, multi-domain)
-
متادیتا برای ثبت نوع محتوا، موضوع و تاریخ
-
بهروزرسانی بدون downtime
-
پشتیبانی از soft-delete و آپدیت
معماری ذخیرهسازی:
هر کلاینت یا سرویس میتواند Collection خاص خودش را داشته باشد:
collection: "credit_docs"
collection: "wallet_docs"
collection: "support_guides"
این طراحی باعث میشود چتبات بتواند در چند دامین مختلف بدون تداخل پاسخ دهد.
3) Retrieval Engine
مغز عملیاتی RAG: بازیابی دادههای مرتبط با هر سؤال
زمانی که کاربر سؤال میپرسد، دادهها قبل از ورود به مدل زبانی از VectorDB بازیابی میشوند.
مراحل دقیق کار:
1. ساخت embedding از سؤال کاربر
ورودی کاربر به یک بردار تبدیل میشود.
2. جستجو در VectorDB
Qdrant نزدیکترین اسناد مرتبط را بر اساس فاصله برداری برمیگرداند.
3. ترکیب سؤال + اسناد
چند سند مرتبط بههمراه سؤال به عنوان context به مدل داده میشوند.
4. تولید پاسخ
مدل پاسخ را با استفاده از اطلاعات واقعی سازمان میسازد.
🔧 تکنولوژیهای بخش Retrieval:
-
Python / Django
-
qdrant-client
-
llama-cpp-python
🧠 مدل زبان (LLM)
یک مدل سبک، سریع و مناسب زبان فارسی
برای تولید پاسخ نهایی از یک مدل سبک استفاده میکنیم که:
-
روی CPU اجرا میشود
-
مصرف حافظه پایین دارد
-
سرعت پاسخدهی خوبی دارد
-
پشتیبانی بسیار خوبی از زبان فارسی دارد
-
مناسب پاسخهای سازمانی و کنترلشده است
(نام مدل عمداً ذکر نشده، طبق درخواست شما.)
🧩 نتیجه نهایی این معماری
لایه RAG باعث میشود چتبات بتواند:
✔️ پاسخهای کاملاً متکی به دادههای داخلی بدهد
نه حدس، نه تخمین—بلکه طبق مستندات و قوانین شرکت.
✔️ دانش سازمان را بدون نیاز به آموزش مجدد مدل بهروزرسانی کند
فقط اسناد جدید وارد VectorDB میشوند.
✔️ چند حوزه مختلف را همزمان پشتیبانی کند
مثلاً Wallet، Credit، Support، Payments، Fraud و…
✔️ پاسخهای دقیق، کنترلشده و قابل استناد ارائه دهد
✔️ مستقل از Flow و Agent کار کند
RAG یک لایه مستقل است که در کنار Router، Flow Engine و Agent عمل میکند.
🔻 جمعبندی
RAG یکی از مهمترین بخشهای معماری چتبات ماست.
این لایه فاصله بین «دانش سازمان» و «پاسخهای مدل» را پر میکند و باعث میشود چتبات به یک ابزار واقعی برای پشتیبانی و عملیات داخلی تبدیل شود.
در ادامه، در مقاله بعدی بخش Flow Engine را توضیح میدهم:
-
ساختار درختی
-
مدلها
-
ذخیرهسازی مسیر کاربر
-
ادغام با Router
-
و دلیل اینکه Flow یکی از ستونهای اصلی چتبات است
دیدگاه ها (0)
هیچ دیدگاهی وجود ندارد.