ক্রোমা এটি এম্বেডেড ডাটাবেস অ্যাপ্লিকেশন, যা একটি প্যাকেজের রূপে আমাদের কোডে এম্বেড করা হয়। ক্রোমার সুবিধা হলো এর সাধারণতা। যদি আপনি এলএলএম অ্যাপ্লিকেশন ডেভেলপমেন্টে এলএলএম মেমোরি ইমপ্লিমেন্ট করার জন্য একটি ভেক্টর ডাটাবেসের প্রয়োজনীয়তা হয় এবং আপনি নির্ভরযোগ্য ভেক্টর ডাটাবেস ইনস্টল করতে চান না, তবে ক্রোমা একটি ভালো পছন্দ। বর্তমানে, ক্রোমা লাইব্রেরি দুইটি ভাষা সাপোর্ট করে: পাইথন এবং জাভাস্ক্রিপ্ট। এই টিউটোরিয়ালটি প্রধানত পাইথনে ভিত্তি।

1. Chromadb ইনস্টল করুন

pip install chromadb

লক্ষ্য: বর্তমান সংস্করণে ক্রোমাডিবি পাইথন 3.11 এর সাথে বন্ধুত্বপূর্ণ নয়। পাইথন সংস্করণ নিচুন করার সুপারিশ করা হয়।

2. ক্রোমা ক্লায়েন্ট ইনিশিয়ালাইজ করুন

import chromadb
chroma_client = chromadb.Client()

3. কালেকশন তৈরি করুন

কালেকশনটি ক্রোমা ডাটাবেসের মধ্যে ডকুমেন্ট এবং অন্যান্য উৎস ডাটা সংরক্ষণ করা হয়ে থাকে, যেখানে ভেক্টর ডেটা সংরক্ষণ করা হয়। কালেকশন তৈরি করুন এবং এটি পরিবর্তন করুন:

collection = chroma_client.create_collection(name="tizi365")

4. ডাটা যোগ করুন

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

4.1. অভ্যন্তরীণ ইম্বেডিং মডেল ব্যবহার করে ভেক্টর গণনা করুন

collection.add(
    documents=["এটি একটি ডকুমেন্ট", "এটি আরেকটি ডকুমেন্ট"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)

4.2. ডাটা যোগ করার সময় ভেক্টর মান নির্ধারণ করুন

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["এটি একটি ডকুমেন্ট", "এটি আরেকটি ডকুমেন্ট"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)

5. ডাটা কোয়ারি করুন

এখন আপনি মিলিমিটার পাঠ্য বিষয়ে কুয়ারি করতে পারেন, এবং ক্রোমা "এন" সবচেয়ে সম্মিলিত ফলাফল ফিরিয়ে দেবে। নিম্নলিখিত একটি উদাহরণ হল কুয়ারি সামিল ডকুমেন্ট বিষয়ে সম্মিলিত ডাটা ভিত্তিক:

results = collection.query(
    query_texts=["এটি একটি কুয়ারি ডকুমেন্ট"],
    n_results=2
)

ডিফল্টভাবে, ক্রোমা ডাটা মেমোরিতে সংরক্ষিত থাকে, তার ফলে প্রোগ্রাম পুনরায় চালু করা হলে ডাটাটি হারিয়ে যায়। বিশেষত, আপনি ক্রোমাকে সৎতা নিয়ে ডেটাটি হার্ড ডিস্কে সংরক্ষণ করতে পারেন, তাহলে প্রোগ্রাম চালু করা হলে ডাটা ডিস্ক থেকে লোড করবে।