संवर्धन प्रवाह - Entity Enricher दस्तावेज़ीकरण

संवर्धन प्रवाह

एक चरण-दर-चरण विवरण कि Entity Enricher एक अकेली entity को कैसे प्रोसेस करता है — इनपुट से लेकर classification, समानांतर model निष्पादन, और संरचित आउटपुट तक।

एक नज़र में पाइपलाइन

इनपुट
Entity JSON
+ Schema
क्लासिफिकेशन
वैकल्पिक
टाइप जाँच
समानांतर मॉडल
Claude
वित्तीय
नियामक
सामान्य
GPT-4
वित्तीय
नियामक
सामान्य
सत्यापित करें
प्रकार जाँच
स्वयं-सुधार
आउटपुट
संरचित
प्रति मॉडल JSON

स्टेप 1: एनरिचमेंट कॉन्फ़िगर करें

Workflow Editor पेज खोलें और अपना एनरिचमेंट सेट अप करें। एक वर्कफ़्लो स्टेपर आपको पाइपलाइन चरणों में मार्गदर्शन करता है: Sample Data, Schema, Enrichment, और Results — साथ ही एक Database Ready चरण जब स्कीमा किसी database sync से लिंक हो, जो पुष्टि करता है कि रन के बदलाव आपके डेटाबेस के लिए कतार में लगा दिए गए (या बताता है कि सेव क्यों अस्वीकार किया गया)।

स्कीमा पैनल (बायाँ)

schema स्वतः जनरेट करने के लिए सैंपल JSON पेस्ट करें, फिर इंटरैक्टिव प्रॉपर्टी ट्री एक्सप्लोर करें। प्रॉपर्टीज़ एडिट करें, expertise domain जोड़ें, और फ़ील्ड्स को search key या संरक्षित के रूप में चिह्नित करें।

संवर्धन पैनल (दाएँ)

एनरिचमेंट विकल्प (स्ट्रैटेजी, मॉडल, भाषाएँ, क्लासिफ़िकेशन, साथ ही रिस्पॉन्स स्कीमा और स्ट्रिक्ट स्ट्रक्चर्ड आउटपुट टॉगल) कॉन्फ़िगर करें और एंटिटी की पहचान के लिए एंटिटी सर्च कीज़ (नाम, वेबसाइट, देश आदि) भरें।

परिणाम पैनल

प्रत्येक मॉडल के लिए रियल-टाइम प्रगति और परिणाम दिखाता है। एकाधिक मॉडल उपयोग करते समय, फ्यूज़न के लिए एक “Merge Results” बटन दिखाई देता है।

कोई भी टोकन खर्च होने से पहले क्या-क्या जाँचा जाता है

कुछ रिक्वेस्ट किसी भी हाल में काम का परिणाम नहीं दे सकतीं, और यह पता लगाने की सबसे सस्ती जगह पहली LLM कॉल से पहले है। शुरुआत में ही दो कॉन्ट्रैक्ट लागू किए जाते हैं।

इनपुट अनुबंध

स्कीमा बताता है कि उसके इनपुट में क्या होना ज़रूरी है: वे की फ़ील्ड जो बताती हैं कि यह कौन-सी एंटिटी है, आपके दिए गए ऐरे की हर आइटम पर एक की, और preserve चिह्नित हर फ़ील्ड का एक मान (जो कभी दिया ही नहीं गया, उसे संरक्षित नहीं किया जा सकता)। इनमें से कुछ भी छूटने पर अनुरोध एक ही एरर के साथ अस्वीकार होता है, जो सभी उल्लंघन एक साथ सूचीबद्ध करता है — साथ में स्कीमा का पूरा कॉन्ट्रैक्ट भी, ताकि आप एक ही बार में सुधार कर सकें, बजाय एक-एक अस्वीकृति से आवश्यकताएँ पता करने के। यह कॉन्ट्रैक्ट हर सहेजे गए स्कीमा पर प्रकाशित होता है, ताकि क्लाइंट भेजने से पहले जाँच सके।

क्लोज़्ड-ऐरे अनुबंध

आप जिस ऐरे के आइटम देते हैं उसे ठीक उतना ही संवर्धित किया जाता है: मॉडल हर आइटम के बारे में जो जानता है वह भरता है और न कोई आइटम जोड़ सकता है, न हटा सकता है। आपने पाँच लाइन आइटम भेजे, तो पाँच ही वापस मिलेंगे। जिस आइटम को मॉडल नहीं पहचान पाया, उसे खोने के बजाय हूबहू दोबारा डाल दिया जाता है, और जो आइटम उसने गढ़ लिया उसे हटा दिया जाता है। जिन ऐरे को आप खाली छोड़ते हैं वे फिर भी खुले रहते हैं — वहीं मॉडल नए तथ्य खोजता है, और यही मक़सद है।

स्टेप 2: प्री-फ्लाइट वर्गीकरण (वैकल्पिक)

