پرش به محتوای اصلی
پرش به محتوای مقاله

محک فنی: جست‌وجوی ترکیبی دقت حافظه را بدون افزایش تأخیر بالا برد

·۷ مهر ۱۴۰۵۱۰ دقیقه مطالعه
راهنما
حافظه عامل فراتر از جستجوی برداری نیاز دارد
حافظه عامل فراتر از جستجوی برداری نیاز دارد
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

اثبات عددی این موضوع که در سیستم‌های دارای جست‌وجوی ترکیبی (Hybrid)، افزودن بازرتبه‌بند (Reranker) هیچ بهبود کیفی ایجاد نمی‌کند اما تأخیر را به‌شدت افزایش می‌دهد.

اگر برای حافظهٔ عامل‌های هوشمند خود روی بازرتبه‌بندی (Reranking) حساب می‌کنید، احتمالاً هزینهٔ پردازشی زیادی را برای نتیجه‌ای نزدیک به صفر می‌پردازید. یافته‌های منتشرشده در ۲۹ سپتامبر ۲۰۲۶ این فرض رایج را به چالش می‌کشد و نشان می‌دهد که جست‌وجوی ترکیبی (Hybrid Search) می‌تواند دقت بازیابی را برای حافظهٔ عامل‌های هوش مصنوعی، بدون تحمیل تأخیر (Latency) محسوس در مقایسه با جست‌وجوی برداری مستقل، به سطح بهینه‌ای برساند.

بسیاری از توسعه‌دهندگان برای ایجاد «حافظه» در عامل‌ها، به جست‌وجوی برداری تکیه می‌کنند. در این روش، متن‌ها به بردار معنایی (Embedding) — مثل کارت معرفی عددی برای هر واژه که می‌گوید این کلمه «همسایه‌ی» چه کلمات دیگری است — تبدیل می‌شوند تا شبیه‌ترین داده‌ها پیدا شوند. اما طبق گزارش منتشرشده در dev.to، شباهت لزوماً به معنای مرتبط بودن نیست. برای مثال، دو پست وبلاگی ممکن است هر دو از واژگان مشابهی مانند «قیمت‌گذاری سرورلس» (serverless pricing) و «شروع‌های سرد» (cold starts) استفاده کنند، اما نکات و استدلال‌های کاملاً متفاوتی را مطرح کنند. در یک فضای برداری خالص، این دو متن یکسان به نظر می‌رسند و در نتیجه، سیستم حافظهٔ اشتباهی را بازیابی کرده و عامل را به مسیر غلط هدایت می‌کند.

این مشکل با انباشت داده‌ها در طول سال‌ها نوشتن و ثبت خاطرات بدتر می‌شود. برای مثال، ممکن است کاربری در یک پست قدیمی از یک رویکرد خاص دفاع کرده باشد، اما در پستی جدیدتر نظرش را تغییر داده باشد. به همین ترتیب، پست‌هایی درباره‌ی «معماری رویداد-محور» (event-driven architecture)، «منبع‌یابی رویداد» (event sourcing) و «جریان‌سازی رویداد» (event streaming) اغلب در فضای برداری در یک خوشه قرار می‌گیرند. از نظر امتیازات شباهت، این گروه‌ها اساساً یکسان هستند. در حالی که تفاوت واقعی آن‌ها اغلب در یک تاریخ خاص، یک اصطلاح فنی دقیق یا نکته اصلی پست نهفته است. این چالش در مدیریت حافظه‌های طولانی‌مدت، مشابه تجربه‌ای است که NylonME برای شکستن سقف حافظه در گفتگوهای طولانی با مدل‌های گرافی دنبال کرد تا دقت بازیابی را افزایش دهد.

برای حل این مشکل، بسیاری به سراغ بازرتبه‌بندی (Reranking) می‌روند. یک بازرتبه‌بند یا کراس-انکودر (Cross-encoder) — شبیه داوری است که پرس‌وجو و سند بازیابی‌شده را به‌طور هم‌زمان بررسی می‌کند تا ارتباط واقعی آن‌ها را بسنجد. اگرچه این روش ایده‌آل به نظر می‌رسد، اما هزینهٔ پردازشی عظیمی را تحمیل می‌کند. هر کاندیدای بازیابی‌شده باید در لحظهٔ پرس‌وجو پردازش شود که می‌تواند سرعت سیستم را چندین برابر کاهش دهد.

