کروما یک برنامه پایگاه داده جاسازی شده است که به صورت یک پکیج درون کد ما قرار می‌گیرد. یکی از مزایای کروما، سادگی آن است. اگر نیاز به یک پایگاه داده برداری دارید تا حافظه LLM را در توسعه برنامه‌های LLM پشتیبانی کند و نمی‌خواهید یک پایگاه داده برداری مستقل نصب کنید، کروما یک انتخاب خوب است. در حال حاضر کتابخانه کروما از دو زبان پایتون و جاوا اسکریپت پشتیبانی می‌کند. این آموزش به طور اصلی بر اساس زبان پایتون است.

1. نصب Chromadb

pip install chromadb

توجه: نسخه فعلی chromadb با Python 3.11 سازگار نیست. توصیه می‌شود نسخه Python را پایین بیاورید.

2. مقدماتی کردن مشتری Chroma

import chromadb
chroma_client = chromadb.Client()

3. ایجاد یک مجموعه

یک مجموعه شبیه یک جدول در پایگاه داده کروما است، جایی که داده‌های برداری (شامل اسناد و داده‌های منبع دیگر) ذخیره می‌شود. برای ایجاد یک مجموعه به این صورت عمل کنید:

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

4. افزودن داده

بعد از تعریف یک مجموعه، داده‌ها را به مجموعه اضافه کنید. کروما داده‌های ما را ذخیره کرده و براساس بردار داده‌های متنی یک فهرست بردار ویژه ایجاد می‌کند تا بتوان بعداً به راحتی پرس و جو کرد.

4.1. محاسبه بردارها با استفاده از مدل تعبیه شده داخلی

collection.add(
    documents=["این یک سند است", "این یک سند دیگر است"],
    metadatas=[{"منبع": "منبع من"}, {"منبع": "منبع من"}],
    ids=["شناسه۱", "شناسه۲"]
)

4.2. مشخص کردن مقادیر بردارها هنگام اضافه کردن داده

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["این یک سند است", "این یک سند دیگر است"],
    metadatas=[{"منبع": "منبع من"}, {"منبع": "منبع من"}],
    ids=["شناسه۱", "شناسه۲"]
)

5. پرس‌وجوی داده

اکنون می‌توانید محتوای متن مشابه را پرس‌وجو کنید و کروما "n" نتیجه مشابه را برمی‌گرداند. در زیر یک مثال از پرس‌وجوی محتوای سند مشابه بر اساس پارامتر پرس‌وجوی query_texts آورده شده است:

results = collection.query(
    query_texts=["این یک سند پرس و جو است"],
    n_results=2
)

به طور پیش‌فرض، داده‌ها در کروما در حافظه ذخیره می‌شوند، بنابراین داده ها هنگام راه‌اندازی مجدد برنامه از بین می‌روند. البته، می‌توانید کروما را تنظیم کنید تا داده‌ها را در دیسک حافظه ثابت کند، بنابراین برنامه هنگام راه‌اندازی از دیسک داده بارگذاری می‌کند.