50 लाख से अधिक दस्तावेज़ प्रोसेस करते हुए मिला Production RAG का अनुभव
(blog.abdellatif.io)- 8 महीनों तक RAG (Retrieval-Augmented Generation) प्रोजेक्ट चलाते हुए यह स्पष्ट हुआ कि कौन-से तरीके वास्तव में असरदार थे और कौन-से समय की बर्बादी साबित हुए
- शुरुआत में Langchain और Llamaindex का उपयोग करके प्रोटोटाइप जल्दी तैयार किया गया, लेकिन वास्तविक यूज़र फीडबैक में परफॉर्मेंस की सीमाएँ सामने आईं
- दस्तावेज़ खोज परफॉर्मेंस को बेहतर बनाने वाले सबसे बड़े कारक query generation, reranking, chunking strategy, metadata का उपयोग, query routing पाए गए
- प्रैक्टिकल काम में vector database, embedding, reranking, LLM आदि को लचीले ढंग से चुनते हुए एक custom pipeline बनाई गई
- सभी अनुभव और सीख को open source project(agentset-ai/agentset) में समेटकर सार्वजनिक किया गया
8 महीनों के Production RAG निर्माण अनुभव का सार
- कुल 90 लाख पेज (Usul AI), 40 लाख पेज (एक गुमनाम legal AI कंपनी) जैसे बड़े datasets पर RAG सिस्टम बनाकर और ऑपरेट करके हासिल अनुभव साझा किया गया
- शुरुआत में YouTube tutorials को फॉलो करते हुए Langchain से Llamaindex पर जाते-जाते कुछ ही दिनों में प्रोटोटाइप तैयार हो गया, लेकिन वास्तविक deployment में ऐसी कम परफॉर्मेंस दिखी जिसे केवल यूज़र ही महसूस कर सकते थे
- कई महीनों तक सिस्टम के अलग-अलग components को आंशिक रूप से सुधारते हुए अंततः बेहतरतम परफॉर्मेंस तक पहुँचा गया
परफॉर्मेंस सुधार में वास्तव में योगदान देने वाले तत्व (ROI क्रम में)
-
Query Generation
- यूज़र की आख़िरी query में पूरा context नहीं समा पाता, इसलिए LLM से बातचीत की समीक्षा कराकर कई semantic queries और keyword queries तैयार की गईं
- इन queries को parallel में प्रोसेस करके reranker को दिया गया, जिससे search coverage बढ़ी और hybrid search के bias की भरपाई हुई
-
Reranking
- लगभग 5 लाइनों के code से लागू होने वाला reranking परफॉर्मेंस पर जितना असर डालता है, वह कल्पना से कहीं अधिक है
- बड़ी संख्या में chunks (जैसे 50) इनपुट करने पर उनमें से ऊपर के कुछ chunks (जैसे 15) को फिर से क्रमबद्ध और चयनित करने की प्रक्रिया का ROI सबसे अधिक रहा
- केवल reranking से भी कमजोर डिज़ाइन वाली pipeline की कई कमियाँ काफी हद तक संतुलित की जा सकती हैं
-
Chunking Strategy
- पूरे development process का सबसे अधिक समय लेने वाला हिस्सा
- डेटा की संरचना और पैटर्न को सही तरह समझना, logical units में chunking करना, और यह सुनिश्चित करने के लिए मैन्युअल जाँच करना कि अक्षर या वाक्य बीच में न कटें आवश्यक है
- हर chunk का स्वतंत्र अर्थ बना रहना चाहिए
-
LLM इनपुट में metadata का उपयोग
- केवल chunk text ही LLM को देने के बजाय, metadata (title, author आदि) जोड़ने से context और answer quality में बड़ा सुधार हुआ
-
Query Routing
- जिन प्रकार के सवालों का जवाब RAG से देना संभव नहीं था (जैसे article summary, author information request आदि), उनके लिए एक lightweight router जोड़ा गया, जो ऐसी queries को API+LLM processing path की ओर भेजता है
प्रैक्टिकल स्टैक (Our stack)
- Vector database: Azure → Pinecone → Turbopuffer (कम लागत, और डिफ़ॉल्ट रूप से keyword search सपोर्ट)
- Document extraction: custom तरीका अपनाया गया
- Chunking tool: डिफ़ॉल्ट रूप से Unstructured.io, enterprise pipeline के लिए custom (Chonkie के बारे में भी अच्छी राय)
- Embedding model: text-embedding-large-3 उपयोग किया गया (अन्य models का परीक्षण नहीं)
- Reranker: None → Cohere 3.5 → Zerank (ज़्यादा लोकप्रिय नहीं, लेकिन व्यवहार में उत्कृष्ट)
- LLM: GPT 4.1 → GPT 5 → GPT 4.1 (मुख्यतः Azure credits का उपयोग)
Open source और निष्कर्ष
- सभी सीख और वास्तविक अनुभवों का निष्कर्ष open source projectagentset-ai/agentset के रूप में सामने आया
- MIT license के तहत सार्वजनिक, इसलिए स्वतंत्र रूप से उपयोग और संपर्क संभव
1 टिप्पणियां
Hacker News राय