वेक्टर डेटाबेस क्या है? pgvector vs Pinecone vs Weaviate
जानें कि वेक्टर डेटाबेस क्या है, एम्बेडिंग्स कैसे समानता खोज सक्षम करती हैं, और AI सर्च व RAG के लिए pgvector, Pinecone, या Weaviate कब चुनें।

वेक्टर डेटाबेस — सादे शब्दों में
एक वेक्टर डेटाबेस एक ऐसा सिस्टम है जिसे एम्बेडिंग्स—संख्याओं की सूचियाँ जो टेक्स्ट, इमेज या अन्य डेटा का “अर्थ” दर्शाती हैं—को स्टोर और खोजने के लिए बनाया गया है। आप यह नहीं पूछते कि “क्या इस रिकॉर्ड में refund शब्द मौजूद है?”, बल्कि यह पूछते हैं, “इस प्रश्न के हिसाब से कौन से रिकॉर्ड सबसे समान हैं?” और सबसे निकट मैच वापस पाते हैं।
त्वरित मानसिक मॉडल: “सबसे समान चीज़ें ढूँढो”
कल्पना करें कि हर दस्तावेज़ (या प्रोडक्ट, टिकट, FAQ) को एक नक्शे पर एक बिंदु में बदल दिया गया है। एक ही विचार वाले आइटम्स पास‑पास आ जाते हैं—भले ही वे अलग शब्दों का उपयोग करें। एक वेक्टर डेटाबेस तेज़ी से जवाब दे सकता है: इस नए बिंदु के सबसे करीब क्या है?
यह SQL डेटाबेस और कीवर्ड सर्च से कैसे अलग है
परंपरागत SQL डेटाबेस तब बढ़िया होते हैं जब आपको अपने सवाल की संरचना पता हो: तारीख, user_id, status से फ़िल्टर करना आदि। कीवर्ड सर्च तब अच्छा है जब सही उत्तर में वही शब्द शाब्दिक रूप से मौजूद हों।
वेक्टर डेटाबेस अलग हैं क्योंकि वे समानार्थक समानता (semantic similarity) पर ध्यान केंद्रित करते हैं। वे उन प्रश्नों को संभालने के लिए डिज़ाइन किए गए हैं जैसे “मैं अपना पैसा कैसे वापस करूँ?” और ऐसे कंटेंट ढूँढते हैं जो कहते हैं “हमारी रिफंड पॉलिसी…” बिना बिल्कुल वही शब्द आवश्यक किए।
यह SQL या कीवर्ड सर्च की जगह नहीं लेते। कई वास्तविक सिस्टम में आप दोनों का उपयोग करते हैं: बिजनेस रूल्स (region, permissions, recency) के लिए SQL/filters और “अर्थ” के लिए वेक्टर सर्च।
लोग वेक्टर डेटाबेस किस लिए इस्तेमाल करते हैं
- समांतिक सर्च: इरादे के आधार पर दस्तावेज़ खोजें, न कि सटीक वाक्यांश के।
- रिकमेंडेशन: “जिसे इसने पसंद किया उसे ये भी पसंद आया” जैसी सिफारिशें समानता पर आधारित।
- RAG (Retrieval‑Augmented Generation): सबसे प्रासंगिक पासेज़ पहले लाना, फिर LLM से वे संदर्भ लेकर उत्तर बनवाना।
अगर आप एक लाइन याद रखें: वेक्टर डेटाबेस एम्बेडिंग्स के लिए “सबसे समान आइटम” इंजन है, जो तेज़ और बड़े पैमाने पर ऐसा करने के लिए अनुकूलित है।
एम्बेडिंग्स और समानता: मूल विचार
वेक्टर डेटाबेस इसलिए काम करते हैं क्योंकि एम्बेडिंग्स आपको अर्थ की संख्यात्मक तुलना करने देती हैं। आप संख्याओं को नहीं पढ़ते; आप उनका उपयोग यह रैंक करने के लिए करते हैं कि दो कंटेंट कितना “क्लोज़” हैं।
एम्बेडिंग क्या है (और यह संख्या की सूची क्यों है)
एक एम्बेडिंग एक संख्या की सूची है (अक्सर सैकड़ों या हज़ारों लंबे) जो किसी कंटेंट पीस का प्रतिनिधित्व करती है। हर संख्या मॉडल द्वारा सीखा गया अर्थ का कोई पहलू पकड़ती है। व्यक्तिगत संख्याओं को सीधे अर्थ देने की ज़रूरत नहीं; महत्वपूर्ण यह है कि समान कंटेंट के पैटर्न समान वेक्टर बनाते हैं।
इसे बहुत‑ऊँचे आयामी मानचित्र पर निर्देशांकों की तरह समझें: “रिफंड पॉलिसी” और “प्रोडक्ट वापस करना” बारे में वाक्य पास‑पास उतरते हैं, भले ही शब्द अलग हों।
टेक्स्ट, इमेज और ऑडियो कैसे वेक्टर बनते हैं
अलग एम्बेडिंग मॉडल अलग मीडिया को वेक्टर में बदलते हैं:
- टेक्स्ट: एक वाक्य, पैरा, सपोर्ट टिकट, या प्रोडक्ट विवरण एक वेक्टर बन जाता है।
- इमेजेस: एक फोटो ऐसे आकार, ऑब्जेक्ट और स्टाइल की जानकारी कैप्चर करने वाला वेक्टर बन जाती है।
- ऑडियो: एक क्लिप को अकॉस्टिक पैटर्न के आधार पर एम्बेड किया जा सकता है (या ट्रांसक्रिप्ट → टेक्स्ट एम्बेडिंग के जरिए)।
एक बार सब कुछ वेक्टर बन जाने पर, आपका डेटाबेस एक ही मूल ऑपरेशन से बड़े कलेक्शन्स में खोज कर सकता है: “सबसे नज़दीकी वेक्टर कौन‑से हैं।”
“समानता” का क्या मतलब है (भारी गणित के बिना)
नज़दीकी तय करने के लिए सिस्टम सरल स्कोरिंग नियमों का उपयोग करते हैं:
- Cosine similarity: दो वेक्टरों की दिशा की तुलना करता है (क्या वे उसी तरीके से इशारा कर रहे हैं?)।
- Dot product: उन वेक्टरों को इनाम देता है जो समान दिशा में और संगत परिमाण रखते हैं।
हाथों‑हाथ गणना करने की ज़रूरत नहीं—महत्वपूर्ण बात यह है कि अधिक स्कोर का मतलब है “ज़्यादा मिलता‑जुलता।”
अच्छी एम्बेडिंग्स डेटाबेस के चुनाव से ज्यादा मायने रखती हैं
ज़्यादातर सर्च‑क्वालिटी के लाभ बेहतर एम्बेडिंग्स और बेहतर चंकिंग से आते हैं, डेटाबेस बदलने से नहीं। अगर आपका मॉडल आपके डोमेन भाषा (प्रोडक्ट नाम, आंतरिक जार्गन, कानूनी शब्दावली) को कैप्चर नहीं करता, तो सबसे अच्छा वेक्टर इंडेक्स भी केवल “सबसे निकट गलत उत्तर” ही दे सकता है। pgvector बनाम Pinecone बनाम Weaviate का चुनाव मायने रखता है, पर सही एम्बेडिंग मॉडल और इनपुट फॉर्मेट चुनना आमतौर पर अधिक महत्वपूर्ण होता है।
वेक्टर DB बनाम कीवर्ड सर्च बनाम SQL क्वेरीज
कीवर्ड सर्च, SQL क्वेरीज, और वेक्टर सर्च अलग समस्याओं को हल करते हैं—इनको मिलाना अक्सर निराशाजनक परिणाम देता है।
कीवर्ड सर्च: सटीक शब्द जीतते हैं
परंपरागत सर्च (Elasticsearch, Postgres full‑text, आदि) शब्दों और वाक्यांशों से मिलान करती है। यह तब अच्छा है जब उपयोगकर्ता जानता है कि क्या टाइप करना है और दस्तावेज़ में वे टर्म मौजूद हैं।
यह तब संघर्ष करता है जब:
- सिनोनिम: “attorney” बनाम “lawyer”
- टाइपो: “reciept” बनाम “receipt” (आप टाइपो‑सहनशीलता जोड़ सकते हैं, पर यह शब्द‑आधारित ही रहेगा)
- वही अर्थ, अलग शब्द: “cancel my plan” बनाम “end my subscription”
वेक्टर सर्च: अर्थ जीतता है
एक वेक्टर डेटाबेस एम्बेडिंग्स स्टोर करता है—अर्थ के संख्यात्मक प्रतिनिधि। क्वेरीज को भी एम्बेड किया जाता है, और परिणाम समानता के अनुसार रैंक होते हैं, इसलिए आप अवधारणात्मक रूप से संबंधित कंटेंट पुनःप्राप्त कर सकते हैं भले ही शब्द मिलते‑जुलते न हों। यही वजह है कि वेक्टर सर्च समांतिक सर्च और RAG में लोकप्रिय है।
SQL क्वेरीज: संरचना जीतती है
SQL सही टूल है जब:
- सटीक मैच चाहिए (IDs, SKUs, ईमेल पते)
- टोटल्स और रिपोर्टिंग (काउंट, समरी, डैशबोर्ड)
- सख्त जॉइन और बिजनेस लॉजिक
वेक्टर उस समय खराब फिट होते हैं जब सटीकता अपरिहार्य हो (उदा. “orders for customer_id = 123”)।
फ़िल्टर अभी भी मायने रखते हैं
समांतिक सर्च के साथ भी आप आम तौर पर क्लासिक फ़िल्टर—प्राइस, डेट, भाषा, कैटेगरी, और परमिशन—का उपयोग करेंगे। अधिकांश वास्तविक सिस्टम हाइब्रिड होते हैं: पहले SQL/मेटाडेटा फिल्टर, फिर अनुमत सेट के भीतर वेक्टर समानता रैंकिंग।
वेक्टर सर्च अंदर से कैसे काम करता है (हल्के में)
जब आप डेटा को एक वेक्टर डेटाबेस में स्टोर करते हैं, हर आइटम एक लंबी संख्याओं की सूची (एक एम्बेडिंग) बन जाता है। सर्च का मतलब होता है: “इन क्वेरी वेक्टर के सबसे नज़दीकी वेक्टर ढूँढो।”
इंडेक्सिंग: क्यों सबकी तुलना नहीं कर सकते
एक असली दुनिया का डेटाबेस लाखों वेक्टर रख सकता है। आपके क्वेरी की तुलना हर वेक्टर से करना बहुत धीमा और महँगा होगा। इसलिए वेक्टर डेटाबेस एक इंडेक्स बनाते हैं—एक संरचना जो कैंडिडेट्स को जल्दी सीमित करने में मदद करती है, ताकि सिस्टम केवल एक छोटे सेट की दूरी मापे।
ANN (Approximate Nearest Neighbor) सरल शब्दों में
अधिकांश वेक्टर सर्च approximate nearest neighbor (ANN) का उपयोग करती है। “Approximate” का मतलब है कि डेटाबेस हर बार गणितीय रूप से परिपूर्ण टॉप रिज़ल्ट की गारंटी देने के बजाय बहुत अच्छे मैच को तेज़ी से खोजने की कोशिश करता है।
एक उपयोगी उपमा: लाइब्रेरी की हर किताब नहीं देखते, बल्कि एक स्मार्ट नक्शा आपको सही शेल्फ़ तक ले जाता है।
विलंबता बनाम सटीकता: "रिकॉल" क्या है
यह ट्रेड‑ऑफ अक्सर “इंडेक्स कितनी मेहनत से सर्च करे?” जैसे सेटिंग्स से ट्यून होता है।
- कम विलंबता: परिणाम जल्दी लौटता है, पर कुछ अच्छे मैच छूट सकते हैं।
- ऊँचा रिकॉल: सच्चे सर्वश्रेष्ठ मैचों में से ज़्यादा मिलेंगे, पर समय अधिक लगेगा।
व्यावहारिक रूप से, रिकॉल का मतलब है “किस हद तक परिणामों में वह चीज़ है जिसे एक इंसान सही समझेगा।” RAG के लिए ऊँचा रिकॉल अक्सर महत्वपूर्ण तथ्यों के छूटने को कम करता है (पर खर्च बढ़ा सकता है)।
आप जिन इंडेक्स प्रकारों के बारे में सुनेंगे
- HNSW: वेक्टरों का एक ग्राफ़ बनाता है ताकि खोज पास‑पास नेइबर्स के बीच ‘हॉप’ कर सके।
- IVF: पहले वेक्टरों को क्लस्टर करता है, फिर सबसे वादित क्लस्टर्स को सर्च करता है।
विभिन्न प्रोडक्ट (pgvector, Pinecone, Weaviate) इन विचारों को अलग‑अलग डिफॉल्ट और ट्यूनिंग‑नॉब्स के साथ पेश करते हैं, पर लक्ष्य एक‑सा है: तेज़ समानता सर्च जिनकी सटीकता नियंत्रित की जा सके।
सर्च और RAG के लिए सामान्य वेक्टर DB वर्कफ़्लो
वेक्टर डेटाबेस वर्कफ़्लो मुख्यतः “चीज़ें स्टोर करो, फिर सर्वश्रेष्ठ मैच रिट्रीव करो” लूप है। मुख्य बात यह है कि आप अर्थ (एम्बेडिंग्स) को मूल कंटेंट के साथ स्टोर करते हैं ताकि सर्च विचारों पर मैच कर सके, न कि केवल शब्दों पर।
1) Ingest: दस्तावेज़ + एम्बेडिंग्स + मेटाडेटा
आप दस्तावेज़ एकत्र करते हैं (पेज, PDFs, टिकट, प्रोडक्ट विवरण), उन्हें चंक्स में बाँटते हैं, और हर चंक के लिए एम्बेडिंग जनरेट करते हैं।
डेटाबेस में आप आमतौर पर स्टोर करते हैं:
- Text/content: वह चंक जिसे उपयोगकर्ता पढ़ सकता है
- Embedding: समानता सर्च के लिए वेक्टर
- Metadata: फ़ील्ड जैसे tenant_id, source, category, created_at, permissions
2) Query: कैंडिडेट्स रिट्रीव करें (वेक्टर, कीवर्ड, या दोनों)
सर्च समय पर आप उपयोगकर्ता के क्वेरी को एम्बेड करते हैं और सबसे नज़दीकी वेक्टरों के लिए पूछते हैं।
हाइब्रिड सर्च: कीवर्ड सिग्नल और वेक्टर मिलाएं
कई टीमें वेक्टर समानता को कीवर्ड स्कोरिंग (BM25 जैसा) के साथ मिलाती हैं ताकि आप सेमांटिक मैच भी पाएं और सटीक शब्दों (SKU कोड, नाम, एरर स्ट्रिंग) को भी इनाम दे सकें।
फ़िल्टरिंग: गुणों से परिणाम सीमित करें (tenant, category, time)
रिट्रीवल से पहले या दौरान मेटाडेटा फ़िल्टर लागू करें—खासकर मल्टी‑टेनेंट ऐप्स और परमिशन के लिए। फ़िल्टर प्रिसिजन भी बढ़ाते हैं (उदा. “केवल पिछले 90 दिन”, “केवल Help Center”)।
री‑रैंकिंग: रिट्रीवल के बाद टॉप परिणाम सुधारें
एक सामान्य पैटर्न है: तेज़ी से टॉप 50–200 रिट्रीव करें, फिर टॉप 10–20 को मजबूत मॉडल या नियमों से री‑रैंक करें (ताज़गी बूस्ट, स्रोत प्राथमिकता)।
3) RAG: मॉडल में संदर्भ जोड़ें
RAG के लिए आप अंतिम टॉप चंक्स लेते हैं और उन्हें LLM प्रॉम्प्ट में संदर्भ के रूप में भेजते हैं, अक्सर साइटेशन्स और “अगर नहीं मिला तो उत्तर न दें” निर्देश के साथ। नतीजा ऐसा उत्तर होता है जो आपके स्टोर किए गए कंटेंट पर ग्राउंडेड होता है, मॉडल के अनुमान पर नहीं।
प्रोटोटाइप नोट: RAG सर्च फीचर जल्दी शिप करने का तरीका
अगर आपका उद्देश्य जल्दी प्रोटोटाइप करके रिट्रीवल क्वालिटी वेलिडेट करना है (सप्ताह नहीं लगाना), तो एक कोड‑वाइब प्लेटफ़ॉर्म जैसे Koder.ai से आप एक end‑to‑end सेमांटिक सर्च या RAG ऐप प्रोटोटाइप कर सकते हैं। व्यवहार में इसका मतलब है कि आप एक React UI, एक Go बैकएंड, और एक Postgres डेटाबेस (pgvector के साथ) खड़ा कर सकते हैं और planning mode, snapshots, rollback जैसी सुविधाओं के साथ तेज़ी से iterate कर सकते हैं—फिर जब तैयार हों तो स्रोत कोड export कर लें।
pgvector: Postgres के अंदर वेक्टर
pgvector एक PostgreSQL एक्सटेंशन है जो आपको एम्बेडिंग वेक्टर सीधे अपने मौजूदा डेटाबेस में स्टोर और सर्च करने देता है। अलग वेक्टर डेटाबेस चलाने के बजाय आप एक नया कॉलम टाइप (vector) उसी तालिकाओं में जोड़ते हैं जो आपके users, products, documents और मेटाडेटा रखती हैं।
pgvector कब अच्छा फिट है
pgvector उन टीमों के लिए चमकता है जो पहले से Postgres के प्रति प्रतिबद्ध हैं और कम कम्पोनेन्ट रखना चाहती हैं। अगर आपके ऐप की सच्चाई Postgres में है, तो वेक्टर वहीं रखना आर्किटेक्चर को सरल कर सकता है: एक बैकअप रणनीति, एक एक्सेस‑कंट्रोल मॉडल, माईग्रेशन्स के लिए जगह, और जॉइन/फ़िल्टर के लिए परिचित SQL।
फायदा: ट्रांज़ैक्शनल + समांतिक डेटा एक ही सिस्टम में
सबसे बड़ा फ़ायदा संरचित डेटा और वेक्टर को एक साथ रखने का है। आप समांतिक सर्च कर सकते हैं और फिर भी “सामान्य” बाध्यताएँ लागू कर सकते हैं—जैसे tenant_id, category, status, permissions—बिना सिस्टम्स को जोड़ने के। ऑपरेशनल रूप से, यह भेजना सरल बना देता है: आपका मौजूदा Postgres तैनाती और एक एक्सटेंशन।
योजना के लिए ट्रेड‑ऑफ
उच्च‑वॉल्यूम वेक्टर वर्कलोड Postgres को उन तरीकों से दबा सकते हैं जिनके लिए वह मूलतः ट्यून नहीं किया गया था। आपको वेक्टर इंडेक्स (आमतौर पर IVFFlat या HNSW), मेमोरी सेटिंग्स, vacuum व्यवहार, और क्वेरी पैटर्न के बारे में सोचना पड़ सकता है।
अगर आप बहुत बड़े एम्बेडिंग संग्रह, भारी समवर्ती सिमिलैरिटी सर्च, या तेज़ वृद्धि की उम्मीद करते हैं, तो स्केलिंग और ट्यूनिंग अधिक हैंड‑ऑन हो सकती है बनाम एक मैनेज्ड वेक्टर सर्विस। कई टीमों के लिए, pgvector “सरल शुरुआत” विकल्प है जो आश्चर्यजनक रूप से दूर तक जा सकता है।
Pinecone: मैनेज्ड वेक्टर सर्च सर्विस
Pinecone एक पूरी तरह मैनेज्ड वेक्टर डेटाबेस सर्विस है: आप इसे एम्बेडिंग्स (वेक्टर), IDs और मेटाडेटा भेजते हैं, और यह तेज़ समानता सर्च देता है जबकि ऑपरेशनल काम का बड़ा हिस्सा सेवा संभालती है।
आपको क्या मिलता है (और आप क्या मैनेज नहीं करते)
Pinecone के साथ आप आम तौर पर मशीन प्राविजनिंग, रोज़ाना इंडेक्स ट्यूनिंग, या अपनी स्केलिंग और फेलओवर स्टोरी का निर्माण नहीं सोचते। आप API के जरिए वेक्टर अपसर्ट करना, नज़दीकी नेइबर्स क्वेरी करना, और मेटाडेटा द्वारा फ़िल्टर करना करते हैं (जैसे भाषा, tenant, document type, या access level)।
सर्वश्रेष्ठ फिट
Pinecone उस समय एक मजबूत विकल्प है जब आप:
- ऑपरेशन्स पाइपलाइन बनाए बिना तेजी से शुरू करना चाहते हैं
- प्रोडक्शन समांतिक सर्च या RAG चलाना जहाँ ट्रैफ़िक अनिश्चित रूप से बढ़ सकता है
- गहराई से इंफ्रास्ट्रक्चर नियंत्रण के बजाय सुसंगत विलंबता और विश्वसनीयता को प्राथमिकता देते हैं
टीमें अक्सर इसे चुनती हैं जब उनकी मूल उत्पाद क्षमता उच्च‑गुणवत्ता रिट्रीवल पर निर्भर हो और वे “वेक्टर सर्च ऐज़ अ सर्विस” चाहती हों।
फायदे
Pinecone का सबसे बड़ा लाभ प्रोडक्शन तक पहुँचने की गति है। मैनेज्ड स्केलिंग और रिलायबिलिटी फीचर्स (योजना के अनुसार) क्षमता नियोजन और घटनाओं के जवाब पर आपके समय को कम कर देते हैं। यह आम AI स्टैक्स के साथ साफ़ इंटीग्रेट भी होता है।
नुकसान और ट्रेड‑ऑफ़
मुख्य ट्रेड‑ऑफ़ vendor lock‑in की चिंताएँ और उपयोग पर आधारित लागत हैं जो क्वेरी वॉल्यूम, स्टोरेज और थ्रूपुट के साथ बढ़ सकती है। आपको डेटा रेसिडेंसी, अनुपालन आवश्यकताएँ, और संवेदनशील डेटा के हैंडलिंग तरीकों की पुष्टि भी करनी चाहिए।
Weaviate: ओपन‑सोर्स वेक्टर डेटाबेस विकल्प
Weaviate एक ओपन‑सोर्स वेक्टर डेटाबेस है जो आपको एक पूर्ण‑फ़ीचर “AI सर्च बैकएंड” देता है साथ में GraphQL API। अगर आप अपने इंफ्रा पर नियंत्रण रखना पसंद करते हैं (या अपनी पसंद के क्लाउड पर डिप्लॉय करना चाहते हैं) पर फिर भी एक प्रोडक्ट‑जैसे अनुभव (schema, filtering, indexing options, integrations) चाहते हैं—तो Weaviate अक्सर शॉर्टलिस्ट में आता है।
यह क्या है
ऊपर‑नीचे, Weaviate ऑब्जेक्ट्स (आपके दस्तावेज़, प्रोडक्ट, टिकट) को मेटाडेटा और वेक्टर एम्बेडिंग्स के साथ स्टोर करता है। आप इसे सेमांटिक समानता से क्वेरी कर सकते हैं (“ऐसी चीजें खोजो”) और साथ‑ही‑साथ फ़िल्टर भी लागू कर सकते हैं (“केवल पिछले 30 दिन”, “केवल category = support”)। GraphQL API टीमों के लिए अभिव्यक्तिपूर्ण क्वेरीज को आसान बनाती है बिना कस्टम एंडपॉइंट्स डिज़ाइन किए।
सर्वश्रेष्ठ फिट
Weaviate उन टीमों के लिए ठीक होता है जो:
- सेल्फ‑होस्टिंग या लचीले डिप्लॉय विकल्प (Kubernetes, VMs, या मैनेज्ड) चाहती हैं
- “सिर्फ वेक्टर” से ज़्यादा चाहती हैं—schema और मेटाडेटा मॉडलिंग सहित
- जैसे‑जैसे सिस्टम बढ़े, कनेक्टर्स/मॉड्यूल्स (एम्बेडिंग जनरेशन, री‑रैंकिंग, इंटीग्रेशन्स) का उपयोग करने की उम्मीद रखती हैं
फायदे और ट्रेड‑ऑफ़
फायदे: मजबूत schema/metadata सपोर्ट, मॉड्यूल्स/इंटीग्रेशन्स का समृद्ध ईकोसिस्टम, और परफॉर्मेंस ट्यून करने के लिए कन्फ़िग्यरेबल इंडेक्सिंग दृष्टिकोण।
नुकसान: अगर आप इसे खुद चलाते हैं तो ऑपरेशन—अपग्रेड्स, स्केलिंग, मॉनिटरिंग, बैकअप्स, और इनसिडेंट रिस्पांस—आपकी ज़िम्मेदारी होगी। मॉड्यूल्स, मल्टी‑टेनेन्सी, और जटिल स्कीमा जोड़ने पर सिस्टम समझने में मुश्किल हो सकता है जब तक आप शुरुआत में स्पष्ट कन्वेंशन्स न सेट करें।
तुलन में, Weaviate अक्सर “अपने डेटाबेस के अंदर साधारण जोड़” और “पूर्ण‑मैनेज्ड सर्विस” के बीच बैठता है—लचीलापन देता है पर ऑपरेशनल ओनरशिप की माँग बढ़ती है।
pgvector, Pinecone, और Weaviate में कैसे चुनें
वेक्टर डेटाबेस चुनना “सबसे अच्छा” पर नहीं बल्कि फिट पर निर्भर करता है: आप इसे कहाँ चलाना चाहेंगे, आप कितनी बड़ी उम्मीद रखते हैं, आपकी क्वेरीज़ कैसी हैं, और आपकी टीम कितना ऑपरेशनल काम उठा सकती है।
1) डिप्लॉयमेंट मॉडल
pgvector "Postgres के अंदर वेक्टर" है। यह आदर्श है अगर आपका ऐप पहले से Postgres पर है और आप दोनों प्रकार का डेटा एक जगह रखना चाहते हैं।
Pinecone मैनेज्ड है। आप नियंत्रण के बदले तेज़ अपनाने की सुविधा लेते हैं—कम नॉब्स, कम इंफ्रा मेंटेन।
Weaviate ओपन‑सोर्स है और सेल्फ‑होस्ट या मैनेज्ड के रूप में तैनात किया जा सकता है। यह अच्छा मध्य‑मार्ग है अगर आप वेक्टर‑नेटिव सिस्टम चाहते हैं पर खुले टूल्स भी पसंद करते हैं।
2) स्केल जरूरतें
छोटी स्केल पर तीनों काम कर सकते हैं। बढ़ने पर पूछें:
- अब कितने वेक्टर हैं, और 12 महीनों में कितने होंगे?
- आपका रीड/राइट रेट (QPS, ingest bursts) क्या है?
अगर तेज़ वृद्धि और उच्च QPS की उम्मीद है, तो Pinecone प्रायः ऑपरेशनल सादगी में जीतता है। अगर विकास मध्यम है और आप पहले से Postgres को बड़े पैमाने पर चलाते हैं, तो pgvector लागत‑प्रभावी हो सकता है।
3) क्वेरी जरूरतें
अगर आपको भारी रिलेशनल फ़िल्टरिंग (जॉइंस, जटिल predicates) चाहिए तो pgvector आकर्षक है।
अगर आपको हाइब्रिड सर्च (कीवर्ड + समांतिक), समृद्ध फ़िल्टरिंग, या मजबूत मल्टी‑टेनेन्ट आइसोलेशन चाहिए, तो Pinecone और Weaviate को फीचर‑दर‑फीचर तुलना करें।
4) ऑपरेशनल जरूरतें
बैकअप्स, मॉनिटरिंग, अपग्रेड्स, और ऑन‑कॉल लोड के बारे में ईमानदार रहें। मैनेज्ड बोझ कम कर देता है। सेल्फ‑होस्टेड सस्ता हो सकता है, पर केवल अगर आपकी टीम के पास उसे भरोसेमंद चलाने के कौशल (और समय) हों।
डेटा मॉडलिंग सुझाव जो भविष्य का दर्द रोकेँ
अच्छी वेक्टर सर्च एक साधारण पर भरोसेमंद रिकॉर्ड आकृति से शुरू होती है। हर “सर्चेबल यूनिट” को एक रो/ऑब्जेक्ट मानें जिसे बाद में फेच, फ़िल्टर और समझाया जा सके।
एक व्यावहारिक न्यूनतम स्कीमा
कम से कम स्टोर करें:
- id: स्थिर प्राथमिक कुंजी (UUID या deterministic hash)
- vector: एम्बेडिंग
- source: कहाँ से आया (document id, URL/path, workspace, tenant)
- text chunk: वह सटीक कंटेंट जो एम्बेड किया गया था (या उसका पॉइंटर)
- metadata: फ़िल्टरिंग और डिबगिंग के लिए फ़ील्ड
यह रिट्रीवल को सरल रखता है: वेक्टर सर्च ids लौटाता है, फिर आप चंक + संदर्भ लेने के लिए उन ids को फेच करते हैं ताकि उपयोगकर्ता को दिखाएँ या RAG के लिए भेजें।
चंकिंग: साइज और ओवरलैप आपके परिणाम बदलते हैं
चंकिंग वह सबसे बड़ा क्वालिटी लीवर है जिसे आप नियंत्रित कर सकते हैं। छोटे चंक्स ज़्यादा “सटीक” होते हैं पर संदर्भ खो सकते हैं; बड़े चंक्स संदर्भ तो देते हैं पर सिग्नल पतला कर सकते हैं।
आम प्रारंभ बिंदु: 200–400 tokens और 10–20% overlap, फिर सामग्री के अनुसार समायोजित करें।
फ़िल्टरिंग के लिए मददगार मेटाडेटा (और समझाने के लिए)
ऐसे मेटाडेटा स्टोर करें जिन्हें आप वास्तव में क्वेरी करेंगे:
- access/tenant फ़ील्ड (auth)
- document type, language, created_at
- product, category, tags
- chunk_index और section title (डिबगिंग के लिए बढ़िया)
भारी JSON blobs न डालें; अक्सर फ़िल्टर किए जाने वाले फ़ील्ड्स को आसानी से इंडेक्स करने योग्य रखें।
हर चीज़ का वर्जन रखें जो बदल सकती है
एम्बेडिंग्स कालजीवी नहीं हैं। embedding_model, model_version, और chunking_version ट्रैक करें (साथ में created_at)। जब आप मॉडल अपग्रेड करें, तो आप समानांतर में री‑एम्बेड कर सकते हैं और धीरे‑धीरे ट्रैफ़िक स्विच कर सकते हैं बिना असंगत वेक्टर मिक्स किए।
प्रदर्शन, लागत, और गुणवत्ता विचार
वेक्टर सर्च डेमो में "तुरंत" लग सकती है, पर प्रोडक्शन में धीमी या महँगी हो सकती है। अच्छी बात यह है कि मुख्य ड्राइवर पूर्वानुमेय हैं, और आप उन्हें pgvector, Pinecone, या Weaviate किसी भी विकल्प के साथ मैनेज कर सकते हैं।
विलंबता और लागत: क्या वास्तव में फर्क डालता है
अधिकांश टीमें नॉन‑सर्च हिस्सों को कम आंका करती हैं।
- एम्बेडिंग जनरेशन: एम्बेडिंग बनाना सबसे बड़ा बिल और सबसे धीमा कदम हो सकता है, खासकर अगर आप बड़े टेक्स्ट या बार‑बार री‑एम्बेड कर रहे हों। एम्बेडिंग कैश करें और अनुरोधों को बैच में भेजें।
- इंडेक्सिंग और री‑इंडेक्सिंग: वेक्टर इंडेक्स समानता सर्च तेज करते हैं, पर इन्हें बनाना समय और संसाधन लेता है। बैकफिल के समय स्पाइक्स की योजना बनाएं।
- क्वेरी वॉल्यूम और फ़िल्टर: उच्च QPS, जटिल मेटाडेटा फ़िल्टर, और बार‑बार हाइब्रिड क्वेरीज विलंबता बढ़ा सकते हैं। p95 लैटेंसी ट्रैक करें, सिर्फ औसत नहीं।
गुणवत्ता: प्रासंगिकता ज्यादातर आपके इनपुट पर निर्भर करती है
बेहतर समानता सर्च स्वतः बेहतर उत्तर नहीं देता।
- चंकिंग: अगर चंक्स बहुत बड़े हैं, तो आप शोर लौटाते हैं; बहुत छोटे हैं तो अर्थ खो जाता है। 200–500 tokens से शुरू करें और कंटेंट के अनुसार एडजस्ट करें।
- RAG रणनीति: रिट्रीवल सिर्फ पहला कदम है। साधारण री‑रैंकिंग (या “top‑k फिर रीरैंक” तरीका) अक्सर डेटाबेस बदलने से ज्यादा सुधार देता है।
- ताज़गी: अगर आपका डेटा बदलता रहता है, तो स्टेल एम्बेडिंग गलत मैच कराएँगी। परिभाषित करें कब री‑एम्बेड करना है (उदा. संपादन पर, रात में, या लोकप्रियता के अनुसार)।
मूल्यांकन: ऑप्टिमाइज़ करने से पहले मापें
एक छोटा टेस्ट सेट बनाएं: 30–100 वास्तविक क्वेरी, हर एक के साथ कुछ “अच्छे” अपेक्षित परिणाम। टॉप‑k प्रासंगिकता (hit rate) मापें और जब आप चंकिंग, इंडेक्स या प्रॉम्प्ट बदलें तो ट्रैक करें।
सुरक्षा के मूल बातें जिन्हें आप अनदेखा नहीं कर सकते
एम्बेडिंग्स को संभावित रूप से संवेदनशील मानें।
- ऐप/यूज़र के अनुसार एक्सेस कंट्रोल लागू करें।
- मल्टी‑टेनेन्सी के लिए टेनेन्ट सेपरेशन (namespace, schema, या अलग‑अलग इंडेक्स) लागू करें।
- संवेदनशील डेटा हैंडलिंग की योजना रखें: redaction, at‑rest एन्क्रिप्शन, और retention नीतियाँ।
संचालन और गवर्नेंस चेकलिस्ट
वेक्टर सर्च क्वालिटी सिर्फ इंडेक्स की बात नहीं—यह दिन‑प्रतिदिन सिस्टम कैसे ऑपरेट होता है उसकी भी बात है। कुछ गवर्नेंस अभ्यास “मिस्ट्री रिज़ल्ट्स” रोकते हैं और ऑडिट्स को आसान बनाते हैं।
कंटेंट को सुरक्षित तरीके से स्टोर करें (या पॉइंटर स्टोर करें)
अगर आपके दस्तावेज़ संवेदनशील डेटा रखते हैं, तो कच्चा कंटेंट अपने प्राथमिक डेटास्टोर (object storage, database, DMS) में रखें और केवल स्टोर करें:
- एक ID (pointer),
- एम्बेडिंग वेक्टर,
- फ़िल्टरिंग के लिए न्यूनतम मेटाडेटा।
इससे अगर वेक्टर स्टोर कॉम्प्रोमाइज़ हो जाए तो एक्सपोज़र कम होता है और एक्सेस कंट्रोल सरल रहता है। साथ ही यह तब मदद करता है जब आप कई बैकएंड उपयोग करते हैं (उदा. आंतरिक ऐप्स के लिए pgvector, पब्लिक फीचर के लिए Pinecone)।
अपडेट्स और हटाने सही तरीके से हैंडल करें
अगर आप एम्बेडिंग्स को साफ़ नहीं करते तो वे "पुरानी" बातें याद रख सकते हैं।
- अपडेट पर: बदले गए कंटेंट को री‑एम्बेड करें और पुरानी वेक्टर बदल दें।
- डिलीट पर: वेक्टर और मेटाडेटा हटाएँ और सत्यापित करें कि इंडेक्स में भी बदलाव परिलक्षित हुआ है।
- RAG के लिए: कैश्ड चंक्स को invalid करें ताकि हटाई गई जानकारी फिर न उभर आए।
निगरानी और फीडबैक लूप्स
प्रासंगिकता डिबग करने के लिए पर्याप्त लॉग रखें पर सिक्रेट्स लॉग न करें:
- क्वेरी टेक्स्ट (या रेडैक्टेड वर्ज़न), फ़िल्टर, और विलंबता,
- लौटाए गए टॉप‑k IDs (और स्कोर्स),
- उपयोगकर्ता क्रियाएँ: क्लिक, “helpful/not helpful”, और फॉलो‑अप क्वेरीज।
यह मॉडल या डेटा बदलाव के बाद drift और regression को स्पष्ट बनाता है।
अनुपालन के मूल तत्व
Retention (कितना समय वेक्टर और लॉग्स रहते हैं), ट्रांज़िट/एट‑रेस्ट एन्क्रिप्शन, और ऑडिट ज़रूरतों की योजना बनाएं (किसने कब क्या सर्च किया)। अगर आप रेगुलेटेड वातावरण में काम करते हैं तो डेटा फ्लो और एक्सेस पाथ्स दस्तावेज़ करें ताकि रिव्यू रिलीज़ को ब्लॉक न करें।
सामान्य गलतियाँ और उन्हें कैसे टालें
एक ठोस वेक्टर डेटाबेस सेटअप भी कुछ सामान्य फॉल्टलाइन पर असंतोषजनक हो सकता है। यहाँ वे सबसे आम गलतियाँ और शुरुआती सुधार दिए गए हैं।
1) हर चीज़ के लिए वेक्टर इस्तेमाल करना (और फ़िल्टर भूल जाना)
वेक्टर अर्थ के लिए बेहतरीन हैं, हार्ड कंस्ट्रेंट के लिए नहीं। अगर आप समांतिक सर्च को इकलौता टूल बना देते हैं, परिणाम यादृच्छिक या असुरक्षित लग सकते हैं।
बचाव: समानता सर्च को संरचित फ़िल्टर (tenant_id, product category, language, date ranges) के साथ मिलाएँ। मेटाडेटा फ़िल्टर को क्वेरी डिज़ाइन का फर्स्ट‑क्लास हिस्सा मानें।
2) मूल्यांकन छोड़ना और केवल “फील” पर भरोसा करना
एक हैंडफुल प्रॉम्प्ट्स पर अच्छा दिखने वाला डेमो गंभीर रिकॉल और प्रासंगिकता समस्याओं को छिपा सकता है।
बचाव: एक छोटा मूल्यांकन सेट बनाएं और सरल मेट्रिक्स (टॉप‑k प्रासंगिकता, क्लिक/सेलेक्शन रेट, या मानव जजमेंट) ट्रैक करें। जब भी आप एम्बेडिंग, चंकिंग, या इंडेक्स सेटिंग बदलें मूल्यांकन दोबारा चलाएँ।
3) मॉडल बदलने पर री‑एम्बेडिंग की योजना न बनाना
एम्बेडिंग मॉडल बदलते रहते हैं। मॉडल (या वर्ज़न) बदलने से वेक्टर स्पेस बदल जाता है, जो रिट्रीवल को चुपचाप घटा सकता है।
बचाव: embedding_model फ़ील्ड स्टोर करें और एम्बेडिंग्स को वर्ज़न्ड आर्टिफैक्ट मानें। एक री‑एम्बेडिंग पाइपलाइन रखें और बैकफिल की योजना बनाएं (अक्सर चरणबद्ध)। लागत चिंता हो तो सबसे ज़्यादा उपयोग किए जाने वाले कंटेंट को पहले री‑एम्बेड करें।
4) परमिशन्स को अनदेखा करना
अगर आपके ऐप में एक्सेस कंट्रोल है, तो रिट्रीवल को इसे सम्मानित करना चाहिए—अन्यथा आप प्रतिबंधित कंटेंट दिखा सकते हैं।
बचाव: रिट्रीवल स्टेप में परमिशन्स लागू करें—पर‑टेनेन्ट इंडेक्स, मेटाडेटा फ़िल्टर, या प्रीकम्प्यूटेड ACL फ़ील्ड्स का उपयोग करें। परीक्षण करें: “यूज़र A को कभी यूज़र B के दस्तावेज़ नहीं मिलना चाहिए,” यहाँ तक कि टॉप‑k कैंडिडेट्स में भी।
त्वरित सारांश और सुझावित अगले कदम
एक वेक्टर डेटाबेस एक सिस्टम है जिसे एम्बेडिंग्स (टेक्स्ट, इमेज, या अन्य डेटा के संख्यात्मक प्रतिनिधि) स्टोर करने और सबसे समान आइटम तेज़ी से रिट्रीव करने के लिए डिज़ाइन किया गया है। यह तब सबसे अच्छा फिट बैठता है जब उपयोगकर्ता अर्थ (semantic search) द्वारा खोजते हैं या जब आप RAG बना रहे हैं ताकि AI सहायक आपकी अपनी सामग्री से प्रासंगिक पैसज खींचकर उत्तर दे सके।
किस विकल्प को चुनें? — व्यवहारिक नियम
- pgvector (Postgres vector): तब चुनें जब आप पहले से Postgres उपयोग कर रहे हों और अपनी स्टैक को सरल रखना चाहें। छोटे‑से‑मध्यम वर्कलोड, कड़े रिलेशनल जॉइन, और एक डेटाबेस पसंद करने वाली टीमों के लिए आदर्श।
- Pinecone: तब चुनें जब आप एक मैनेज्ड सर्विस चाहते हों जो न्यूनतम ऑप्स के साथ वेक्टर सर्च के लिए ऑप्टिमाइज़ हो, खासकर प्रोडक्शन वर्कलोड के लिए जिनकी स्केलिंग अनिश्चित हो सकती है।
- Weaviate: तब चुनें जब आप एक ओपन‑सोर्स वेक्टर डेटाबेस चाहते हों जिसमें मजबूत फीचर और लचीलापन हो, और आप इसे खुद चलाने (या होस्टेड विकल्प लेने) में सहज हों।
एक सरल अगला कदम: अपने डेटा के साथ प्रोटोटाइप बनाइए
एक दिन में छोटा पीओसी बनाइए:
- एक ऐसा डेटासेट चुनें जो आपको मायने रखता हो (सपोर्ट टिकट, डॉक, प्रोडक्ट कैटलॉग)।
- 500–5,000 आइटम के लिए एम्बेडिंग्स जनरेट करें।
- सर्च + मूल्यांकन लागू करें: 20–50 वास्तविक क्वेरियों की सूची, परिणामों की तुलना करें और मापें “क्या उसने सही चीज़ ढूँढी?”
- अगर RAG कर रहे हैं, तो “टॉप‑k पासेज़ रिट्रीव → उत्तर जनरेट” लूप जोड़ें और फैक्टुअलिटी व साइटेशन क्वालिटी की जाँच करें।
अगर आप और इम्प्लीमेंटेशन या लागत मार्गदर्शन चाहते हैं, तो देखें /blog। प्राइसिंग विचारों या होस्टेड विकल्पों के लिए देखें /pricing。
अक्सर पूछे जाने वाले प्रश्न
सरल हिन्दी में वेक्टर डेटाबेस क्या है?
एक वेक्टर डेटाबेस एम्बेडिंग्स (वेक्टर: लंबी संख्या की सूचियाँ) को संग्रहीत और खोजता है जो टेक्स्ट, इमेज या अन्य डेटा का अर्थ दर्शाते हैं। यह सटीक शब्द मिलान करने के बजाय क्वेरी के सापेक्ष उन आइटम्स को लौटाता है जो सेमांटिक स्पेस में सबसे समान हैं—जब उपयोगकर्ता एक ही इरादे को अलग शब्दों में व्यक्त करते हैं तो यह बहुत उपयोगी होता है।
एम्बेडिंग क्या है, और यह संख्याओं की सूची क्यों है?
एक एम्बेडिंग कंटेंट का एक संख्यात्मक “फिंगरप्रिंट” है जिसे ML मॉडल बनाता है। आप हर संख्या को अलग से पढ़ते नहीं; पूरे वेक्टर का उपयोग आइटम्स की तुलना के लिए करते हैं। समान आइटम्स (जैसे “रिफंड पॉलिसी” और “प्रोडक्ट वापस करने का तरीका”) पास‑पास आ जाते हैं, जिससे सेमांटिक रिट्रीवल संभव होता है।
वेक्टर सर्च कीवर्ड सर्च से कैसे अलग है?
कीवर्ड सर्च शब्दों और वाक्यांशों से मेल खाती है (अक्सर सटीक टर्म के लिए बढ़िया)। वेक्टर सर्च अर्थ से मेल खाती है (समानार्थक और पैराफ़्रेज़ के लिए बेहतर)। व्यवहार में टीमें अक्सर हाइब्रिड सर्च का उपयोग करती हैं:
- कीवर्ड/BM25: सटीक स्ट्रिंग्स (SKU, एरर कोड) को इनाम देने के लिए
- वेक्टर: इरादा और संबंधित फ्रेज़िंग पकड़ने के लिए
मुझे SQL कब और वेक्टर डेटाबेस कब इस्तेमाल करना चाहिए?
SQL उन स्थितियों के लिए सबसे अच्छा है जहाँ आपको स्ट्रक्चर्ड, सटीक जवाब चाहिए: IDs, जॉइंस, एग्रीगेशन्स, और सख्त फ़िल्टर। वेक्टर सर्च उन फ़ज़ी “समान आइटम खोजो” सवालों के लिए अच्छा है। आम पैटर्न यह है:
- बिजनेस रूल्स (tenant, permissions, time window) के लिए SQL/मेटाडेटा फ़िल्टर का उपयोग करें
- अनुमत सेट के भीतर सबसे सेमांटिक रूप से महत्त्वपूर्ण चीजों को रैंक करने के लिए वेक्टर का उपयोग करें
वेक्टर डेटाबेस बड़े पैमाने पर तेज़ी से कैसे खोज करता है?
अधिकांश सिस्टम Approximate Nearest Neighbor (ANN) इंडेक्सिंग का उपयोग करते हैं। इसके बजाय कि आपका क्वेरी हर स्टोर किए गए वेक्टर से तुलना करे, इंडेक्स कैंडिडेट्स को संकुचित करता है ताकि केवल छोटे उपसमूह को पूरी तरह स्कोर किया जाए। आप थोड़ी बहुत “परफेक्ट” सटीकता को तेज़ी और लागत बचत के बदले में तौलिए करते हैं।
कोसाइन समानता और डॉट प्रोडक्ट में क्या अंतर है?
Cosine similarity वेक्टरों की दिशा की तुलना करता है (क्या वे एक ही दिशा में इशारा कर रहे हैं?). Dot product समान दिशा को इनाम देता है और यदि वेक्टर्स का मैग्नीट्यूड मायने रखता है तो उसे भी शामिल कर सकता है।
व्यवहार में: अपने एम्बेडिंग मॉडल के लिए अनुशंसित मीट्रिक चुनें और इंडेक्सिंग/क्वेरी के दौरान लगातार वही इस्तेमाल करें।
सेमांटिक सर्च या RAG के लिए दस्तावेज़ कैसे चंक करें?
Chunking यह नियंत्रित करता है कि हर वेक्टर किस चीज़ का प्रतिनिधित्व करता है। बहुत बड़े चंक्स: आप शोर वाला, मिश्रित‑टॉपिक कंटेक्स्ट वापस पाएंगे। बहुत छोटे चंक्स: जरूरी संदर्भ खो सकता है。
व्यवहारिक आरंभिक बिंदु:
- 200–400 tokens प्रति चंक
- 10–20% overlap
इसके बाद सामग्री के प्रकार के हिसाब से समायोजित करें (API/कानूनी टेक्स्ट अक्सर छोटे; कथात्मक सामग्री के लिए थोड़ा बड़ा)।
RAG (Retrieval‑Augmented Generation) में वेक्टर डेटाबेस कैसे फिट बैठता है?
RAG आमतौर पर एक पाइपलाइन है:
- दस्तावेज़ों को चंक में बाँटें और एम्बेड करें।
- क्वेरी समय पर उपयोगकर्ता प्रश्न को एम्बेड करें।
- टॉप‑k समान चंक्स रिट्रीव करें (अक्सर फ़िल्टर और हाइब्रिड संकेतों के साथ)।
- विकल्पतः टॉप परिणामों को री‑रैंक करें।
- सर्वश्रेष्ठ चंक्स को स्रोत के रूप में LLM को भेजें (आम तौर पर सन्दर्भ/साइटेशन के साथ)।
pgvector, Pinecone और Weaviate में कैसे चुनूँ?
निर्णय इस बात पर आधारित होना चाहिए कि आप इसे कहाँ चलाना चाहते हैं और आपकी ऑपरेश्नल सहनशीलता कितनी है:
- pgvector: अगर आप पहले से Postgres चला रहे हैं और रिलेशनल डेटा + वेक्टर एक ही जगह रखना चाहते हैं।
- Pinecone: अगर आप एक पूर्ण‑मैनेज्ड सर्विस चाहते हैं और ऑपरेशन्स कम रखना चाहते हैं।
- Weaviate: अगर आप ओपन‑सोर्स, वेक्टर‑नेटीव सिस्टम चाहते हैं और स्वयं होस्ट करने में सहज हैं (या होस्टेड विकल्प लेना चाहते हैं)।
वेक्टर सर्च लागू करते समय सबसे सामान्य गलतियाँ कौन‑सी हैं?
अक्सर होने वाली गलतियाँ:
- मेटाडेटा फ़िल्टर/पर्समिशन्स को छोड़ देना (प्रासंगिक या प्रतिबंधित कंटेंट दिख सकता है)।
- एम्बेडिंग्स का वर्जनिंग नहीं रखना (embedding_model, model_version, chunking_version)—मॉडल बदलने पर रिट्रीवल चुपचाप बिगड़ सकता है।
- केवल “अच्छा लगना” पर निर्भर रहना—छोटी टेस्ट सेट (उदा. 30–100 वास्तविक क्वेरी) बनाएं और टॉप‑k प्रासंगिकता को ट्रैक करें।
- अपडेट/डिलीट्स को भूल जाना—एडिट पर री‑एम्बेड करें और हटाए गए ऑब्जेक्ट्स के वेक्टर हटाएं ताकि पुराना डेटा वापस न आ सके।