Вставки, также известные как векторы признаков, являются встроенным способом, с помощью которого искусственный интеллект представляет любой тип данных, что делает их хорошо подходящими для использования с различными инструментами и алгоритмами искусственного интеллекта. Они могут представлять текст, изображения, а также аудио и видео. Существует множество вариантов генерации данных векторов признаков, включая использование открытых моделей вставки текста или вызов API от облачных сервисов.

Chroma предоставляет легкую обертку для популярных моделей вставки, что делает их легко использовать в ваших приложениях. При создании коллекции Chroma вы можете установить функцию вставки, которая автоматически вычислит векторы текста при сохранении и обновлении текстовых данных.

Примечание: Вы также можете выбрать не использовать инкапсулированную функцию вставки Chroma для вычисления векторов. Вы можете выбрать любую модель вставки, чтобы предварительно вычислить данные векторов текста.

Для получения функции вставки из Chroma импортируйте модуль embedding_functions из chromadb.utils.

from chromadb.utils import embedding_functions

Модель по умолчанию: all-MiniLM-L6-v2

По умолчанию Chroma использует модель all-MiniLM-L6-v2 от Sentence Transformers для вычисления векторов. Эта модель вставки может создавать векторы предложений и документов. Функциональность этой модели вставки работает на локальной машине и требует загрузки файлов модели (которая выполняется автоматически).

default_ef = embedding_functions.DefaultEmbeddingFunction()

Модель Transformers

Chroma также может использовать любую модель Sentence Transformers для вычисления векторов.

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

Вы можете передать необязательный параметр model_name, чтобы выбрать модель Sentence Transformers, которую вы хотите использовать. По умолчанию Chroma использует all-MiniLM-L6-v2. Вы можете найти названия моделей на Hugging Face.

Модель OpenAI

Chroma предоставляет удобную обертку для API вставки OpenAI. Для этого требуется вызов интерфейса OpenAI и ключ API. Ключ API можно получить, зарегистрировавшись в учетной записи OpenAI.

Эта функция вставки зависит от пакета openai для Python, который можно установить с помощью pip install openai.

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="ВАШ_API_КЛЮЧ",
                model_name="text-embedding-ada-002"
            )

Чтобы использовать модель вставки OpenAI на платформах, таких как Azure, вы можете использовать параметры api_base и api_type:

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="ВАШ_API_КЛЮЧ",
                api_base="ВАШ_БАЗОВЫЙ_ПУТЬ_API",
                api_type="azure",
                model_name="text-embedding-ada-002"
            )

Пользовательская функция вставки

Вы можете создать свою собственную функцию вставки для работы с Chroma, просто реализовав методы базового класса EmbeddingFunction.

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

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