क्रोमा एक एम्बेडेड डेटाबेस एप्लिकेशन है जो हमारे कोड में एक पैकेज के रूप में एम्बेडेड होता है। क्रोमा का फायदा उसकी सरलता में है। यदि आपको एक वेक्टर डेटाबेस की आवश्यकता है एलएलएम ऍम विकसित एलएलएम एप्लिकेशन्स में लेकिन आप एक स्वतंत्र वेक्टर डेटाबेस इंस्टॉल नहीं करना चाहते हैं, एक अनुपस्थित वेक्टर डेटाबेस, क्रोमा एक अच्छी विकल्प है। वर्तमान में, क्रोमा लाइब्रेरी दो भाषाओं का समर्थन करती है: पायथन और जावास्क्रिप्ट। यह ट्यूटोरियल मुख्य रूप से पायथन पर आधारित है।

1. क्रोमाडीबी स्थापित करें

पिप इंस्टॉल chromadb

ध्यान दें: वर्तमान संस्करण की chromadb पायथन 3.11 के साथ अनुकूलन में अच्छी नहीं है। पायथन संस्करण को डाउनग्रेड करने की सिफारिश की जाती है।

2. क्रोमा क्लाइंट को प्रारंभ करें

आयात chromadb
chroma_client = chromadb.Client()

3. संग्रह बनाएं

एक संग्रह, क्रोमा डेटाबेस में एक तालिका के समान है, जहां वेक्टर डेटा (जिसमें दस्तावेज़ और अन्य स्रोत डेटा शामिल हैं) संग्रहीत किया जाता है। निम्नलिखित प्रकार से एक संग्रह बनाएं:

collection = chroma_client.create_collection(name="tizi365")

4. डेटा जोड़ें

एक संग्रह को परिभाषित करने के बाद, संग्रह में डेटा जोड़ें। क्रोमा हमारे डेटा को संग्रहीत करेगा और तकसीम सरल जज़्बे के आधार पर एक विशेष वेक्टर सूचक सराहित करेगा।

4.1. निर्मित एम्बेडिंग मॉडल का उपयोग करके वेक्टर की गणना करें

collection.add(
    documents=["यह एक दस्तावेज़ है", "यह एक और दस्तावेज़ है"],
    metadatas=[{"source": "मेरा स्रोत"}, {"source": "मेरा स्रोत"}],
    ids=["id1", "id2"]
)

4.2. डेटा जोड़ते समय वेक्टर मान निर्दिष्ट करें

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["यह एक दस्तावेज़ है", "यह एक और दस्तावेज़ है"],
    metadatas=[{"source": "मेरा स्रोत"}, {"source": "मेरा स्रोत"}],
    ids=["id1", "id2"]
)

5. डेटा क्वेरी करें

अब आप समान पाठ सामग्री क्वेरी कर सकते हैं, और क्रोमा "n" सबसे समान परिणाम वापस करेगी। नीचे वाक्यांश में एक उदाहरण है जिसमें क्वेरी_टेक्स्ट्स क्वेरी पैरामीटर के आधार पर समान दस्तावेज़ सामग्री क्वेरी करने का है:

results = collection.query(
    query_texts=["यह एक क्वेरी दस्तावेज़ है"],
    n_results=2
)

डिफ़ॉल्ट रूप से, क्रोमा में डेटा मेमोरी में संग्रहित होता है, इसलिए कार्यक्रम को पुनरारंभ करने पर डेटा खो जाता है। बेशक, आप चाहें तो क्रोमा को कठिन डिस्क में डेटा संग्रहीत करने के लिए सेट कर सकते हैं, जिससे प्रोग्राम पुनः प्रारंभ होते समय डेटा डिस्क से लोड करेगा।