فرض کنید داخل ۱۰۰ هزار سند دنبال جملهای دربارهٔ «لغو قرارداد» میگردید. جستجوی معمولی کلمهای میتواند عبارتهایی را پیدا کند که دقیقاً شامل همین کلمات هستند، اما اگر در یک سند نوشته شده باشد «شرایط پایان همکاری پیش از موعد»، ممکن است جستجوی کلمهای ساده آن را پیدا نکند. اینجا Semantic Search وارد میشود.
Embedding چیست؟
Embedding روشی برای تبدیل اطلاعات به مجموعهای از اعداد است. برای مثال یک جمله میتواند به برداری با صدها یا هزاران عدد تبدیل شود. این اعداد بهگونهای تولید میشوند که متنهایی با مفهوم مشابه معمولاً در فضای برداری به یکدیگر نزدیکتر باشند.
به همین دلیل «چطور رمز عبورم را عوض کنم؟» و «روش تغییر پسورد چیست؟» از نظر برداری میتوانند بسیار نزدیک باشند، حتی اگر کلمات دقیقاً یکسانی نداشته باشند.
Vector Database چیست؟
وقتی میلیونها بردار داشته باشیم، باید بتوانیم آنها را ذخیره و با سرعت بالا جستوجو کنیم؛ Vector Database برای همین مسئله ساخته شده است. هنگام جستوجو، بردار سؤال کاربر با بردارهای موجود مقایسه میشود و نزدیکترین موارد برگردانده میشوند.
نقش Embedding در RAG
یکی از معماریهای رایج RAG چنین است:
Document → Chunking → Embedding → Vector Database
و هنگام پرسش:
Question → Embedding → Vector Search → Relevant Chunks → LLM
به این ترتیب LLM بهجای دریافت هزاران صفحه، فقط بخشهایی را دریافت میکند که احتمالاً با سؤال مرتبطاند. برای درک کل فرایند، RAG چیست؟ را بخوانید.
Chunking چرا مهم است؟
فرض کنید یک PDF صدصفحهای را بهصورت یک بردار ذخیره کنیم؛ در این حالت اطلاعات بسیار زیادی داخل یک Embedding خلاصه میشوند. در سمت مقابل اگر هر جمله را یک Chunk جداگانه کنیم، Context کافی اطراف مطلب را از دست میدهیم. بنابراین اندازهٔ Chunk باید متناسب با نوع محتوا انتخاب شود.
Similarity کافی نیست
Vector Search همیشه بهترین نتایج را تضمین نمیکند. در سیستمهای پیشرفته ممکن است از روشهای دیگری هم استفاده شود:
- Hybrid Search
- Keyword Search
- Metadata Filtering
- Reranking
مثلاً ابتدا ۵۰ نتیجه بازیابی شود و سپس یک Reranker آنها را بر اساس ارتباط واقعی مرتب کند.
Vector Database فقط برای RAG نیست
کاربردهای دیگری نیز دارد:
- پیدا کردن محصولات مشابه
- سیستمهای پیشنهاددهنده
- جستجوی معنایی
- تشخیص محتوای مشابه
- جستوجو در کد
- دستهبندی اسناد
- حافظهٔ Agentها
Embedding را کجا اجرا کنیم؟
مدل Embedding میتواند Cloud یا Local باشد. از آنجا که معمولاً از LLM اصلی بسیار کوچکتر است، Self-Hosting آن برای برخی پروژهها سادهتر است. این موضوع بهویژه زمانی اهمیت دارد که سازمان نمیخواهد متن کامل اسناد برای ایجاد Embedding از شبکه خارج شود.
نکتهٔ مهم
کیفیت RAG فقط به LLM بستگی ندارد. ممکن است بهترین مدل زبانی دنیا را داشته باشید، اما اگر Retrieval سند اشتباه را پیدا کند، مدل اطلاعات مناسبی برای پاسخ دادن نخواهد داشت. به همین دلیل Embedding، Chunking، Search و Reranking باید به اندازهٔ خود LLM جدی گرفته شوند.