3 पॉइंट द्वारा GN⁺ 2024-09-22 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Contextual Retrieval का परिचय

  • AI मॉडल को किसी खास संदर्भ में उपयोगी होने के लिए background knowledge की आवश्यकता होती है
  • customer support chatbot को किसी विशेष business के बारे में knowledge चाहिए, और legal analysis bot को पिछले मामलों के बारे में विशाल knowledge चाहिए
  • developer आमतौर पर AI मॉडल की knowledge बढ़ाने के लिए Retrieval-Augmented Generation (RAG) का उपयोग करते हैं
  • पारंपरिक RAG solutions अक्सर जानकारी encode करते समय context हटा देते हैं, जिससे वे कई बार प्रासंगिक जानकारी खोज नहीं पाते

Contextual Retrieval का तरीका

  • Contextual Retrieval, RAG के retrieval चरण को काफी बेहतर बनाने का एक तरीका है
  • इसमें दो sub-techniques, Contextual Embeddings और Contextual BM25, का उपयोग किया जाता है
  • यह retrieval failures की संख्या को 49% तक कम करता है, और reranking के साथ मिलाने पर इसे 67% तक कम किया जा सकता है
  • Claude का उपयोग करके Contextual Retrieval solution को आसानी से deploy किया जा सकता है

सिर्फ लंबे prompt का उपयोग करना

  • अगर knowledge base 200,000 tokens से कम है, तो पूरा knowledge base मॉडल को देना बेहतर तरीका हो सकता है
  • Claude की prompt caching feature का उपयोग करने पर यह approach अधिक तेज़ और cost-effective हो जाती है
  • knowledge base बड़ा होने पर अधिक scalable solution की आवश्यकता होती है

RAG की बुनियादी अवधारणा

  • RAG का उपयोग बड़े knowledge base को संभालने के लिए किया जाता है
  • knowledge base को छोटे text chunks में बाँटा जाता है, और embedding model का उपयोग करके उसका meaning encode किया जाता है
  • इन्हें vector database में store किया जाता है और semantic similarity के आधार पर retrieve किया जाता है
  • BM25 exact words या phrase matches खोजने में प्रभावी है

पारंपरिक RAG की सीमाएँ

  • documents को छोटे chunks में बाँटने की प्रक्रिया में context टूट सकता है
  • उदाहरण के लिए, किसी खास company की financial information खोजने वाले सवाल के जवाब में ऐसा chunk लौट सकता है जिसमें पर्याप्त context न हो

Contextual Retrieval का implementation

  • हर chunk में descriptive context जोड़कर embedding और BM25 indexes बनाए जाते हैं
  • Claude का उपयोग करके हर chunk के लिए concise context generate किया जाता है
  • prompt caching का उपयोग करके cost कम की जा सकती है

प्रदर्शन में सुधार

  • Contextual Embeddings retrieval failure rate को 35% कम करते हैं
  • Contextual Embeddings और Contextual BM25 को मिलाने पर retrieval failure rate 49% कम हो जाता है

implementation से जुड़ी बातें

  • documents को chunks में कैसे बाँटना है, embedding model का चयन, और custom contextualization prompts जैसी बातों पर विचार करना चाहिए
  • अधिक chunks शामिल करने से प्रासंगिक जानकारी शामिल होने की संभावना बढ़ती है

reranking के ज़रिए प्रदर्शन सुधार

  • reranking सबसे प्रासंगिक chunks ही मॉडल को भेजकर response quality बेहतर बनाता है
  • reranked Contextual Embedding और Contextual BM25 retrieval failure rate को 67% कम करते हैं

निष्कर्ष

  • Embeddings और BM25 को मिलाने से बेहतर परिणाम मिल सकते हैं
  • Voyage और Gemini embeddings सबसे प्रभावी हैं
  • top 20 chunks को मॉडल तक भेजना सबसे प्रभावी है
  • context जोड़ने से retrieval accuracy में बड़ा सुधार होता है
  • reranking प्रदर्शन को और बेहतर बनाता है

GN⁺ का सार

  • Contextual Retrieval, AI मॉडल की retrieval accuracy को काफी बेहतर बनाने का एक तरीका है
  • यह खासकर बड़े knowledge base के साथ काम करते समय उपयोगी है
  • Claude की prompt caching feature का उपयोग करके इसे cost-effective तरीके से implement किया जा सकता है
  • इसी तरह की समान capabilities वाले अन्य projects में OpenAI का GPT-3 और Google का BERT शामिल हैं

