प्रगत RAG तंत्रे नेहमीच अधिक चांगली नसतात. ती काही वेळा अधिक चांगली असतात.
प्रगत RAG तंत्रे ही विनामूल्य अपग्रेड्स नाहीत. ती काही तडजोडींसह (trade-offs) येणारी साधने आहेत.
मी त्यांचे परीक्षण करण्यासाठी एका RAG पाइपलाइनमध्ये पाच रिट्रिव्हल (retrieval) तंत्रे जोडली. सर्वात महत्त्वाचा निकाल तो तंत्र होता जो अपयशी ठरला.
मला वाटले होते की HyDE मुळे रिट्रिव्हल सुधारेल. त्याऐवजी, काही विशिष्ट क्वेरीजसाठी त्याचा उलट परिणाम झाला. Recall 0.80 वरून 0.17 पर्यंत खाली आला. ते तंत्र केवळ मदत करण्यात अपयशी ठरले नाही, तर त्याने निकालांमध्ये चुकीचा डेटा सक्रियपणे खेचून आणला.
मी परीक्षण केलेली प्रत्येक प्रगत तंत्र अशी काम करते:
- Hybrid search (BM25 + dense): अचूक शब्दांसाठी उत्तम. जेव्हा तुमची क्वेरी विशिष्ट पॅरामीटर्सवर अवलंबून असते, तेव्हा याचा वापर करा.
- HyDE: अशा सामान्य प्रश्नांसाठी उत्तम ज्यांचा दस्तऐवजातील शब्दसंग्रहाशी (vocabulary) मेळ बसत नाही. जेव्हा क्वेरी आधीच कॉर्पसशी (corpus) चांगल्या प्रकारे जुळते, तेव्हा ते अपयशी ठरते.
- Reranking: जेव्हा योग्य चंक (chunk) निकालांमध्ये असतो पण यादीत खूप खाली असतो, तेव्हा ते उत्तम काम करते.
- Contextual retrieval: संदर्भाचा अभाव असलेल्या लहान चंक्ससाठी उत्तम. यामुळे खर्च वाढतो कारण तुम्हाला प्रत्येक चंकसाठी LLM वापरावे लागते.
मी हे पाइपलाइन Anthropic डॉक्युमेंटेशन वापरून तयार केले. मी Postgres सोबत pgvector आणि HNSW इंडेक्स वापरला. मी याकडे एका बॅकएंड इंजिनिअरप्रमाणे पाहिले. एखादे तंत्र 'स्टेट ऑफ द आर्ट' (state of the art) आहे का, असे मी विचारले नाही. तर ते तंत्र त्याच्या गुंतागुंतीसाठी (complexity) पात्र आहे का, हे मी तपासले.
तुम्ही जोडलेला प्रत्येक घटक तुम्हाला ऑपरेट (operate), डीबग (debug) आणि त्यासाठी पैसे द्यावे लागतील.
गुंतागुंतीची साधने जोडण्यापूर्वी, मी साध्या डेंस रिट्रिव्हलचा (dense retrieval) वापर करून बेसलाइन मोजली.
निकालांमध्ये दोन वेगळे मेट्रिक्स दिसून आले:
- Faithfulness: 0.96
- Context precision: 0.60
या डेटाने माझा संपूर्ण दृष्टिकोन बदलला. बहुतेक तंत्रे रिट्रिव्हलवर लक्ष केंद्रित करतात. माझे रिट्रिव्हल हे अपयशी ठरणारे भाग होते. जर faithfulness कमी असते, तर मी प्रॉम्प्ट्स (prompts) ट्यून केले असते. परंतु रिट्रिव्हल कमी असल्याने, मला सर्च (search) ट्यून करावे लागले.
मी इव्हॅल्युएशन टूल्सबद्दल (evaluation tools) देखील एक धडा शिकलो. मी Ragas वापरण्याचा प्रयत्न केला, पण ते खूप संथ होते. ते अयशस्वी कॉल्स पुन्हा पुन्हा प्रयत्न करायचे आणि तासनतास लागायचे. त्याऐवजी मी स्वतःचे async harness तयार केले. मी ११ तासांऐवजी केवळ २२१ सेकंदात तेच मेट्रिक्स चालवले.
मुख्य निष्कर्ष साधा आहे:
तंत्रे आंधळेपणाने लागू करू नका. योग्य प्रश्नासाठी योग्य मोड निवडण्यासाठी क्वेरी राउटरचा (query router) वापर करा. प्रथम तुमचा डेटा मोजा. त्यानंतर तुमच्या विशिष्ट त्रुटीचे (failure mode) निराकरण करणारे साधन निवडा.
मॉडेल नवीन आहे. इंजिनिअरिंग शिस्त (engineering discipline) नवीन नाही.
स्रोत: https://dev.to/yogesh23012001/advanced-rag-techniques-arent-better-theyre-better-sometimes-4m2o
