RAGFlow का उपयोग कैसे करें: विश्वसनीय RAG ऐप्स बनाने के लिए एक व्यावहारिक गाइड
यदि आपने पुनर्प्राप्ति-संवर्धित जनरेशन (RAG) प्रणाली बनाने की कोशिश की है, तो आपने शायद क्लासिक दर्द बिंदुओं का अनुभव किया होगा: मतिभ्रम, अस्थिर पुनर्प्राप्ति, धीमी पाइपलाइन और अस्त-व्यस्त दस्तावेज़ प्रीप्रोसेसिंग। RAGFlow एक एंड-टू-एंड वर्कफ़्लो टूल के रूप में कदम रखता है जो आपको अधिक नियंत्रण और दृश्यता के साथ दस्तावेज़ अंतर्ग्रहण, चंकिंग, वैक्टराइज़ेशन, पुनर्प्राप्ति और जनरेशन को व्यवस्थित करने में मदद करता है।
यह गाइड एक व्यावहारिक और समाधान-उन्मुख दृष्टिकोण लेता है। हम एक साफ़ सेटअप के माध्यम से चलेंगे, आपको दिखाएंगे कि वास्तविक दस्तावेजों के लिए RAGFlow का उपयोग कैसे करें, और उन पैटर्नों को साझा करेंगे जो वास्तव में मतिभ्रम को कम करते हैं और उत्तर की गुणवत्ता में सुधार करते हैं।
RAGFlow क्या है और इसका उपयोग क्यों करें?
RAGFlow, पुनर्प्राप्ति-संवर्धित जनरेशन पाइपलाइनों के निर्माण के लिए एक प्रणाली है। एक विशिष्ट RAG सेटअप में, आप:
- अंतर्ग्रहण दस्तावेज़ (PDF, वेब पेज, स्लाइड, कोड, आदि)
- पुनर्प्राप्ति योग्य इकाइयों में सामग्री को Chunk करें
- सिमेंटिक खोज के लिए वैक्टर में Embed chunks
- प्रश्न समय पर शीर्ष-k प्रासंगिक chunks को Retrieve करें
- एक LLM का उपयोग करके एक आधारित उत्तर Generate करें
RAGFlow राय आधारित डिफ़ॉल्ट, वर्कफ़्लो ब्लॉक और गार्डरेल जोड़ता है ताकि आप तेजी से पुनरावृति कर सकें और अधिक विश्वसनीय ऐप्स भेज सकें। यह विशेष रूप से उपयोगी है यदि आप चाहते हैं:
- लगातार चंकिंग और मेटाडेटा: बेहतर पुनर्प्राप्ति बेहतर chunks के साथ शुरू होती है।
- प्लग करने योग्य एम्बेडिंग और LLM: , स्थानीय मॉडल या एंटरप्राइज़ एंडपॉइंट स्वैप करें।
- मूल्यांकन और गार्डरेल: पुनर्प्राप्ति गुणवत्ता को मापें और मतिभ्रम को कम करें।
- तैनात करने योग्य पाइपलाइन: कम पुनर्लेखन के साथ नोटबुक से उत्पादन में ले जाएं।
त्वरित शुरुआत: शून्य से एक काम करने वाली RAGFlow पाइपलाइन तक
नीचे एक न्यूनतम, एंड-टू-एंड वर्कफ़्लो है जिसे आप अनुकूलित कर सकते हैं। भले ही आपका वातावरण अलग हो, अनुक्रम और गार्डरेल पोर्टेबल हैं।
1) अपना वातावरण तैयार करें
- अपनी कुंजियों के साथ एक
.env बनाएं:
OPENAI_API_KEY (या कोई अन्य LLM प्रदाता)
EMBEDDINGS_API_KEY (यदि कोई अलग प्रदाता उपयोग कर रहे हैं)
VECTOR_DB_URL (उदाहरण के लिए, , , , या स्थानीय)
- एक प्रोजेक्ट डायरेक्टरी सेट करें, उदाहरण के लिए, फ़ोल्डरों के साथ
ragflow-project/:
data/processed/ (साफ़ किए गए chunks)
configs/ (पाइपलाइन सेटिंग्स के लिए YAML/JSON)
eval/ (डेटासेट और रिपोर्ट)
2) साफ़ मेटाडेटा के साथ दस्तावेज़ों को अंतर्ग्रहण करें
अच्छा मेटाडेटा = बेहतर पुनर्प्राप्ति। शीर्षक, लेखक, दिनांक और स्रोत सामान्य करें।
- एक मजबूत पार्सर के साथ PDF और स्लाइड को टेक्स्ट में कन्वर्ट करें
- संरचना को संरक्षित करें: शीर्षक, सूची, कोड ब्लॉक और टेबल
- प्रत्येक chunk में मेटाडेटा संलग्न करें:
source, section, page, timestamp, version
टिप: उद्धरण और पुन: अंतर्ग्रहण का समर्थन करने के लिए एक doc_id और chunk_id रखें।
3) एक चंकिंग रणनीति चुनें जो आपकी सामग्री के अनुकूल हो
चंकिंग पुनर्प्राप्ति गुणवत्ता और विलंबता को दृढ़ता से प्रभावित करता है।
- वर्णनात्मक दस्तावेजों के लिए: सिमेंटिक चंकिंग (शीर्षकों/अनुच्छेदों द्वारा विभाजित)
- तकनीकी दस्तावेजों के लिए: हाइब्रिड चंकिंग का उपयोग करें (सिमेंटिक + फिक्स्ड विंडो)
- कोड के लिए: एक छोटी स्लाइडिंग विंडो के साथ फंक्शन/क्लास द्वारा chunk करें
शुरू करने के लिए अनुशंसित सेटिंग्स:
chunk_size: 600–1,000 टोकन
chunk_overlap: 50–100 टोकन
max_depth: विखंडन से बचने के लिए नेस्टेड अनुभागों को 2-3 स्तरों तक सीमित करें
4) एम्बेडिंग और एक वेक्टर स्टोर चुनें
- एक मजबूत सामान्य-उद्देश्य एम्बेडिंग मॉडल (जैसे, या एक आधुनिक स्थानीय मॉडल) के साथ शुरू करें। यदि गोपनीयता महत्वपूर्ण है, तो स्व-होस्टेड एम्बेडिंग पर विचार करें।
- एक वेक्टर DB का उपयोग करें जो समर्थन करता है:
- हाइब्रिड खोज (घना + कीवर्ड)
- फ़िल्टर (मेटाडेटा बाधाएं)
- बैच अपसर्ट और इंडेक्स मेट्रिक्स
परीक्षण करने के लिए इंडेक्स सेटिंग्स:
- प्रारंभिक पुनर्प्राप्ति के लिए
top_k = 5–10
similarity_metric = cosine (या कुछ मॉडलों के लिए डॉट)
- अतिरेक को कम करने के लिए अधिकतम सीमांत प्रासंगिकता (MMR) सक्षम करें
5) पुनर्प्राप्ति ऑर्केस्ट्रेशन
दो-चरणीय पुनर्प्राप्तिकर्ता लागू करें:
- हाइब्रिड खोज (BM25 + घना)
- क्रॉस-एन्कोडर पुन: रैंक या LLM-आधारित स्कोरिंग
- अंतिम
top_k (जैसे, 5–8) तक कम करें
मेटाडेटा फ़िल्टर जोड़ें: विश्वसनीय दस्तावेजों तक उत्तरों को सीमित करने के लिए source:"handbook" AND section:"benefits" AND version:"v2"।
6) संरचना के साथ ग्राउंडेड जनरेशन
आपके संकेत को उद्धरणों और अस्वीकृति को लागू करना चाहिए जब सबूत कमजोर हो।
उदाहरण सिस्टम संकेत:
आप एक सावधान सहायक हैं। केवल प्रदान किए गए संदर्भ द्वारा समर्थित जानकारी के साथ उत्तर दें।
- स्रोतों को इनलाइन के रूप में उद्धृत करें [doc_id:chunk_id]।
- यदि संदर्भ अपर्याप्त है, तो कहें "प्रदान किए गए दस्तावेजों में पर्याप्त जानकारी नहीं है।"
- तथ्यों का आविष्कार न करें।
उपयोगकर्ता संकेत टेम्पलेट:
प्रश्न: {query}
संदर्भ:
{top_chunks}
निर्देश:
- पहले एक संक्षिप्त उत्तर दें, फिर विवरण।
- प्रत्येक तथ्यात्मक दावे के बाद उद्धरण शामिल करें।
7) मतिभ्रम को कम करने के लिए गार्डरेल जोड़ें
- उत्तरदायित्व जांच: जनरेशन से पहले, एक छोटे मॉडल से पूछें: "क्या पुनर्प्राप्त किए गए chunks में प्रत्यक्ष प्रमाण है?" यदि नहीं, तो एक स्पष्टीकरण प्रश्न लौटाएं।
- उद्धरण-या-मौन नीति: उन आउटपुट को ब्लॉक करें जिनमें उद्धरणों की कमी है।
- उद्यम सामग्री के लिए विषाक्तता/PII फ़िल्टर।
8) मूल्यांकन और निरंतर सुधार
इसके साथ एक eval/ सेट बनाएं:
- 50-200 वास्तविक उपयोगकर्ता प्रश्न
- ग्राउंड ट्रुथ उत्तर (या विश्वसनीय संदर्भ)
- लागू होने पर अपेक्षित स्रोत (doc id)
मापें:
- पुनर्प्राप्ति हिट दर (क्या शीर्ष-k में सुनहरा स्रोत दिखाई देता है?)
- उत्तर निष्ठा (उद्धरण-समर्थित कथन)
इस पर पुनरावृति करें:
- उच्च शीर्ष-k बनाम पुन: रैंक
एक पूर्ण RAGFlow पाइपलाइन: उदाहरण कॉन्फ़िगरेशन
नीचे एक वैचारिक कॉन्फ़िगरेशन है जिसे आप अपनी टूलचेन के अनुकूल बना सकते हैं। आवश्यकतानुसार प्रदाता नामों को बदलें।
project: product-handbook-rag
io:
input_path: data/raw/
output_index: product-handbook-index
parsing:
pdf:
strategy: auto
keep_layout: true
extract_tables: true
<a10>markdown:</a11><a11>preserve_headings: true</a12><a12>chunking:</a13><a13>method: semantic_hybrid</a14><a14>target_tokens: 800</a15><a15>overlap_tokens: 80</a16><a16>windowing: 2</a17><a17>metadata:</a18><a18>fields: [doc_id, title, section, page, version, source]</a19><a19>embeddings:</a20><a20>provider: openai</a21><a21>model: text-embedding-3-large</a22><a22>vectorstore:</a23><a23>type: qdrant</a24><a24>url: ${VECTOR_DB_URL}</a25><a25>similarity: cosine</a26><a26>retrieval:</a27><a27>hybrid: true</a28><a28>lexical_weight: 0.35</a29><a29>semantic_weight: 0.65</a30><a30>candidate_top_k: 40</a31><a31>rerank:</a32><a32>enabled: true</a33><a33>model: bge-reranker-large</a34><a34>final_top_k: 7</a35><a35>generation:</a36><a36>llm: gpt-4o</a37><a37>temperature: 0.2</a38><a38>cite_or_silence: true</a39><a39>guardrails:</a40><a40>answerability_check: true</a41><a41>pii_filter: true</a42><a42>toxicity_filter: moderate</a43><a43>monitoring:</a44><a44>log_traces: true</a45><a45>latency_budget_ms: 3500</a46>cost_budget_per_100: 1.25
विभिन्न प्रकार की सामग्री के लिए RAGFlow का उपयोग कैसे करें
उत्पाद मैनुअल और हैंडबुक
- स्पष्ट अनुभाग सीमाओं के साथ सिमेंटिक चंकिंग पसंद करें
- पुराने उत्तरों को रोकने के लिए संस्करण और प्रभावी तिथि संलग्न करें
- सख्त फ़िल्टर का उपयोग करें: हमेशा
version = latest की आवश्यकता होती है
ज्ञान आधार और अक्सर पूछे जाने वाले प्रश्न
- सटीक उत्तरों के लिए छोटे chunks (400-600 टोकन) का उपयोग करें
- उम्मीदवार पूल बढ़ाएँ और सटीक स्निपेट खोजने के लिए पुन: रैंकिंग पर भरोसा करें
- लेक्सिकल खोज के माध्यम से रिकॉल को बढ़ावा देने के लिए विहित प्रश्न/उत्तर जोड़े स्वतः उत्पन्न करें
इंजीनियरिंग दस्तावेज़ और कोड
- फ़ंक्शन/मॉड्यूल द्वारा chunk करें और मेटाडेटा में आयात ग्राफ़ शामिल करें
- पैरेंट-चाइल्ड पुनर्प्राप्ति सक्षम करें: फ़ंक्शन + उसके डॉकस्ट्रिंग संदर्भ को लौटाएं
- प्रासंगिक प्रतीकों को प्राथमिकता देने के लिए कोड-जागरूक पुन: रैंक का उपयोग करें
कानूनी और अनुपालन
- अनुच्छेद-स्तर के उद्धरणों की आवश्यकता है
- अधूरे संदर्भ के लिए अस्वीकृति तर्क जोड़ें
- एक अलग इंडेक्स में नियामक-अनुमोदित स्रोतों का एक सुनहरा सेट रखें
शीघ्र पैटर्न जो वास्तव में काम करते हैं
- उत्तर फिर उद्धृत करें: शीर्ष पर संक्षिप्त उत्तर; प्रत्येक दावे के बाद इनलाइन उद्धरण
- पुनर्प्राप्ति की श्रृंखला: मॉडल को पहले प्रत्येक chunk को संक्षेप में बताने के लिए कहें, फिर संश्लेषित करें
- क्वेरी पुनर्लेखन: पुनर्प्राप्ति से पहले समानार्थक शब्द और डोमेन शर्तों के साथ उपयोगकर्ता क्वेरी का विस्तार करें
- विरोधाभासी संकेत: "संदर्भ के आधार पर बताएं कि विकल्प A, B से बेहतर क्यों है।" यह प्रमाण उपयोग को मजबूर करता है
उदाहरण क्वेरी-पुनर्लेखन चरण:
मूल: "हमारी PTO कैरीओवर नीति क्या है?"
पुनर्लेखन: "सशुल्क समय कैरीओवर नीति; छुट्टी रोलओवर; अधिकतम घंटे; नवीनतम नीति संस्करण"
दृश्यता और प्रतिक्रिया लूप
- लॉग करें कि कौन से chunks उपयोग किए गए थे, उनके स्कोर और जिन्हें अनदेखा किया गया था
- एक छोटे तर्क के साथ थंब्स-अप/डाउन कैप्चर करें; इसे पुनर्प्राप्तिकर्ता ट्यूनिंग में वापस फ़ीड करें
- किसी भी मॉडल परिवर्तन को तैनात करने से पहले अपने eval सेट पर साप्ताहिक प्रतिगमन परीक्षण चलाएं
प्रदर्शन ट्यूनिंग चीटशीट
- यदि उत्तर सामान्य लगते हैं:
candidate_top_k बढ़ाएँ और एक मजबूत पुन: रैंक जोड़ें
- यदि उत्तर में विवरण छूट जाते हैं: chunk आकार कम करें; लेक्सिकल वजन को थोड़ा बढ़ावा दें
- यदि उद्धरण एक ही chunk को दोहराते हैं: MMR सक्षम करें और विविधता बढ़ाएँ
- यदि विलंबता अधिक है: एम्बेडिंग को कैश करें, क्वेरी पुनर्लेखन को पूर्व-गणना करें, छोटे पुन: रैंक का उपयोग करें
- यदि लागत बढ़ जाती है: जनरेशन तापमान को कम करें, संकेतों को छोटा करें, पहले पास के लिए एक छोटा LLM आज़माएँ
सुरक्षा और शासन अनिवार्य
- संग्रहीत वैक्टर को एन्क्रिप्ट करें और मेटाडेटा में संवेदनशील फ़ील्ड को संपादित करें
- प्रति-इंडेक्स एक्सेस नियंत्रण का उपयोग करें; टीम या डेटा संवेदनशीलता द्वारा खंड
- एक डेटा वंशावली रिकॉर्ड बनाए रखें: doc स्रोत URL, चेकसम और अंतर्ग्रहण टाइमस्टैम्प
केस स्टडी स्नैपशॉट: अस्त-व्यस्त PDF से विश्वसनीय उत्तर
एक समर्थन टीम ने 1,200 पृष्ठों के PDF अंतर्ग्रहण किए। प्रारंभिक पुनर्प्राप्ति असंगत थी; एजेंटों को बॉट पर भरोसा नहीं था। सिमेंटिक-हाइब्रिड चंकिंग (800 टोकन, 80 ओवरलैप) पर स्विच करने, क्रॉस-एन्कोडर पुन: रैंकिंग को सक्षम करने और उद्धरण-या-मौन को लागू करने के बाद, शीर्ष-k हिट दर 62% से बढ़कर 89% हो गई, और एजेंट का गोद लेना दोगुना हो गया। कुंजी एक बड़ा LLM नहीं था - यह क्लीनर chunks और सख्त पुनर्प्राप्ति थी।
टूलिंग टिप: एक AI साइडबार के साथ त्वरित पुनरावृत्ति
ध्यान देने योग्य: यदि आप कई दस्तावेजों में संकेतों और पुनर्प्राप्ति स्निपेट के साथ प्रयोग कर रहे हैं, तो एक AI सहायक जो आपको ब्राउज़र से ही PDF, वेब पेजों और कोड पर चैट करने देता है, पुनरावृत्ति को गति दे सकता है। वैसे, Sider.AI (https://sider.ai/) एक AI साइडबार प्रदान करता है जो आपको उस पृष्ठ से संदर्भ प्राप्त करने, सारांशित करने और संकेतों को जल्दी से परिष्कृत करने देता है। यह RAG संकेतों को प्रोटोटाइप करने और पाइपलाइन को औपचारिक रूप देने से पहले chunk गुणवत्ता का परीक्षण करने के लिए उपयोगी है। RAGFlow समस्या निवारण: त्वरित समाधान
- "मॉडल आश्वस्त है लेकिन गलत है।"
- उत्तरदायित्व जांच सक्षम करें; तापमान कम करें; उद्धरणों की आवश्यकता है
- "खोज लगभग-डुप्लिकेट लौटाती है।"
- MMR चालू करें; एक पुन: रैंक जोड़ें; chunk ओवरलैप कम करें
- "पीक पर विलंबता बढ़ जाती है।"
- बैच एम्बेडिंग; कैश क्वेरी पुनर्लेखन; स्ट्रीमिंग जनरेशन का उपयोग करें
- "पुरानी नीतियां दिखाई देती रहती हैं।"
version = latest पर फ़िल्टर करें; अप्रचलित दस्तावेजों को अस्वीकृत या कब्रिस्तान करें
अगले चरण: उत्पादन में अपने RAGFlow को विश्वसनीय बनाएं
- एक छोटे, विश्वसनीय कॉर्पस से शुरू करें; पहले चंकिंग और फ़िल्टर को परिपूर्ण करें
- LLM को अपग्रेड करने से पहले एक पुन: रैंक जोड़ें
- एक 100-प्रश्न eval सेट बनाएं और साप्ताहिक हिट दर को ट्रैक करें
- पुनर्प्राप्ति को लगातार ट्यून करने के लिए उपयोगकर्ता प्रतिक्रिया में वायर करें
मुख्य बातें:
- RAG के लिए पुनर्प्राप्ति गुणवत्ता मॉडल आकार को मात देती है
- चंकिंग, मेटाडेटा और पुन: रैंकिंग आपके मुख्य लीवर हैं
- उद्धरण-या-मौन जैसे गार्डरेल नाटकीय रूप से विश्वास बढ़ाते हैं
- दृश्यता और मूल्यांकन में जल्दी निवेश करें
इन प्रथाओं के साथ, RAGFlow आधारित उत्तरों के लिए एक विश्वसनीय रीढ़ बन जाता है-चाहे आप एक हेल्प बॉट, एक डेवलपर कोपायलट या एक आंतरिक ज्ञान सहायक को शक्ति प्रदान कर रहे हों।
सामान्य प्रश्न
Q1: RAGFlow क्या है और मैं दस्तावेज़ QA के लिए इसका उपयोग कैसे करूँ?
RAGFlow पुनर्प्राप्ति-संवर्धित जनरेशन पाइपलाइन बनाने के लिए एक ढांचा है। मतिभ्रम को कम करने और सटीकता में सुधार करने के लिए आप उद्धरणों के साथ उत्तरों को अंतर्ग्रहण, chunk, एम्बेड, पुनर्प्राप्त और उत्पन्न करते हैं।
Q2: मुझे RAGFlow में दस्तावेजों को कैसे chunk करना चाहिए?
600-1,000 टोकन chunks और 50-100 टोकन ओवरलैप के साथ सिमेंटिक या हाइब्रिड चंकिंग का उपयोग करें। कोड के लिए, फ़ंक्शन या क्लास द्वारा chunk करें और आसपास के संदर्भ को शामिल करें।
Q3: कौन सा वेक्टर डेटाबेस RAGFlow के साथ सबसे अच्छा काम करता है?
एक स्टोर चुनें जो हाइब्रिड खोज, मेटाडेटा फ़िल्टर और पुन: रैंकिंग का समर्थन करता है-Qdrant, Weaviate, Pinecone, या एक स्थानीय विकल्प सभी सामान्य विकल्प हैं।
Q4: मैं RAGFlow ऐप में मतिभ्रम को कैसे रोकूँ?
उद्धरण-या-मौन नीति लागू करें, जनरेशन से पहले एक उत्तरदायित्व जांच जोड़ें, और केवल पुनर्प्राप्त संदर्भ का उपयोग करने के बारे में संकेतों को सख्त रखें।
Q5: RAGFlow का मूल्यांकन करने के लिए मुझे किन मेट्रिक्स को ट्रैक करना चाहिए?
पुनर्प्राप्ति हिट दर, उत्तर निष्ठा, विलंबता और प्रति 100 क्वेरी लागत की निगरानी करें, और एक छोटा लेकिन प्रतिनिधि मूल्यांकन सेट बनाए रखें।