چند روز داشتم یه پروژهی RAG با Neo4j و LangChain کار میکردم. یه جای کار retriever همیشه نتیجهی خالی برمیگردوند — امبدینگها سالم، ایندکس سالم، ولی هرچی میگشتم هیچی پیدا نمیشد.
توی یه دیسکاشن طولانی با Sonnet، کلی فرضیه و راهحل امتحان کردیم: نسخهی پکیج، نوع مدل امبدینگ، search_type، حتی رفتیم سراغ ساخت retriever سفارشی و full-text index دستی — هرکدوم یه گوشه از مشکل رو حل میکرد ولی ریشهی اصلی پیدا نمیشد.
راستش از اول تعمداً سراغ Fable نرفته بودم، چون نمیخواستم هزینهی توکنم بالا بره. ولی بعد از حدود دو ساعت کلنجار رفتن، خسته شدم و گفتم یه امتحانی بکنم.
بردمش رو Fable، و تقریباً بلافاصله رسید به یه نکتهی ساده که تا اون لحظه هیچکس (نه من، نه Sonnet) بهش دقت نکرده بود: توی ساخت
Neo4jVector`، پارامتر `database رو ست نکرده بودم! یعنی داشت به دیتابیس پیشفرض Neo4j وصل میشد، نه به دیتابیسی که واقعاً داده توش بود. همهی اون رفتارهای عجیب (نتیجهی خالی، جوابهای نامرتبط) از همین یه پارامتر جامونده بود.البته Fable واقعا گرونه، و به درد همین مواقع که آدم گیر میکنه میخوره...