Embedding vektörleri, yapay zekânın her türlü veriyi temsil etmek için kullandığı doğal yoldur ve birçok algoritma veriyi temsil etmek için özellik vektörlerini kullanır. Metin, resim, ses ve video gibi verileri temsil edebilirler. Açık kaynak gömme modelleri veya bazı bulut hizmeti API'ları gibi yöntemler kullanılarak özellik vektörlerinin hesaplanması için birçok yöntem vardır, örneğin openai API.
Chroma, popüler gömme modelleri için hafif bir sarmalayıcı sağlayarak bunları uygulamalarınızda kullanmanızı kolaylaştırır.
Transformers.js
Chroma, özellik vektörleri oluşturmak için Transformers.js'yi kullanarak makine üzerinde yerel olarak gömme modellerini çalıştırabilir. Transformers, "Xenova/all-MiniLM-L6-v2" modelini kullanır. Bunu çalıştırmak için komut satırında npm install @xenova/transformers
komutunu çalıştırarak Transformers.js kitaplığını yükleyin.
const {ChromaClient} = require('chromadb');
const client = new ChromaClient({path: "http://localhost:8000"});
const {TransformersEmbeddingFunction} = require('chromadb');
const embedder = new TransformersEmbeddingFunction();
(async () => {
// Gömme fonksiyonunu embeddingFunction parametresi aracılığıyla belirtin
const collection = await client.getOrCreateCollection({name: "name", embeddingFunction: embedder})
// Vektörleri belirtmeden veri ekleyin; ekleme işlevi metin vektörlerini hesaplamak için gömme işlevi fonksiyonunu çağıracaktır
await collection.add({
ids: ["id1", "id2", "id3"],
metadatas: [{"chapter": "3", "verse": "16"}, {"chapter": "3", "verse": "5"}, {"chapter": "29", "verse": "11"}],
documents: ["lorem ipsum...", "doc2", "doc3"],
})
// Sorgu verisi, sorgu metinleri için vektörleri hesaplamak için gömme işlevi fonksiyonunu da çağıracaktır ve ardından benzer verileri arayacaktır
const results = await collection.query({
nResults: 2,
queryTexts: ["lorem ipsum"]
})
})();
OPENAI
Chroma, OpenAI'nin gömme model API'sı için pratik bir sarmalayıcı sağlar. OpenAI API'sine çağrı yapmak için, OpenAI hesabı için kaydolmanızla elde edebileceğiniz bir API anahtarına ihtiyacınız olacaktır.
const {OpenAIEmbeddingFunction} = require('chromadb');
const embedder = new OpenAIEmbeddingFunction({openai_api_key: "apiKey"})
// doğrudan kullanın
const embeddings = embedder.generate(["belge1","belge2"])
// Gömme işlevini embeddingFunction parametresi aracılığıyla belirtin
const collection = await client.createCollection({name: "name", embeddingFunction: embedder})
const collection = await client.getCollection({name: "name", embeddingFunction: embedder})
İsteğe bağlı olarak, kullanmak istediğiniz OpenAI gömme modelini seçmek için model_name parametresini iletebilirsiniz. Varsayılan olarak, Chroma text-embedding-ada-002 kullanır.
Özel Gömme Fonksiyonları
Eğer başka gömme modelleri kullanıyorsanız, EmbeddingFunction temel sınıfını entegre edebilir ve kendi seçtiğiniz modele vektörler oluşturmak için çağrıda bulunabilirsiniz.
Not: Özel gömme fonksiyonları gereklisi değildir, çünkü kendi gömme modelinizi kullanarak vektörleri önceden hesaplayabilir ve ardından vektörleri okumak ve yazmak için Chroma verilerini kullanabilirsiniz.
class MyEmbeddingFunction {
private api_key: string;
constructor(api_key: string) {
this.api_key = api_key;
}
public async generate(texts: string[]): Promise<number[][]> {
// Vektörleri hesaplamak için kendi modelinizi çağırın
return embeddings;
}
}