Nhúng, còn được gọi là vectơ đặc trưng, là cách mà trí tuệ nhân tạo biểu diễn bất kỳ loại dữ liệu nào, khiến chúng rất phù hợp để sử dụng với các công cụ và thuật toán trí tuệ nhân tạo khác nhau. Chúng có thể biểu diễn văn bản, hình ảnh, cũng như âm thanh và video. Có nhiều lựa chọn để tạo dữ liệu vectơ đặc trưng, bao gồm sử dụng các mô hình nhúng văn bản mã nguồn mở hoặc gọi các API từ các dịch vụ đám mây.

Chroma cung cấp một lớp bọc nhẹ cho các mô hình nhúng phổ biến, giúp việc sử dụng chúng trong ứng dụng của bạn trở nên dễ dàng. Khi tạo một bộ sưu tập Chroma, bạn có thể thiết lập một chức năng nhúng sẽ tự động tính toán vectơ văn bản khi lưu và cập nhật dữ liệu văn bản.

Lưu ý: Bạn cũng có thể chọn không sử dụng chức năng nhúng bọc của Chroma để tính toán vectơ. Bạn có thể chọn bất kỳ mô hình nhúng nào để tính toán trước dữ liệu vectơ văn bản.

Để nhận chức năng nhúng từ Chroma, nhập mô-đun embedding_functions từ chromadb.utils.

from chromadb.utils import embedding_functions

Mô hình mặc định: all-MiniLM-L6-v2

Mặc định, Chroma sử dụng mô hình all-MiniLM-L6-v2 từ Sentence Transformers để tính toán vectơ. Mô hình nhúng này có thể tạo các vectơ câu và văn bản. Chức năng của mô hình nhúng này chạy trên máy cục bộ và yêu cầu tải các tệp mô hình (điều này sẽ được thực hiện tự động).

default_ef = embedding_functions.DefaultEmbeddingFunction()

Mô hình Transformers

Chroma cũng có thể sử dụng bất kỳ mô hình Sentence Transformers nào để tính toán vectơ.

sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")

Bạn có thể truyền một tham số tùy chọn model_name để chọn mô hình Sentence Transformers bạn muốn sử dụng. Mặc định, Chroma sử dụng all-MiniLM-L6-v2. Bạn có thể tìm kiếm tên mô hình trên Hugging Face.

Mô hình OpenAI

Chroma cung cấp một lớp bọc thuận tiện cho API nhúng của OpenAI. Điều này yêu cầu gọi giao diện OpenAI và một khóa API. Bạn có thể nhận một khóa API bằng cách đăng ký một tài khoản OpenAI.

Chức năng nhúng này phụ thuộc vào gói openai Python, có thể cài đặt bằng pip install openai.

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="KHÓA_API_CỦA_BẠN",
                model_name="text-embedding-ada-002"
            )

Để sử dụng mô hình nhúng OpenAI trên các nền tảng như Azure, bạn có thể sử dụng các tham số api_baseapi_type:

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="KHÓA_API_CỦA_BẠN",
                api_base="ĐƯỜNG_DẪN_CƠ_BẢN_API_CỦA_BẠN",
                api_type="azure",
                model_name="text-embedding-ada-002"
            )

Chức năng nhúng tùy chỉnh

Bạn có thể tạo chức năng nhúng của riêng mình để làm việc với Chroma chỉ bằng cách triển khai các phương thức của lớp cơ sở EmbeddingFunction.

from chromadb.api.types import Documents, EmbeddingFunction, Embeddings

class MyEmbeddingFunction(EmbeddingFunction):
    def __call__(self, texts: Documents) -> Embeddings:
        return embeddings