एम्बेडिंग वेक्टर्स किसी भी प्रकार के डेटा को प्रस्तुत करने के लिए कृत्रिम बुद्धिमत्ता के लिए प्राकृतिक रूप से हैं, और कई एल्गोरिदम विशेषक वेक्टर्स का उपयोग करते हैं डेटा को प्रस्तुत करने के लिए. वे पाठ, छवियाँ, साथ ही ऑडियो और वीडियो को प्रस्तुत कर सकते हैं. विशेषक वेक्टर्स की गणना के लिए कई विधियाँ हैं, जैसे कि खुला स्रोत एम्बेडिंग मॉडल या कुछ क्लाउड सर्विस API, जैसे कि openai API.

क्रोमा ने प्रसिद्ध एम्बेडिंग मॉडल के लिए एक हल्के में लिपिकर प्रदान करने से यह आसान बना दिया है कि आप अपने अनुप्रयोगों में इस्तेमाल करें.

Transformers.js

Chroma आपके मशीन पर स्थानीय रूप से एम्बेडिंग मॉडल चला सकता है जो feature vectors उत्पन्न करने के लिए Transformers.js का उपयोग करता है. Transformers "Xenova/all-MiniLM-L6-v2" मॉडल का उपयोग करता है. इसके लिए, कमांड लाइन में npm install @xenova/transformers चला कर Transformers.js लाइब्रेरी को इंस्टॉल करें.

const {ChromaClient} = require('chromadb');
const client = new ChromaClient({path: "http://localhost:8000"});
const {TransformersEmbeddingFunction} = require('chromadb');
const embedder = new TransformersEmbeddingFunction();

(async () => {
    // embeddingFunction पैरामीटर के माध्यम से उपयोग करने के लिए एम्बेडिंग फ़ंक्शन को निर्दिष्ट करें
    const collection = await client.getOrCreateCollection({name: "नाम", embeddingFunction: embedder})

    // वेक्टर्स की गणना के लिए add फ़ंक्शन एम्बेडिंग फ़ंक्शन फ़ंक्शन को कॉल करेगा
    await collection.add({
        ids: ["id1", "id2", "id3"],
        metadatas: [{"अध्याय": "3", "श्लोक": "16"}, {"अध्याय": "3", "श्लोक": "5"}, {"अध्याय": "29", "श्लोक": "11"}], 
        documents: ["लोरेम इप्सम...", "दस्तावेज2", "दस्तावेज3"], 
    })

    // डेटा क्वेरी, जो उसी एम्बेडिंग फ़ंक्शन फ़ंक्शन को कॉल करने के लिए वेक्टर्स की गणना करेगा और फिर समान डेटा की तलाश करेगा
    const results = await collection.query({
        nResults: 2, 
        queryTexts: ["लोरेम इप्सम"]
    }) 
})();

OPENAI

Chroma OpenAI के एम्बेडिंग मॉडल API के लिए एक सुविधाजनक लिपिकर प्रदान करता है. OpenAI API को आपको आवेदन करके एक API कुंजी की आवश्यकता होगी।

const {OpenAIEmbeddingFunction} = require('chromadb');
const embedder = new OpenAIEmbeddingFunction({openai_api_key: "API कुंजी"})

// सीधे उपयोग करें 
const embeddings = embedder.generate(["दस्तावेज1","दस्तावेज2"])

// embeddingFunction पैरामीटर का उपयोग करके एम्बेडिंग फ़ंक्शन को निर्दिष्ट करें
const collection = await client.createCollection({name: "नाम", embeddingFunction: embedder})
const collection = await client.getCollection({name: "नाम", embeddingFunction: embedder})

आप वैकल्पिक रूप से model_name पैरामीटर पास कर सकते हैं जिससे आप उपयोग करना चाहते हैं ओपनएआई एम्बेडिंग मॉडल को चुन सकते हैं। च्रोमा डिफ़ॉल्ट रूप से text-embedding-ada-002 का उपयोग करता है.

अनुकूल एम्बेडिंग फ़ंक्शन

यदि आप अन्य एम्बेडिंग मॉडल का प्रयोग करते हैं, तो आप स्व चयनित मॉडल को उत्पन्न वेक्टर्स के लिए बुला सकते हैं EmbeddingFunction बेस क्लास को एकीकृत करके.

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

class MyEmbeddingFunction {
  private api_key: string;

  constructor(api_key: string) {
    this.api_key = api_key;
  }

  public async generate(texts: string[]): Promise<number[][]> {
    // आपके अपने मॉडल को बुलाने के लिए वेक्टर्स की गणना करें
    return embeddings;
  }
}