يعد متجهات التضمين الطريقة الأصلية التي يمثل بها الذكاء الاصطناعي أي نوع من البيانات، ويستخدم العديد من الخوارزميات متجهات السمات لتمثيل البيانات. يمكن أن تمثل النصوص والصور، بالإضافة إلى الصوتيات ومقاطع الفيديو. هناك العديد من الأساليب لحساب متجهات السمات، بما في ذلك استخدام نماذج التضمين مفتوحة المصدر أو بعض خدمات السحابة APIs، مثل OpenAI API.
يوفر Chroma عبارة مهيأة بشكل خفيف لنماذج التضمين الشهيرة، مما يجعل من السهل استخدامها في تطبيقاتك.
Transformers.js
يمكن لـ Chroma تشغيل نماذج التضمين محليًا على جهازك باستخدام Transformers.js لتوليد متجهات السمات. يستخدم Transformers النموذج "Xenova/all-MiniLM-L6-v2". لتشغيل هذا، قم بتثبيت مكتبة Transformers.js عن طريق تشغيل npm install @xenova/transformers
في سطر الأوامر.
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: "name", embeddingFunction: embedder})
// قم بإضافة البيانات دون تحديد المتجاهات؛ ستقوم وظيفة الإضافة باستدعاء وظيفة التضمين لحساب متجاهات النص.
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"],
})
// الاستعلام عن البيانات، الذي سيقوم أيضًا بالاستدعاء وظيفة التضمين لحساب متجاهات الاستعلامات ومن ثم البحث عن بيانات مماثلة
const results = await collection.query({
nResults: 2,
queryTexts: ["lorem ipsum"]
})
})();
OPENAI
يوفر Chroma عبارة ملفتة لنموذج التضمين API لـ OpenAI. للقيام بالمكالمات إلى OpenAI API، ستحتاج إلى مفتاح API، الذي يمكنك الحصول عليه من خلال التسجيل في حساب OpenAI.
const {OpenAIEmbeddingFunction} = require('chromadb');
const embedder = new OpenAIEmbeddingFunction({openai_api_key: "apiKey"})
// استخدام مباشر
const embeddings = embedder.generate(["document1","document2"])
// حدد وظيفة التضمين باستخدام المعلمة embeddingFunction
const collection = await client.createCollection({name: "name", embeddingFunction: embedder})
const collection = await client.getCollection({name: "name", embeddingFunction: embedder})
يمكنك تمرير اختياريًا معلمة model_name لاختيار نموذج التضمين لـ OpenAI الذي ترغب في استخدامه. بشكل افتراضي، يستخدم Chroma text-embedding-ada-002.
الوظائف المخصصة للتضمين
إذا استخدمت نماذج تضمين أخرى، يمكنك دمج فئة EmbeddingFunction الخاصة بك واستدعاء النموذج الخاص بك المختار لتوليد المتجهات.
ملاحظة: الوظائف المخصصة للتضمين غير مطلوبة، حيث يمكنك حساب مسبقاً المتجهات باستخدام نموذج التضمين الخاص بك ثم استخدام المتجهات لقراءة وكتابة بيانات Chroma.