यदि आपने एक classification model चुना है, तो entity schema प्रकार से मेल खाती है या नहीं यह सत्यापित करने के लिए पहले एक तेज़, सस्ता LLM call चलता है। यह entity के मेल न खाने पर enrichment में token बर्बाद होने से रोकता है। अधिक जानकारी Classification दस्तावेज़ीकरण में पढ़ें।

नॉन-ब्लॉकिंग: यदि किसी कारण से वर्गीकरण विफल हो जाता है, तो एनरिचमेंट सामान्य रूप से आगे बढ़ता है। वर्गीकरण पूरी तरह से सलाहकारी है — यह एनरिचमेंट प्रॉम्प्ट में संदर्भ जोड़ता है लेकिन पाइपलाइन को कभी ब्लॉक नहीं करता।

स्टेप 3: स्ट्रैटेजी एक्ज़ीक्यूशन

चुना गया हर मॉडल एंटिटी को उस स्ट्रैटेजी से प्रोसेस करता है जो आपने बताई है — या डिफ़ॉल्ट रूप से, उस स्ट्रैटेजी से जो आपके स्कीमा के आकार से अपने आप चुनी जाती है और जिसे रन शुरू होते समय बताता है। जब कई मॉडल चुने जाते हैं, तो वे प्रोवाइडरों के बीच समानांतर चलते हैं (Claude और GPT-4 एक साथ चलते हैं), जबकि एक ही प्रोवाइडर के मॉडल रेट लिमिट का ध्यान रखते हुए क्रमवार चलते हैं।

मल्टी-एक्सपर्टीज़ उदाहरण (3 डोमेन)
1
विशेषज्ञता के अनुसार स्कीमा विभाजित करें
प्रॉपर्टीज़ को उनके एक्सपर्टीज़ डोमेन के अनुसार समूहीकृत किया जाता है: वित्तीय फ़ील्ड, नियामक फ़ील्ड, सामान्य फ़ील्ड।
2
समानांतर LLM कॉल चलाएँ
हर expertise को केवल संबंधित schema प्रॉपर्टीज़ के साथ अपना केंद्रित prompt मिलता है। सभी एक साथ चलते हैं।
3
परिणाम क्रमिक रूप से मर्ज करें
जैसे-जैसे प्रत्येक एक्सपर्टीज़ पूरी होती है, उसका आउटपुट संचित परिणाम में मर्ज हो जाता है। आप आंशिक परिणाम रीयल-टाइम में देखते हैं।
4
प्रिज़र्व लॉजिक लागू करें
'preserve' के रूप में चिह्नित फ़ील्ड के मूल मान बहाल कर दिए जाते हैं, जिससे आपका इनपुट डेटा अक्षुण्ण रहता है। ऐरे के भीतर, संवर्धित आइटम आपके इनपुट आइटम से स्थिति के बजाय उनके की-फ़ील्ड द्वारा मिलाए जाते हैं, इसलिए क्रम बदला हुआ उत्तर भी सही मान बहाल करता है।

चरण 4: सत्यापन और स्व-सुधार

हर LLM प्रतिक्रिया को रीयल-टाइम में आपके schema के विरुद्ध सत्यापित किया जाता है। जब आउटपुट अपेक्षित प्रकारों या बाधाओं से मेल नहीं खाता, तो सिस्टम सुधार के लिए स्वतः त्रुटियाँ वापस LLM को भेज देता है।

स्वतः क्या ठीक होता है:
संख्या के बजाय स्ट्रिंग
"42.2" बन जाता है 42.2
इंडेक्स किए गए ऑब्जेक्ट्स arrays के रूप में
{"0": "a", "1": "b"} बन जाता है ["a", "b"]
स्ट्रिंग नल्स
"null" या "None" वास्तविक null बन जाता है
वे मान जो मॉडल तय नहीं कर सका
यह उन्हें गढ़ने के बजाय घोषित करता है — वे पाथ null हो जाते हैं

प्रति LLM कॉल अधिकतम 5 स्वतः रीट्राई प्रयास। हर रीट्राई में वह विशिष्ट वैलिडेशन एरर शामिल होता है ताकि LLM को ठीक-ठीक पता हो कि क्या ठीक करना है — और मरम्मत सर्जिकल होती है: पूरे जवाब के बजाय सिर्फ़ वही लीफ़ दोबारा पूछे जाते हैं जो गलत आए थे।

ध्यान दें कि इस सूची में क्या नहीं है: जो मान मॉडल तय नहीं कर सका, वह दोबारा कोशिश करने लायक त्रुटि नहीं है। हर फ़ील्ड अनुपस्थित लौट सकता है, और मॉडल घोषित करता है कि उसे क्या नहीं मिला, इसलिए “अज्ञात” विफलता नहीं बल्कि एक उत्तर है। कोई गुम मान स्वीकार्य है या नहीं, यह बाद में तय होता है — जब एंटिटी आपके डेटाबेस में प्रवेश पाती है, न कि मॉडल से अनुमान लगवाकर।

स्रोत पर ही output को लागू करना

