ক্রোমা হল একটি ওপেন-সোর্স ভেক্টর ডাটাবেস, যা ভেক্টর সিমিল্যারিটি সার্চ প্রযুক্তিকে ব্যবহার করে বড় অংশে উচ্চ-মাত্রার ভেক্টর ডেটা দ্রুততার সাথে সংরক্ষণ এবং পুনরাবৃত্তি করার জন্য।

ক্রোমা একটি অ্যাপ্লিকেশন-ইম্বেডেড ডাটাবেস, যা প্যাকেজ হিসেবে আমাদের কোডে ইম্বেডেড করা হয়। এর সুবিধা তার সাধারণতাইতে অবস্থান। আপনি যদি একটি 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: "your_api_key"})
const collection = await client.createCollection({name: "my_collection", embeddingFunction: embedder})

এখানে, পাঠের ভেক্টর গণনা করতে একটি ওপেনএই টেক্সট ইম্বেডিং মডেল ব্যবহার করা হয়, তাই আপনাকে আপনার ওপেনএই এপি কী সরবরাহ করতে হবে। নিশ্চয়ই, আপনি প্রস্তুত অঙ্গ বা অন্য একটি ওপেন-সোর্স টেক্সট ইম্বেডিং মডেল দিয়ে এটি প্যারামিটারটি অপসারিত করে বা পরিবর্তন করে ব্যবহার করতে পারেন।

4. ডেটা যুক্ত করুন

সংগ্রহ সংজ্ঞায়িত একবার ডেটা বাংলি করা, এবং চ্রোমা আমাদের ডেটা সংরক্ষণ করবে এবং পরবর্তীতে সহজ কুয়ারির জন্য পাঠের ভেক্টরের উপর একটি পুনরাবৃত্তি ভিত্তি ভেক্টর সूচী তৈরি করবে।

await collection.add({
    ids: ["id1", "id2"],
    metadatas: [{"source": "my_source"}, {"source": "my_source"}],
    documents: ["এটা একটি নথি", "এটা আরও একটি নথি"],
}) 

পূর্বে গণনা করা টেক্সট ভেক্টর ব্যবহার করে, চ্রোমার স্ব-ইম্বেডিং ফাংশন ব্যবহার করতে ছাড়া:

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. সংগ্রহ ডেটা কুয়ারী করুন

কুয়ারীর শর্টার্টেক্সের জন্য, ক্রোমা আপনাকে সবচেয়ে প্রায় নতুন nResults ফলাফল প্রদান করবে, এবং বিস্তৃত কুয়ারি পত্রসমূহ সেটের উপর ভিত্তি করে।

const results = await collection.query({
    nResults: 2, 
    queryTexts: ["এটা একটি জিজ্ঞাসা নথি"]
})