جزئیات محک فنی

برای بررسی این موازنه، محکی با استفاده از Oracle AI Database Free در محیط داکر طراحی شد. برای اینکه نتایج وابسته به سخت‌افزارهای قدرتمند نباشد و بر اساس ظرفیت‌های بالا سنجیده نشود، محیط را عمداً به ۲ پردازنده و ۲ گیگابایت رم محدود کردند. این آزمایش روی یک مجموعه داده مصنوعی شامل ۴۸۰ حافظه و ۱۶ پرس‌وجوی ارزیابی‌شده با سه معیار کلیدی انجام شد:

  • nDCG@10: یا همان Normalized Discounted Cumulative Gain. این معیار می‌سنجد که سیستم تا چه حد توانسته است مرتبط‌ترین موارد را در بالاترین رتبه‌ها قرار دهد. برای مثال، امتیاز ۰.۷۵۳ به این معناست که رتبه‌بندی‌ها ۷۵٪ از امتیازی را که یک ترتیب کامل و بی‌نقص می‌گرفت، کسب کرده‌اند.
  • Recall@10: بررسی می‌کند که آیا حافظهٔ درست اصلاً در ۱۰ نتیجهٔ اول ظاهر شده است یا نه، بدون در نظر گرفتن ترتیب. امتیاز ۰.۸۶۵ یعنی حدود ۸۷٪ از حافظه‌های درست بازیابی شده‌اند.
  • Median Latency: زمان میانه برای بازگرداندن نتایج به کاربر.

نتایج: بردار در برابر واژگانی و ترکیبی

بر اساس مستندات این آزمایش، نه جست‌وجوی برداری و نه جست‌وجوی واژگانی (Keyword-based) به‌تنهایی کافی نبودند. جست‌وجوی واژگانی با تأخیر ۴.۷ میلی‌ثانیه سریع‌ترین اما کم‌دقت‌ترین بود. جست‌وجوی برداری داده‌های مرتبط بیشتری را یافت (Recall 0.865) اما کندتر بود (۲۰ میلی‌ثانیه) و رتبه‌بندی ضعیف‌تری داشت (nDCG 0.753).

حافظه عامل فراتر از جستجوی برداری نیاز دارد

نقطه عطف با استفاده از جست‌وجوی ترکیبی (Hybrid Search) و متد Reciprocal Rank Fusion (RRF) رخ داد. با ادغام این دو لیست، مقدار nDCG@10 به ۰.۸۳۲ و Recall@10 به ۰.۸۸۵ رسید. نکته حیاتی این است که تأخیر میانه تنها به ۲۰.۵ میلی‌ثانیه رسید؛ یعنی تنها ۰.۵ میلی‌ثانیه بیشتر از جست‌وجوی برداری خالص که افزایشی ناچیز است.

شکست بازرتبه‌بندی

وقتی یک بازرتبه‌بند BGE (به‌صورت مدل ONNX که مستقیماً در پایگاه‌داده بارگذاری شده بود) به جست‌وجوی ترکیبی اضافه شد، نتایج غافلگیرکننده بود. بازرتبه‌بندی کاملاً درون پرس‌وجوی پایگاه‌داده و با استفاده از تابع PREDICTION() انجام شد و از یک جداکننده خاص </s></s> بین پرس‌وجو و متن استفاده کرد.

ساختار پرس‌وجو به این شکل بود:
SELECT id, PREDICTION(BGE_RERANKER USING :query || '</s></s> ' || title || '. ' || content AS DATA) AS score FROM candidates ORDER BY score DESC FETCH FIRST 10 ROWS ONLY;

برای ۱۰ کاندیدا، مقدار nDCG@10 دقیقاً روی ۰.۸۳۲ ثابت ماند، اما تأخیر از ۲۰.۵ میلی‌ثانیه به ۵۸۵ میلی‌ثانیه جهش کرد. در حالتی که جست‌وجوی برداری با ۲۰ کاندیدا و یک بازرتبه‌بند تست شد، تأخیر به ۱,۲۵۸ میلی‌ثانیه رسید. این یعنی سیستم تقریباً ۶۱ برابر کندتر از جست‌وجوی ترکیبی ساده شد، در حالی که کیفیت (nDCG 0.830) حتی کمتر از خط پایه ترکیبی بود.

