एक ही तरह की एंटिटी को बार-बार संवर्धित करें और आप बार-बार वही वास्तविक-दुनिया की चीज़ें फिर से खोजते रहते हैं — वही कंपनी, वही दवा का साइड-इफ़ेक्ट, वही व्यक्ति — हर बार थोड़े अलग शब्दों में वर्णित। एक सिमेंटिक ID एक स्थिर, संगठन-स्कोप्ड पहचानकर्ता है जिसे Entity Enricher किसी ऑब्जेक्ट को उसके प्रमुख फ़ील्ड्स से असाइन करता है, ताकि वे निकट-डुप्लिकेट्स एक पहचान में सिमट जाएँ जिस पर आप समूह बना सकते हैं, डिडुप्लिकेट कर सकते हैं, और जॉइन कर सकते हैं।
किसी object की पहचान उसके key फ़ील्ड से बनती है — और ये एक या कई हो सकते हैं। दो उदाहरण:
name द्वारा कीड किया गया एक साइड-इफ़ेक्टयह विभिन्न runs और भाषाओं में Headache, Céphalée, और Cephalalgia के रूप में दिखता है। एक key फ़ील्ड, तीन वर्तनियाँ, एक वास्तविक concept।
name + country द्वारा keyed एक कंपनीAcme Inc. · United States और Acme Incorporated · United States एक ही कंपनी हैं — जबकि Acme Inc. · Germany एक अलग कंपनी है। दूसरी की अस्पष्टता दूर करती है; इसीलिए एक ऑब्जेक्ट एक से अधिक की रख सकता है।
साधारण स्ट्रिंग मिलान इन सभी पर विफल हो जाता है; एक इंसान जानता है कि कौन-से समान हैं। Semantic ID उस निर्णय को स्वतः एनकोड कर देते हैं।
string प्रॉपर्टी (डिफ़ॉल्ट रूप से id नामित), जो एक अपारदर्शी, स्थिर पहचानकर्ता रखती है।manufacturer), या किसी array में प्रत्येक आइटम (जैसे प्रत्येक side_effect)।मॉडल का परिणाम लौटाने के बाद, Entity Enricher हर सिमेंटिक ID को छह चरणों में हल करता है — सबसे सस्ता पहले। एम्बेडिंग से पहले के चार चरण केवल टेक्स्ट तुलना हैं, इसलिए वहीं तय हो जाने वाली पहचान पर कोई लागत नहीं आती:
null हो जाता है, और सूची के अंदर का आइटम सूची से हटा दिया जाता है। संवर्धित एंटिटी खुद कभी नहीं हटाई जाती; बस उसकी कोई ID नहीं होती।LC-39A बाकी टेक्स्ट के हर लेखन-रूप को एक कर देता है। उतना ही अहम यह है कि यह उल्टी दिशा में भी काम करता है: अलग कोड उस मर्ज पर वीटो लगा देता है जिसे एम्बेडिंग चरण अन्यथा स्वीकार कर लेता, क्योंकि अलग पहचानकर्ता वाली दो चीज़ें दो ही चीज़ें हैं, पढ़ने में वे चाहे कितनी भी एक जैसी लगें।“Boeing” और “The Boeing Company”। यह ठीक उन्हीं शब्द-विस्तार के अंतरों को पकड़ लेता है जिन्हें एम्बेडिंग बहुत दूर मापती है, और इसकी कोई लागत नहीं: exact-text चरण की तरह, यहाँ मैच मिलने का मतलब है कोई एम्बेडिंग कॉल नहीं और कोई शुल्क नहीं।“Acme Inc.” और“Acme Incorporated” एक-दूसरे के पास आएं।नंबर नहीं, मॉडल क्यों: अकेली समानता दोनों दिशाओं में गलत होती है। एक ही शिपयार्ड की दो वर्तनियों का स्कोर बहुत दूर हो सकता है, जबकि एक स्थिति और उसका विपरीत (“तीव्र” बनाम “दीर्घकालिक”) लगभग एक जैसा स्कोर पाते हैं। कोई थ्रेशोल्ड इन्हें अलग नहीं कर सकता; यह सिर्फ़ शब्दों के अर्थ की समझ से होता है। जज फ्लोर (डिफ़ॉल्ट 0.5, हर प्रॉपर्टी के लिए समायोज्य) सिर्फ़ यह तय करता है कि पूछने लायक कैंडिडेट कितनी दूर तक खोजे जाएँ — यह कभी पहचान तय नहीं करता।
कोई ID जनरेट होगी या नहीं, यह इस पर निर्भर करता है कि उस ऑब्जेक्ट के लिए इनपुट में पहले से कोई मौजूद है या नहीं। यही आपको राउंड-ट्रिप की सुविधा देता है: IDs पाने के लिए एक बार संवर्धन करें, फिर बाद के रन में किसी ज्ञात ID को वापस पास करके उसी पहचान से नए तथ्य जोड़ें — सस्ता और स्पष्ट।
यदि आपके द्वारा भेजा गया ऑब्जेक्ट पहले से एक सिमेंटिक ID रखता है, तो उसे एक lookup के रूप में माना जाता है: ID अक्षरशः रखा जाता है, रिकॉर्ड को उस मौजूदा concept से जोड़ा जाता है, और कोई embedding नहीं — कोई लागत नहीं, कोई match-or-mint नहीं। आप प्लेटफ़ॉर्म को बता रहे हैं “यह ऑब्जेक्ट हमारे डेटाबेस में पहले से पहचाना हुआ है।”
अगर ऑब्जेक्ट के पास कोई सिमैंटिक ID नहीं है, तो प्लेटफ़ॉर्म ऊपर बताए गए चरणों से एक बना देता है। उसके बाद वही ID आपके ऑर्गनाइज़ेशन के डेटाबेस में उस ऑब्जेक्ट का स्थायी पहचानकर्ता बन जाती है।
मौजूद लेकिन अपहचान योग्य मान (असली concept ID नहीं) को अनदेखा कर दिया जाता है, और इसके बजाय एक ID जनरेट किया जाता है।
रिज़ॉल्यूशन में प्रति एनरिचमेंट थोड़ी एम्बेडिंग उपयोग लागत लगती है (किसी भी मॉडल कॉल की तरह मीटर की जाती है)। एग्ज़ैक्ट-मैच कैश दोहरावों को मुफ़्त बना देता है, और इनपुट में दिए गए ID की कोई लागत नहीं होती।
रिज़ॉल्व की गई ID एनरिचमेंट आउटपुट JSON में दिखती हैं (हर ऑब्जेक्ट पर id फ़ील्ड), रिकॉर्ड विवरण के सिमेंटिक कॉन्सेप्ट में, और सब एक साथ सिमेंटिक ID पेज पर, जहाँ उनसे बनी शब्दावली को ब्राउज़ और क्यूरेट किया जाता है। इनका उपयोग करें:
फ्यूज़न एक ही रन के भीतर मॉडल के बीच असहमतियों का मेल कराता है; सिमेंटिक ID एक ही एंटिटी का रन और समय के आर-पार मेल कराते हैं। दोनों साथ मिलकर काम करते हैं।