Chroma là một ứng dụng cơ sở dữ liệu nhúng được nhúng vào mã của chúng ta dưới dạng một gói. Ưu điểm của Chroma là sự đơn giản. Nếu bạn cần một cơ sở dữ liệu vector để triển khai bộ nhớ LLM trong việc phát triển ứng dụng LLM, nó hỗ trợ tìm kiếm ngôn ngữ tương đồng văn bản và bạn không muốn cài đặt một cơ sở dữ liệu vector độc lập, Chroma là một lựa chọn tốt. Hiện tại, thư viện Chroma hỗ trợ hai ngôn ngữ: Python và JavaScript. Hướng dẫn này chủ yếu dựa trên Python.
1. Cài đặt Chromadb
pip install chromadb
Lưu ý: Phiên bản hiện tại của chromadb không tương Thích với Python 3.11. Đề xuất giảm phiên bản Python.
2. Khởi tạo client Chroma
import chromadb
chroma_client = chromadb.Client()
3. Tạo bộ sưu tập
Bộ sưu tập tương tự như một bảng trong cơ sở dữ liệu chroma, nơi dữ liệu vector (bao gồm tài liệu và dữ liệu nguồn khác) được lưu trữ. Tạo bộ sưu tập như sau:
collection = chroma_client.create_collection(name="tizi365")
4. Thêm dữ liệu
Sau khi xác định một bộ sưu tập, thêm dữ liệu vào bộ sưu tập. Chroma sẽ lưu trữ dữ liệu của chúng ta và tạo một chỉ mục vector đặc biệt dựa trên vector của dữ liệu văn bản để dễ dàng truy vấn sau này.
4.1. Tính toán vector bằng mô hình nhúng tích hợp sẵn
collection.add(
documents=["Đây là một tài liệu", "Đây là một tài liệu khác"],
metadatas=[{"nguồn": "nguồn của tôi"}, {"nguồn": "nguồn của tôi"}],
ids=["id1", "id2"]
)
4.2. Chỉ định giá trị vector khi thêm dữ liệu
collection.add(
embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
documents=["Đây là một tài liệu", "Đây là một tài liệu khác"],
metadatas=[{"nguồn": "nguồn của tôi"}, {"nguồn": "nguồn của tôi"}],
ids=["id1", "id2"]
)
5. Truy vấn dữ liệu
Bây giờ bạn có thể truy vấn nội dung văn bản tương tự và Chroma sẽ trả về "n" kết quả tương tự nhất. Dưới đây là một ví dụ về truy vấn nội dung tài liệu tương tự dựa trên tham số truy vấn query_texts:
results = collection.query(
query_texts=["Đây là một tài liệu truy vấn"],
n_results=2
)
Mặc định, dữ liệu trong Chroma được lưu trữ trong bộ nhớ, vì vậy dữ liệu sẽ bị mất khi chương trình khởi động lại. Tất nhiên, bạn có thể thiết lập Chroma để lưu trữ dữ liệu vào đĩa cứng, vì vậy chương trình sẽ tải dữ liệu từ đĩa khi khởi động.