تست‌های تکمیلی نشان داد که تأخیر به‌صورت خطی با تعداد کاندیداها رشد می‌کند. برای بازیابی برداری، بررسی ۴۰ کاندیدا تأخیر را به ۲,۶۰۴ میلی‌ثانیه رساند، بدون اینکه بهبود معناداری در کیفیت مشاهده شود.

تحلیل واریانس و کاربرد واقعی

برای اطمینان از نبود ارزش پنهان در بازرتبه‌بندی، نتایج ۲,۰۰۰ بار بازنمونه‌گیری شدند. بازه اطمینان ۹۵٪ برای میانگین‌های بازنمونه‌گیری شده بین -۰.۰۷۹ و +۰.۰۷۳ قرار گرفت.

  • در حد بالا (+۰.۰۷۳)، جست‌وجوی ترکیبی می‌توانست از ۰.۸۳۲ به ۰.۹۰۵ بهبود یابد.
  • در حد پایین (-۰.۰۷۹)، این مقدار به ۰.۷۵۳ کاهش می‌یافت که همان نقطه شروع جست‌وجوی برداری خالص بود.

با توجه به حجم کم پرس‌وجوها (۱۶ مورد)، نتایج از نظر آماری غیرقطعی بود. اما تأخیر ۳۰ برابری در هر درخواست، حقیقتی بدیهی و ثابت بود.

با این حال، بازرتبه‌بند زمانی مفید بود که سیگنال بازیابی اولیه ضعیف باشد. داده‌ها نشان دادند که هرچه مرحله اول ضعیف‌تر باشد، بازرتبه‌بند بیشتر کمک می‌کند:

  • واژگانی: افزایش حدود ۰.۰۷۵ در nDCG پس از بازرتبه‌بندی.
  • برداری: افزایش حدود ۰.۰۷۵ در nDCG پس از بازرتبه‌بندی.
  • ترکیبی RRF: هیچ افزایشی نداشت.

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

جالب است که بازرتبه‌بندی بازیابی برداری با ۲۰ کاندیدا باعث شد پنج نتیجه اول کمتر به هم شبیه باشند. این موضوع با استفاده از هر دو روش Embedding و هم‌پوشانی کلمات ساده تأیید شد. این در واقع یک رفتار مطلوب است؛ زیرا حافظهٔ درست را از «شبیه‌هایش» جدا کرده و حافظه‌هایی که فقط شبیه به نظر می‌رسند اما نامرتبط هستند را به رتبه‌های پایین‌تر می‌راند.

معماری بهینه برای حافظه عامل

بر اساس این یافته‌ها، کارآمدترین معماری برای حافظه عامل هوشمند از یک سلسله‌مراتب خاص پیروی می‌کند:

۱. ابتدا فیلتر کنید

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

  • Tenant ID: برای تضمین جداسازی داده‌ها و جلوگیری از کابوس‌های امنیتی. راهنمای اوراکل این فیلترها را برای داده‌های چندمستاجری (multi-tenant) اجباری می‌داند. این رویکرد در مدیریت دسترسی‌های دقیق، مشابه استراتژی‌های معماری داده‌های دانه‌ریز برای مقابله با نشت اطلاعات در RAG سازمانی است.
  • Owner ID: تأیید اینکه حافظه متعلق به کاربر است (مثلاً: OWNER_ID IS NULL OR OWNER_ID = :owner).
  • تاریخ انقضا: حذف دیدگاه‌های قدیمی (مثلاً: EXPIRES_AT IS NULL OR EXPIRES_AT > SYSDATE). این کار مانع از آن می‌شود که یک نظر مربوط به سال ۲۰۲۵ درباره عامل‌های هوش مصنوعی، در صورتی که کاربر بعدها نظرش را تغییر داده، ظاهر شود.

۲. سیگنال‌ها را ادغام کنید

