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

Chroma पॉपुलर एम्बेडिंग मॉडल्स के लिए एक हल्का व्रैपर प्रदान करता है, जिससे आप अपने अनुप्रयोगों में उन्हें आसानी से उपयोग कर सकते हैं। जब आप एक Chroma संग्रह बना रहे हैं, तो आप एक एम्बेडिंग फ़ंक्शन सेट कर सकते हैं जो पाठ डेटा को सहेजते समय और अपडेट करते समय स्वचालित रूप से टेक्स्ट वेक्टर्स की गणना करेगा।

टिप्पणी: आप चुन सकते हैं कि क्या आप Chroma के संक्षिप्त एम्बेडिंग फ़ंक्शन का उपयोग न करके टेक्स्ट वेक्टर डेटा की पूर्व-गणना करने के लिए कोई भी एम्बेडिंग मॉडल चुनें।

च्रोमा से एम्बेडिंग फ़ंक्शन प्राप्त करने के लिए, chromadb.utils से embedding_functions मॉड्यूल इम्पोर्ट करें।

from chromadb.utils import embedding_functions

डिफ़ॉल्ट मॉडल: all-MiniLM-L6-v2

डिफ़ॉल्ट रूप से, Chroma डेटा वेक्टर्स की गणना करने के लिए Sentence Transformers के all-MiniLM-L6-v2 मॉडल का उपयोग करता है। इस एम्बेडिंग मॉडल से वाक्य और दस्तावेज वेक्टर्स बनाए जा सकते हैं। इस एम्बेडिंग मॉडल की कार्यक्षमता स्थानीय मशीन पर चलती है और मॉडल फ़ाइलों को डाउनलोड करने की आवश्यकता होती है (जो स्वचालित रूप से हो जाता है)।

default_ef = embedding_functions.DefaultEmbeddingFunction()

ट्रांसफ़ॉर्मर्स मॉडल

Chroma यात्री है कि किसी भी Sentence Transformers मॉडल का उपयोग वेक्टर्स की गणना करने के लिए किया जा सकता है।

sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")

आप वैकल्पिक रूप से model_name पैरामीटर को पास कर सकते हैं जिससे आप यह चुन सकते हैं कि कौन सा Sentence Transformers मॉडल आप उपयोग करना चाहते हैं। च्रोमा डिफ़ॉल्ट रूप से all-MiniLM-L6-v2 का उपयोग करता है। आप Hugging Face पर मॉडल नाम खोज सकते हैं।

OpenAI मॉडल

Chroma ओपनएआई के एम्बेडिंग एपीआई के लिए एक सुविधाजनक रैपर प्रदान करता है। इसे ओपनएआई इंटरफ़ेस को कॉल करने और एक एपीआई कुंजी की आवश्यकता होती है। आप ओपनएआई खाता पंजीकृत करके एक एपीआई कुंजी प्राप्त कर सकते हैं।

यह एम्बेडिंग फ़ंक्शन openai Python पैकेज पर निर्भर है, जिसे pip install openai का उपयोग करके इंस्टॉल किया जा सकता है।

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="आपकी एपीआई कुंजी",
                model_name="text-embedding-ada-002"
            )

ओपनएआई एम्बेडिंग मॉडल का उपयोग ऐसे प्लेटफ़ॉर्म पर करने के लिए जैसे Azure, आप api_base और api_type पैरामीटर इस्तेमाल कर सकते हैं:

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="आपकी एपीआई कुंजी",
                api_base="आपका एपीआई बेस पथ",
                api_type="अज़्यूर",
                model_name="text-embedding-ada-002"
            )

कस्टम एम्बेडिंग फ़ंक्शन

आप च्रोमा के साथ काम करने के लिए खुद का एम्बेडिंग फ़ंक्शन बना सकते हैं जिसके लिए आपको सिर्फ़ EmbeddingFunction बेस क्लास की मेथड्स को अंमल करना होगा।

from chromadb.api.types import Documents, EmbeddingFunction, Embeddings

class MyEmbeddingFunction(EmbeddingFunction):
    def __call__(self, texts: Documents) -> Embeddings:
        return embeddings