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

«تکرار داده‌ها مانند آهنربا»؛ علت اصلی افت دقت در RAG

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

کشف مکانیزم «آهنربایی» در RAG؛ جایی که تکرار یک فیلد در چندین کانال رتبه‌بندی، باعث می‌شود اسناد نامرتبط اما عریض، نتایج صحیح را حذف کنند.

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

به گزارش یک توسعه‌دهنده، یک باگ شمارش سه‎‌گانه در خط لوله بازیابی، باعث شد افزایش عملکرد به یک شکست کامل تبدیل شود. هفته‌ی گذشته (در اواخر آوریل ۲۰۲۴)، این برنامه‌نویس اندازه‌گیری خاصی را منتشر کرد: او برای بهبود بازیابی، شرح‌هایی برای ۱۲۴۵ شیء پایگاه‌داده تولید کرده بود، اما در کمال تعجب، کیفیت بازیابی در واقع بدتر شده بود. این پست با واکنش زیادی روبرو شد و ۳۷ نفر دیگر نیز در بخش نظرات گزارش دادند که پدیده مشابهی را در سیستم‌های خود دیده‌اند. اندازه‌گیری‌ها واقعی و درست بود، اما نتیجه‌گیری استخراج شده از آن اشتباه بود.

زمینه و آزمایش‌ها

برای تشخیص دقیق مشکل، توسعه‌دهنده از Spider 2.0-lite استفاده کرد؛ یک محک تبدیل متن به SQL (text-to-SQL benchmark) که از پایگاه‌داده‌های واقعی BigQuery و Snowflake ساخته شده است. برخلاف محک‌های قدیمی، Spider 2.0-lite مستندات واقعی انبار داده‌ها را همراه خود دارد. این ویژگی روشی را فراهم می‌کند تا ادعاها روی متون حرفه‌ای (Professional Prose) آزمایش شوند، نه روی متونی که توسط یک تولیدکننده سفارشی (Custom Generator) ساخته شده‌اند. این رویکرد دقیق در ارزیابی، یادآور بررسی‌های سخت‌گیرانه در حسابرسی گراف‌های دانش است که در آن امتیازدهی‌های پایه برای بهبود تصمیم‌گیری‌ها تحلیل شدند.

توسعه‌دهنده با حذف شرح‌ها و اجرای مجدد تست‌ها متوجه شد که حذف متون در هر دو مدل بردار معنایی (Embedders) و در تمامی برش‌ها باعث پیروزی مدل می‌شود. از شش سلول تحلیل، پنج سلول دارای تغییرات معنادار بودند. در گسترده‌ترین سلول، ۱۳ پرسش اصلاح شد در حالی که تنها یک مورد خراب شد. اگرچه جدول نتایج پیشنهاد می‌کرد که شرح‌ها به‌طور کلی حذف شوند، اما همین‌جا «نشانه» اصلی بود: سیستمی که بر پایه این فرض طراحی شده که متن به بازیابی کمک می‌کند، نباید با حذف آن متن بهبود یابد.

مکانیسم شکست

بررسی‌های عمیق‌تر نشان داد که یک کامنت ستون (Column Comment) به‌طور مجزا سه بار در سیگنال‌های مختلف رتبه‌بندی ایندکس شده بود:

  • کانال متنی (Prose Channel): تغذیه شده از _prose_text.
  • کانال بدنه (Body Channel): تغذیه شده از embed_text().
  • کانال برداری (Vector Channel): باز هم تغذیه شده از embed_text().

از آنجا که سه سیگنال از چهار سیگنال رتبه‌بندی، کلمات یکسانی را حمل می‌کردند، هر جدولی با ستون‌های زیاد، برای هر پرسشی که حتی یک کلمه مشترک با هر یک از ستون‌هایش داشت، در سه کانال از چهار کانال تطبیق می‌یافت. این جداول عریض مانند «آهنربا» عمل کرده و در پرسش پس از پرسش، جداول کوچک‌تر و صحیح را به حاشیه می‌راندند. حذف شرح‌ها فقط به‌این دلیل «کمک» کرد که دو-سومِ این شمارش سه‎‌گانه را حذف کرد؛ بنابراین این نتایج دلیلی بر خطای امتیازدهی (Scoring Errors) بود، نه دلیلی علیه استفاده از متن.

کالبدشکافی باگ

توسعه‌دهنده برای تحلیل دقیق‌تر، شمارش سه‎‌گانه را با استفاده از همان ۲۱۲ پرسش، کانال به کانال از هم جدا کرد:

  • حذف کامنت‌های ستون فقط از کانال متنی: باعث بازیابی ۴ پرسش در k=10 شد.
  • حذف آن‌ها فقط از embed_text(): باعث بازیابی ۱۱ پرسش در k=10 شد.

۱۱ مورد از ۱۵ پرسش بازیابی‌شده در مسیر بردار معنایی (Embedding Path) قرار داشتند. این نشان داد که منبع اصلی آسیب در مسیر Embedding بود، هرچند کانال متنی به‌دلیل نامش، مظنون اول و بدیهی‌تر به نظر می‌رسید.

راهکار فنی

راهکار نهایی شامل حذف کامنت‌های ستون از کانال بدنه و کانال متنی بود، در حالی که embed_text() دست‌نخورده باقی ماند. این محدودیت ضروری بود زیرا بردارها یک تضمین منتشرشده و ثابت (Pinned Guarantee) هستند. تغییر در ورودی‌های آن‌ها به این معنا بود که هر ایندکس ذخیره‌شده توسط هر کاربری از این کتابخانه، به‌طور خاموش غلط شود و یک وصله ساده (Patch) به یک مهاجرت داده‌ای (Migration) اعلام‌نشده تبدیل گردد.

