کروما ایک آپن سورس ویکٹر ڈیٹا بیس ہے جو ویکٹر مشابہت تلاش ٹیکنالوجی استعمال کرتا ہے تاکہ بڑے پیمانے پر بلند بعد ویکٹر ڈیٹا کو فعالانے اور حاصل کرنے میں مؤثر ہو۔
کروما ایک اہم بات ہے کہ یہ ہماری کوڈ میں ایک پیکیج کی شکل میں لوڈ ہوتا ہے۔ اس کا فائدہ یہ ہے کہ یہ سیدھاپن میں موجود ہے۔ اگر آپ ایک LLM ایپلیکیشن تیار کر رہے ہیں جس کو ویکٹر ڈیٹابیس کی ضرورت ہو تاکہ LLM میموری کو پیش کرنے میں مدد مل سکے اور متن میں مشابہت تلاش کو سپورٹ کیا جا سکے، تو بغیر مستقل ویکٹر ڈیٹابیس انسٹال کی توجہ کے بغیر چروما ایک بہترین انتخاب ہے۔ یہ معمولاً جاوا اسکرپٹ پر مبنی ہے۔
1. پیکیج نصب کریں
npm install --save chromadb # yarn add chromadb
2. چروما کلائنٹ کو شروع کریں
const {ChromaClient} = require('chromadb');
const client = new ChromaClient();
3. کلیکشن بنائیں
چروما ڈیٹابیس میں کلیکشن ایک مائیکل میں مشابہ مخزن ہے، جہاں ویکٹر ڈیٹا (دستاویزات اور دیگر ماخذی ڈیٹا شامل ہیں) ذخیرہ ہوتا ہے۔ نیچے ایک کلیکشن بناتا ہے:
const {OpenAIEmbeddingFunction} = require('chromadb');
const embedder = new OpenAIEmbeddingFunction({openai_api_key: "آپ کی ای پی کی"})
const collection = await client.createCollection({name: "میری کلیکشن", embeddingFunction: embedder})
یہاں، ایک اوپن اے آئی ٹیکسٹ ایمبیڈنگ ماڈل استعمال کیا گیا ہے تاکہ ٹیکسٹ ویکٹرز حاصل کیے جائیں، لہذا آپ کو اپنے اوپن اے آئی اے پی آئی کی فراہمی کرنی ہوگی۔ البتہ، آپ کو اس پیرامیٹر embeddingFunction کو جاتی یا فراہم کردہ ماڈل کے ساتھ بدل بھر سکتے ہیں یا اسے کسی دوسرے آئی اے ٹیکسٹ ایمبیڈنگ ماڈل سے بدل دیں۔
4. ڈیٹا شامل کریں
کلیکشن کی تعریف کے بعد، ڈیٹا کلیکشن میں شامل کیا جاتا ہے، اور چروما ہمارے ڈیٹا کو ذخیرہ کرے گا اور متن کے ڈیٹا کے حساب سے dedicative ویکٹر انڈیکس بنائے گا تاکہ بعد میں آسان سوال کرنے کے لئے۔
await collection.add({
ids: ["id1", "id2"],
metadatas: [{"source": "my_source"}, {"source": "my_source"}],
documents: ["یہ ایک دستاویز ہے", "یہ ایک اور دستاویز ہے"],
})
پیش سے حساب شدہ ٹیکسٹ ویکٹرز استعمال کرتے ہوئے، چروما کے مدمق embedded وظیفہ کا استعمال نہیں کرتے ہوئے:
await collection.add({
ids: ["id1", "id2"],
embeddings: [[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
where: [{"source": "my_source"}, {"source": "my_source"}],
documents: ["یہ ایک دستاویز ہے", "یہ ایک اور دستاویز ہے"]
})
5. کلیکشن ڈیٹا کا سوال کریں
سوال کی شرائط کے لیے queryTexts سیٹ کرنے کے بنیاد پر، چروما سب سے مشابہ nResults نتائج واپس کرے گا۔
const results = await collection.query({
nResults: 2,
queryTexts: ["یہ ایک سوال دستاویز ہے"]
})