दो वैकल्पिक टॉगल provider से आउटपुट को वापस आने से पहले सीमित करने के लिए कहते हैं, ताकि शुरुआत में ही कम responses को सुधारने की ज़रूरत पड़े। दोनों केवल उन models पर लागू होते हैं जो इन्हें सपोर्ट करते हैं; बाकी सब कुछ ऊपर बताए गए validation-और-retry लूप पर वापस आ जाता है।

रिस्पॉन्स स्कीमा
आपके schema को provider के native response-schema channel पर भेजता है ताकि JSON को server-side लागू किया जा सके। डिफ़ॉल्ट रूप से बंद — अन्यथा सक्षम models tool-call channel का उपयोग करते हैं।
सख्त संरचित आउटपुट
जिस भी संरचित चैनल का उपयोग हो, डिकोडिंग को schema तक सीमित करता है (कोई ड्रिफ़्ट नहीं)। डिफ़ॉल्ट रूप से चालू; जो model इसे लागू नहीं कर सकते वे इसे चुपचाप अनदेखा कर देते हैं।

चरण 5: रियल-टाइम स्ट्रीमिंग

Entity Enricher वास्तविक समय में प्रगति स्ट्रीम करने के लिए Server-Sent Events (SSE) का उपयोग करता है। आपको सभी मॉडल के पूरा होने की प्रतीक्षा नहीं करनी पड़ती — जैसे-जैसे प्रत्येक विशेषज्ञता डोमेन या मॉडल समाप्त होता है, परिणाम क्रमिक रूप से दिखाई देते हैं।

इवेंट टाइमलाइन (2 मॉडल, 3 विशेषज्ञता के साथ उदाहरण)
0.0sstartedJob शुरू होता है, 2 models कतार में
0.1sclassification_startedप्री-फ्लाइट जाँच शुरू होती है
0.8sclassification_completedEntity की "match" के रूप में पुष्टि हुई (95%)
0.9smodel_startedClaude और GPT-4 समानांतर में शुरू होते हैं
1.2sexpertise_completedClaude: फ़ाइनेंशियल पूर्ण, आंशिक परिणाम स्ट्रीम किया गया
1.5sexpertise_completedClaude: जनरल पूर्ण, परिणाम अपडेट किया गया
1.8sexpertise_completedClaude: रेगुलेटरी पूरा, पूरा परिणाम तैयार
1.9smodel_completedClaude ने पूर्ण संरचित आउटपुट के साथ समाप्त किया
2.5smodel_completedGPT-4 पूर्ण संरचित आउटपुट के साथ समाप्त हुआ
2.5scompletedसभी मॉडल पूर्ण, स्ट्रीम बंद होती है

चरण 6: परिणामों की समीक्षा

हर model को अपना परिणाम पैनल मिलता है जो संरचित JSON आउटपुट, प्रति-expertise प्रगति बैज, टोकन उपयोग, लागत, और प्रोसेसिंग समय दिखाता है। multi-expertise रणनीति का उपयोग करते समय, जैसे ही हर domain पूरा होता है expertise बैज रीयल-टाइम में अपडेट होते हैं।

प्रति मॉडल आप क्या देखते हैं:
  • स्टेटस बैज — प्रतीक्षारत, चल रहा है, सफल, विफल, या आंशिक
  • विशेषज्ञता बैज — प्रति-डोमेन प्रगति दिखाने वाली रंगीन पिल्स (नीला = चल रहा, हरा = पूर्ण, लाल = विफल)
  • प्रोग्रेसिव JSON — प्रत्येक विशेषज्ञता के पूरा होने के बाद आउटपुट अपडेट होता है
  • मेट्रिक्स — प्रोसेसिंग समय, टोकन संख्या, USD में लागत
  • प्रगति लॉग — प्रत्येक इवेंट के लिए टाइमस्टैम्प वाली प्रविष्टियाँ

आंशिक सफलता को संभालना

मल्टी-विशेषज्ञता रणनीति का उपयोग करते समय, कुछ विशेषज्ञताएं विफल हो सकती हैं जबकि अन्य सफल होती हैं। सब कुछ त्यागने के बजाय, Entity Enricher सफल विशेषज्ञताओं का मर्ज किया हुआ आउटपुट “Partial” स्थिति के साथ लौटाता है। फिर आप पूरी एनरिचमेंट को दोबारा चलाए बिना केवल विफल विशेषज्ञताओं को पुनः प्रयास कर सकते हैं।

उदाहरण: यदि 3 में से 2 विशेषज्ञताएँ सफल होती हैं, तो आपको सफल डोमेन को कवर करने वाला संरचित आउटपुट मिलता है। विफल विशेषज्ञता को पुनः प्रयास किया जा सकता है, और इसके परिणाम मौजूदा आउटपुट में मर्ज कर दिए जाएँगे।

आगे क्या होता है?

एनरिचमेंट पूरा होने के बाद, आपके परिणाम भविष्य के संदर्भ के लिए History पेज पर सहेजे जाते हैं। यदि आपने कई मॉडल इस्तेमाल किए हैं, तो आप Multi-Model फ्यूज़न का उपयोग करके परिणामों को मर्ज कर सकते हैं।