1 टिप्पणियां

 
GN⁺ 2024-09-22
Hacker News की राय
  • पहली राय

    • सरकारी संस्थानों के लिए एंटरप्राइज़ RAG बनाने के अनुभव साझा किए
    • RAGAS मेट्रिक्स का उपयोग करके A/B टेस्ट के नतीजे:
      • हाइब्रिड सर्च (semantic + vector) और LLM-आधारित reranking से synthetic evaluation questions पर कोई बड़ा बदलाव नहीं हुआ
      • HyDE ने synthetic evaluation questions पर answer और retrieval quality को गंभीर रूप से खराब किया
    • हाइब्रिड सर्च हमेशा उपयोगी है, लेकिन कोई एक तरीका हमेशा विजेता नहीं होता
    • Azure AI Search का semantic search, vector similarity के साथ, पर्याप्त रूप से प्रभावी है
    • अलग-अलग तरीकों को टेस्ट करने की ज़रूरत है
    • आगे जिन चीज़ों को आज़माया जाएगा:
      • RAPTOR
      • SelfRAG
      • Agentic RAG
      • query refinement (expansion और sub-query)
      • GraphRAG
    • सीखी गई बातें:
      • baseline और experiment का हमेशा उपयोग करना चाहिए ताकि null hypothesis को खारिज करने की कोशिश की जा सके
      • evaluation question/answer के तीन प्रकार इस्तेमाल करें: expert-written, वास्तविक user questions, synthetic questions
  • दूसरी राय

    • prompt caching का उपयोग करने का तरीका पसंद आया
    • caching की वजह से prompt cost 1/10 तक कम हो गई
    • caching से हुई cost saving की वजह से कई तरह की tricks संभव हो गईं
    • contextual search और prompt caching पर नोट्स साझा किए
  • तीसरी राय

    • RAG के नतीजों को बेहतर बनाने के लिए LLM का उपयोग करके base chunk को expand करने का तरीका आम है
    • HyDE का उपयोग करके query expansion हमेशा सुधार नहीं लाता
    • Anthropic की नई बात prompt caching की शुरुआत है
    • prompt caching, लंबे documents को context के रूप में देकर cost कम करती है
    • Cohere API से बहुत संतुष्टि मिली
  • चौथी राय

    • documents को h1, h2, h3 headings के आधार पर chunks में बाँटते हैं, और chunk की शुरुआत में header जोड़ते हैं
    • उदाहरण:
      • पुराना chunk: "वयस्कों के लिए सामान्य खुराक 200mg टैबलेट या कैप्सूल की 1~2 इकाइयाँ, दिन में 3 बार"
      • नया chunk: "# बुखार ## उपचार --- वयस्कों के लिए सामान्य खुराक 200mg टैबलेट या कैप्सूल की 1~2 इकाइयाँ, दिन में 3 बार"
    • यह तरीका LLM के बिना भी अच्छी तरह काम करता है
  • पाँचवीं राय

    • इस तकनीक के विरोध में रुख
    • vector embeddings पहले line-break text block पर ज़रूरत से ज़्यादा ध्यान केंद्रित कर सकते हैं
    • IDF search कुछ हद तक इससे उबरती है, लेकिन पर्याप्त नहीं है
    • "semantic boost" का उपयोग करके embedding को document के title, summary आदि की ओर ले जाया जा सकता है
    • Trieve API के "semantic boost" का विवरण साझा किया
  • छठी राय

    • "linked list" रणनीति का उपयोग करते हैं ताकि chunk के पास संदर्भित items के लिए कई pointers हों
    • इसे इस तरह समझाया कि हर comment, मूल post की ओर एक pointer बन जाता है
    • इस तकनीक का उदाहरण साझा किया
  • सातवीं राय

    • 200k tokens का उपयोग करके छोटे dataset पर सबसे अच्छे answers मिलने का दावा उनके अनुभव से मेल नहीं खाता
    • जैसे-जैसे prompt बड़ा होता है, output असंगत हो जाता है और instructions का पालन करना कठिन हो जाता है
    • जानना चाहते हैं कि क्या दूसरों का भी ऐसा ही अनुभव रहा है, और इससे बचने का तरीका क्या है
  • आठवीं राय

    • RAG का उपयोग करके knowledge खोजने के बजाय rules खोजने की समस्या का सामना किया
    • यह तय करने के लिए कि कोई specific rule लागू हो सकती है या नहीं, एक छोटा classifier train करने का तरीका सुझाया
    • उदाहरण: multi-user dungeon game में यह तय करना कि कोई specific rule लागू होती है या नहीं
    • rule लागू होती है या नहीं, यह तय करना ज़्यादा abstract और कठिन समस्या है
    • इस समस्या को हल करने का तरीका खोज रहे हैं
  • नौवीं राय

    • अगर knowledge base 200,000 tokens (लगभग 500 पेज) से छोटा है
    • आशा है कि Anthropic tokenizer को public करेगा
  • दसवीं राय

    • उस दिन का इंतज़ार है जब AI industry फिर से TF-IDF पर लौटेगी