च्रोमा एक ओपन-सोर्स वेक्टर डेटाबेस है जो वेक्टर समानता खोज प्रौद्योगिकी का उपयोग करता है ताकि बड़े पैमाने पर उच्च-आयामी वेक्टर डेटा को कुशलतापूर्वक संग्रहीत और पुनःप्राप्त किया जा सके।
च्रोमा एक ऐप्लिकेशन-संदर्भित डेटाबेस है जो हमारे कोड में एक पैकेज के रूप में संदर्भित किया जाता है। इसका फायदा इसमें है की यह सरलता में है। अगर आपको एक वेक्टर डेटाबेस की आवश्यकता होती है जिसका उपयोग LLM मेमोरी को अमल करने और पाठ-समानता भाषा खोज को समर्थित करने के लिए करना होता है, बिना एक स्वतंत्र वेक्टर डेटाबेस इंस्टॉल करना चाहिए, तो च्रोमा एक अच्छा विकल्प है। यह ट्यूटोरियल मुख्य रूप से जावास्क्रिप्ट पर आधारित है।
1. पैकेज इंस्टॉलेशन
npm install --save chromadb # yarn add chromadb
2. च्रोमा क्लाइंट का प्रारंभीकरण
const {ChromaClient} = require('chromadb');
const client = new ChromaClient();
3. कलेक्शन बनाएं
च्रोमा डेटाबेस में कलेक्शन एक टेबल के समान होता है, जहां वेक्टर डेटा (संलग्न दस्तावेज़ और अन्य स्रोत डेटा सहित) संग्रहीत होता है। नीचे एक कलेक्शन बनाता है:
const {OpenAIEmbeddingFunction} = require('chromadb');
const embedder = new OpenAIEmbeddingFunction({openai_api_key: "तुम्हारी_एपीआई_कुंजी"})
const collection = await client.createCollection({name: "my_collection", embeddingFunction: embedder})
यहाँ, एक openai पाठ संघटन मॉडल का उपयोग पाठ वेक्टर की गणना के लिए किया गया है, इसलिए आपको अपनी openai एपीआई कुंजी प्रदान करनी होगी। बेशक, आप इसे छोड़ सकते हैं और च्रोमा में स्थापित मॉडल का उपयोग कर सकते हैं, या उसे दूसरे ओपन-सोर्स पाठ संघटन मॉडल से बदल सकते हैं।
4. डेटा जोड़ें
कलेक्शन को परिभाषित करने के बाद, डेटा को कलेक्शन में जोड़ा जाता है, और च्रोमा हमारे डेटा को संग्रहीत करेगा और टेक्स्ट डेटा के वेक्टरों पर आधारित एक विशेष वेक्टर सूची बनाएगा, जिससे बाद में आसानी से पूछा जा सकता है।
await collection.add({
ids: ["id1", "id2"],
metadatas: [{"source": "my_source"}, {"source": "my_source"}],
documents: ["यह एक दस्तावेज़ है", "यह एक और दस्तावेज़ है"],
})
पूर्व-गणित पाठ वेक्टर का उपयोग करते हुए, च्रोमा के संदर्भित संघटन कार्य का उपयोग किए बिना:
await collection.add({
ids: ["id1", "id2"],
embeddings: [[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
where: [{"source": "my_source"}, {"source": "my_source"}],
documents: ["यह एक दस्तावेज़ है", "यह एक और दस्तावेज़ है"]
})
5. कलेक्शन डेटा का पूछताछ
पूछताछ शर्तों के लिए सेट की गई queryTexts के आधार पर, च्रोमा सबसे समान nResults परिणाम वापस करेगा।
const results = await collection.query({
nResults: 2,
queryTexts: ["यह एक पूछताछ दस्तावेज़ है"]
})