به‌جای افزودن بازرتبه‌بند، یک سیگنال بازیابی دوم اضافه کنید. اگر جست‌وجوی برداری دارید، جست‌وجوی واژگانی را اضافه کنید و بالعکس. سپس رتبه‌ها را با RRF ترکیب کنید. این رویکرد nDCG@10 را از ۰.۷۵ در بازیابی برداری به ۰.۸۳ رساند و تنها نیم میلی‌ثانیه به زمان پرس‌وجو افزود.

۳. اندازه‌گیری و تکرار

یک مجموعه داده مرجع (Ground-truth) شامل ۱۵ تا ۲۰ پرس‌وجوی واقعی و ارزیابی‌شده ایجاد کنید. موارد دشوار و لبه‌ای (Edge cases) را بگنجانید، مانند:

  • جست‌وجوهای دقیق بر اساس کلمات کلیدی.
  • موضوعاتی که کاربر در طول زمان چندین بار نظرش را درباره آن‌ها تغییر داده است.

هر بار که روش تکه‌بندی (Chunking)، مدل Embedding یا بازرتبه‌بند را تغییر دادید، این پرس‌وجوها را مجدداً اجرا کنید تا بتوانید ارتباط را در کنار تأخیر به‌طور عینی بسنجید.

۴. بازرتبه‌بندی به عنوان آخرین راهکار

تنها در صورتی از کراس-انکودر استفاده کنید که فقط یک سیگنال بازیابی دارید و تفاوت کیفیت به‌طور مداوم در تمام پرس‌وجوها به قدری زیاد است که هزینه تأخیر را توجیه کند. تعداد کاندیداهای مختلف (:n در پرس‌وجو) را امتحان کنید تا ببینید آیا بهبود کیفیت بر جریمه زمانی غلبه می‌کند یا خیر.

این رویکرد ثابت می‌کند که داشتن سیگنال‌های «بیشتر»، ارزان‌تر و مؤثرتر از مدل‌های رتبه‌بندی «هوشمندتر» است، به شرطی که بازیابی مرحله اول مستحکم باشد. برای توسعه‌دهندگان، این بدان معناست که مسیر رسیدن به حافظه بهتر برای هوش مصنوعی، از طریق استنتاج‌های پیچیده‌تر در لحظه پرس‌وجو نیست، بلکه از طریق متنوع کردن روش‌های جست‌وجوی داده در همان ابتداست.

برای پیاده‌سازی این مدل، می‌توانید با بازبینی خط لوله RAG فعلی خود شروع کنید تا ببینید آیا «مالیات بازرتبه‌بندی» (reranker tax) را برای دستاوردهایی می‌پردازید که یک جست‌وجوی ترکیبی ساده می‌تواند به‌صورت رایگان فراهم کند. برای کسانی که می‌خواهند آزمایش کنند، بنچمارک و دستورالعمل‌ها در گیت‌هاب با استفاده از Oracle AI Database Free در داکر در دسترس است.

چرا این موضوع مهم است؟

این نتایج بر اساس تجربه عملی در محیط‌های محدود سخت‌افزاری به دست آمده و نشان می‌دهد توسعه‌دهندگان می‌توانند با حذف لایه‌های بازرتبه‌بندی، تأخیر سیستم را تا ۶۰ برابر کاهش دهند بدون اینکه دقت را فدا کنند. این یک تغییر پارادایم از مدل‌های پیچیده استنتاجی به سمت معماری‌های بازیابی چندگانه است.

تأثیر برای ایران

برای توسعه‌دهندگان ایرانی که با محدودیت منابع سخت‌افزاری و GPUهای گران‌قیمت روبرو هستند، جایگزینی بازرتبه‌بند با جست‌وجوی ترکیبی راهکاری ایده‌آل برای کاهش هزینه و افزایش سرعت است.

·نگاه ما
تحریریه دات‌هوش

این یافته‌ها فرضیه رایج «لایه بازرتبه‌بندی به عنوان استاندارد طلایی RAG» را به چالش می‌کشد. در واقع، بازرتبه‌بندی بیشتر یک ابزار جبرانی برای بازیابی‌های ضعیف است تا یک ابزار بهینه‌ساز برای سیستم‌های قوی. استراتژی برنده در حافظهٔ عامل‌ها، نه در «هوشمندتر کردن» رتبه‌بندی، بلکه در «تنوع بخشیدن» به روش‌های جست‌وجو در همان مرحله اول نهفته است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.