- किसी खास context में AI मॉडल को उपयोगी होने के लिए background knowledge तक पहुंच की ज़रूरत होती है
- डेवलपर्स आमतौर पर AI मॉडल के knowledge को बेहतर बनाने के लिए Retrieval-Augmented Generation(RAG) का उपयोग करते हैं
- पारंपरिक RAG solutions अक्सर information को encode करते समय context हटा देते हैं, इसलिए कई बार वे relevant information को retrieve नहीं कर पाते
- Contextual Retrieval, RAG के retrieval चरण को काफ़ी बेहतर बनाने का एक तरीका है, जो Contextual Embeddings और Contextual BM25 नाम की दो sub-technologies का उपयोग करता है
- यह तरीका retrieval failure rate को 49% तक कम कर सकता है, और reranking के साथ मिलाने पर इसे 67% तक कम किया जा सकता है
- डेवलपर्स Claude के साथ अपना खुद का Contextual Retrieval solution आसानी से deploy कर सकते हैं
लंबे prompts के उपयोग पर नोट
- अगर knowledge base 200,000 tokens से कम है, तो पूरे knowledge base को model को दिए जाने वाले prompt में शामिल किया जा सकता है
- हाल ही में Claude में prompt caching जारी की गई है, जिससे यह तरीका काफ़ी तेज़ और cost-effective हो गया है
- जब Knowledge Base बड़ा हो जाता है, तो ज़्यादा scalable solution की ज़रूरत होती है, और ऐसे में Contextual Retrieval की आवश्यकता होती है
RAG की बुनियाद: बड़े knowledge base तक scale करना
- बड़े knowledge base, जो context window में फिट नहीं होते, उनके लिए सामान्य solution RAG है
- RAG knowledge base को छोटे chunks में तोड़ता है, उन्हें vector embeddings में बदलता है, और फिर semantic similarity के आधार पर search किए जा सकने वाले vector database में store करता है
- Embedding models semantic relationships को पकड़ने में बेहतरीन होते हैं, लेकिन वे महत्वपूर्ण exact matches को miss कर सकते हैं
- BM25 एक ranking function है जो exact शब्द या phrase match खोजने के लिए lexical matching का उपयोग करता है, और unique identifiers या technical terms वाले queries पर खास तौर पर प्रभावी है
- RAG solutions, embedding और BM25 techniques को जोड़कर सबसे लागू होने वाले chunks को अधिक सटीकता से retrieve कर सकते हैं, और इसके लिए ये चरण उपयोग किए जाते हैं:
- knowledge base (documents का "corpus") को आमतौर पर कुछ सौ tokens से छोटे text chunks में तोड़ना
- इन chunks के लिए TF-IDF encoding और semantic embeddings बनाना
- BM25 का उपयोग करके exact match के आधार पर top chunks खोजना
- embeddings का उपयोग करके semantic similarity के आधार पर top chunks खोजना
- rank fusion techniques का उपयोग करके (3) और (4) के results को जोड़ना और duplicates हटाना
- top K chunks को prompt में जोड़कर response generate करना
Contextual Retrieval का परिचय
- पारंपरिक RAG में documents को छोटे chunks में बांटा जाता है, इसलिए individual chunks में पर्याप्त context नहीं हो सकता
- Contextual Retrieval हर chunk के पहले chunk-specific explanatory context जोड़कर इस समस्या का समाधान करता है
- Claude, पूरे document के context का उपयोग करके chunk को समझाने वाला संक्षिप्त chunk-specific context देने के लिए निर्देशित prompt के माध्यम से Contextual Retrieval implementation को support करता है
- prompt caching की वजह से Contextual Retrieval, Claude के साथ कम लागत पर उपलब्ध है
प्रदर्शन सुधार
- Contextual Embeddings, top 20 chunk retrieval failure rate को 35% कम करते हैं (5.7% → 3.7%)
- Contextual Embeddings और Contextual BM25 को मिलाने पर failure rate 49% कम हो जाता है (5.7% → 2.9%)
implementation के समय ध्यान देने योग्य बातें
- documents को chunks में विभाजित करने के तरीके पर विचार करें
- Contextual Retrieval सभी embedding models में performance बेहतर बनाता है, लेकिन कुछ models को इससे अधिक लाभ मिल सकता है
- सामान्य prompts अच्छी तरह काम करते हैं, लेकिन किसी खास domain या use case के लिए तैयार किए गए prompts से बेहतर नतीजे मिल सकते हैं
- context window में अधिक chunks जोड़ने से relevant information शामिल होने की संभावना बढ़ती है
- हमेशा evaluation चलाएँ, क्योंकि contextualized chunks देना और context तथा chunk के बीच अंतर स्पष्ट करना response generation को बेहतर बना सकता है
reranking के साथ performance में अतिरिक्त सुधार
- reranking एक आम filtering technique है, जो यह सुनिश्चित करती है कि केवल सबसे relevant chunks ही model तक पहुँचें
- पहले initial retrieval करके संभावित रूप से relevant top chunks लाए जाते हैं
- top N chunks और user query को reranking model को दिया जाता है
- reranking model prompt के साथ relevance और importance के आधार पर हर chunk को score करता है, और फिर top K chunks चुने जाते हैं
- top K chunks को context के रूप में model को देकर final result generate किया जाता है
- reranked Contextual Embedding और Contextual BM25, top 20 chunk retrieval failure rate को 67% कम करते हैं (5.7% → 1.9%)
- cost और latency से जुड़ी बातें
- reranking, खासकर जब बहुत सारे chunks को rerank करना हो, latency और cost को प्रभावित कर सकता है
- बेहतर performance के लिए अधिक chunks को rerank करने और कम latency तथा कम cost के लिए कम संख्या को rerank करने के बीच trade-off मौजूद है
निष्कर्ष
- ऊपर बताए गए सभी techniques के अलग-अलग combinations (embedding model, BM25 का उपयोग, contextual retrieval का उपयोग, reranking का उपयोग, retrieved top K results की कुल संख्या) की तुलना करने के लिए विभिन्न datasets पर बहुत से tests किए गए
- नतीजे इस प्रकार हैं:
- embedding+BM25, केवल embedding से बेहतर है
- परीक्षण किए गए embeddings में Voyage और Gemini सबसे बेहतर हैं
- top 20 chunks को model को देना, सिर्फ top 10 या 5 chunks देने से अधिक प्रभावी है
- chunks में context जोड़ने से retrieval accuracy में काफ़ी सुधार होता है
- reranking, reranking न करने से बेहतर है
- ये सभी फायदे cumulative हैं: performance improvement को अधिकतम करने के लिए contextual BM25 और reranking चरण से गुज़रे contextual embeddings (Voyage या Gemini के) को मिलाकर prompt में 20 chunks जोड़े जा सकते हैं
- Knowledge Base के साथ काम करने वाले सभी डेवलपर्स को सलाह दी जाती है कि वे दिए गए cookbook का उपयोग करके इस approach के साथ प्रयोग करें और performance के नए स्तर हासिल करें
अभी कोई टिप्पणी नहीं है.