پس از اعمال این اصلاحات، جریمه عملکردی کاملاً از بین رفت. در اجرای مجدد روی ۲۱۲ پرسش، شکاف عملکرد بین حالت «با شرح» و «بدون شرح» از نسبت ۱۳ به ۱ به یک تساوی ۲ به ۲ رسید. در k=10، هر دو نسخه امتیاز ۱۷۷/۲۱۲ (۸۳.۵٪) را کسب کردند و در k=20، نتایج برای حالت با شرح ۱۸۸/۲۱۲ (۸۸.۷٪) و برای حالت بدون شرح ۱۸۷/۲۱۲ (۸۸.۲٪) بود.

یک نقص داده‌ای ثانویه

در حین نمونه‌برداری از فایل‌های خام، باگ دومی در اسکیمای JSON مدل Spider 2.0 پیدا شد. مشخص شد فیلد description در واقع شرح جدول نبود، بلکه لیستی از شرح‌های هر ستون بود که بر اساس ایندکس با nested_column_names (برای فیلدهای تو در تو) یا column_names تراز شده بود. در ۱۵۰ مورد از ۱۵۰ مورد نمونه‌برداری شده، ورودی‌ها گاهی null بودند و هرگز رشته (String) نبودند.

لودر سیستم، این لیست را به یک پاراگراف تبدیل و به‌عنوان شرح جدول ایندکس می‌کرد. این موضوع باعث شد جداول تو در تو — مانند v3_genomes__chr7 در gnomAD (با ۶۱ ستون سطح بالا و ۱۸۱ ستون تخت‌شده) — به‌گونه‌ای وارد سیستم شوند که دقیقاً همان ستون‌هایی که SQL مرجع (Gold SQL) می‌خواند، گم شوند. این چالش در مدیریت داده‌های حجیم و پیچیده، مشابه رویکردهای تفکیک ارزیابی برای تحلیل مسیرهای مشتری است که برای جلوگیری از سرریز اطلاعاتی و افزایش دقت در تحلیل‌های مقیاس‌پذیر به کار می‌رود.

اصلاح این باگ لودر اثرات زیر را داشت:

  • تغییر مجموعه مقایسه‌ای قابل حل از ۲۰۳ به ۲۱۲ پرسش.
  • افزایش صحت k=20 از ۶۷.۲٪ به ۷۱.۳٪ (با مخرج ۲۴۷ پرسش).
  • کاهش صحت k=10 از ۷۷.۸٪ به ۷۷.۴٪، زیرا ۹ پرسش مربوط به Join سخت‌تر از میانگین ۲۰۳ پرسش قبلی بودند.

این مشکل فرمت به‌صورت یک درخواست مستندسازی (Spider2 issue #222) ثبت شد، زیرا فایل‌ها سازگار بودند، هرچند نام فیلد گمراه‌کننده بود.

درس‌هایی برای مهندسان هوش مصنوعی

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

مراقب فیلدهایی باشید که به بیش از یک سیگنال رتبه‌بندی می‌روند. اگر یک فیلد هم به یک کانال لغت‌نامه‌ای (Lexical) و هم به متنی که تبدیل به بردار می‌شود برود، دو بار شمرده می‌شود. اگر کانال سومی هم از همان متن مشتق شود، سه بار شمرده می‌شود. در این حالت هیچ خطایی در کنسول ظاهر نمی‌شود و تست‌ها پاس می‌شوند، اما سیستم بازیابی به‌طور خاموش، اسنادی را ترجیح می‌دهد که بیشترین تکرار از آن فیلد را دارند.

هر اصلاحی که ایندکس‌های کاربر را باطل کند، باید با تغییر نسخه (Version Bump) و یادداشت همراه باشد، نه یک وصله ساده. این اصلاح در نسخه 0.1.57 منتشر شد. جزئیات کامل شامل شبکه McNemar، تجزیه کانال‌ها و اعداد اندازه‌گیری شده در فایل BENCHMARKS.md پروژه موجود است، جایی که ادعای withdrawn (پس گرفته شده) همچنان برای بررسی قابل مشاهده است.

گام بعدی شما

  • تمام کانال‌های رتبه‌بندی (Lexical, Vector, Metadata) خود را بررسی کنید تا مطمئن شوید یک فیلد داده‌ای در بیش از یک مسیر اثر نمی‌گذارد.
  • در صورت افت کیفیت پس از افزودن داده‌های غنی‌ساز، ابتدا اثر «آهنربایی» جداول عریض را تحلیل کنید.
  • برای هر تغییر در ساختار Embedding، حتماً نسخه (Version) ایندکس‌های خود را به‌روزرسانی کنید تا از تداخل داده‌ها جلوگیری شود.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

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

این یافته بر اهمیت تفکیک سیگنال‌های رتبه‌بندی در معماری‌های RAG تأکید می‌کند تا از سوگیری به نفع اسناد طولانی‌تر جلوگیری شود. تخصص در پیاده‌سازی لایه‌ی بازیابی، اکنون به اندازه انتخاب مدل زبانی برای صحت خروجی‌ها تعیین‌کننده است.

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

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

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

این مورد نشان می‌دهد که در سیستم‌های RAG، «بیشتر» لزوماً به معنای «بهتر» نیست و غنی‌سازی داده‌ها بدون نظارت بر وزن‌دهی سیگنال‌ها می‌تواند منجر به اثر معکوس شود. در واقع، ما با نوعی «بیش‌برازش» (Overfitting) در سطح بازیابی روبرو هستیم که در آن مدل به‌جای معنا، به تکرار کلمات حساس می‌شود. این یک هشدار برای تیم‌های محصول است که به جای تعویض مدل‌های زبانی، ابتدا لایه‌ی بازیابی را کالبدشکافی کنند.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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