CohereCompatible with Milvus 2.6.x
В этой теме описывается, как настраивать и использовать функции встраивания Cohere в Milvus.
Выбор модели встраивания
Milvus поддерживает модели встраивания, предоставляемые Cohere. Ниже приведены доступные на данный момент модели встраивания для быстрого ознакомления:
Название модели |
Размеры |
Максимальное количество токенов |
Описание |
|---|---|---|---|
embed-english-v3.0 |
1,024 |
512 |
Модель, позволяющая классифицировать текст или превращать его в вкрапления. Только английский язык. |
embed-multilingual-v3.0 |
1,024 |
512 |
Обеспечивает многоязычную классификацию и поддержку встраивания. Поддерживаемые языки можно посмотреть здесь. |
embed-english-light-v3.0 |
384 |
512 |
Уменьшенная и более быстрая версия |
embed-multilingual-light-v3.0 |
384 |
512 |
Уменьшенная и более быстрая версия |
embed-english-v2.0 |
4,096 |
512 |
Старая модель встраивания, позволяющая классифицировать текст или превращать его в встраивание. Только английский язык. |
embed-english-light-v2.0 |
1,024 |
512 |
Уменьшенная и более быстрая версия embed-english-v2.0. Почти такая же по возможностям, но гораздо быстрее. Только английский язык. |
embed-multilingual-v2.0 |
768 |
256 |
Обеспечивает многоязычную классификацию и поддержку встраивания. Поддерживаемые языки можно посмотреть здесь. |
Подробности см. в разделе Модели встраивания Cohere.
Настройка учетных данных
Milvus должен знать ваш API-ключ Cohere, прежде чем сможет запрашивать встраиваемые модели. Milvus предоставляет два способа настройки учетных данных:
Файл конфигурации (рекомендуется): Храните ключ API в
milvus.yaml, чтобы при каждом перезапуске узла он подбирался автоматически.Переменные окружения: Вводим ключ во время развертывания - идеально для Docker Compose.
Выберите один из двух описанных ниже методов - конфигурационный файл проще поддерживать на пустом металле и виртуальных машинах, а маршрут с переменными окружения подходит для контейнерных рабочих процессов.
Если ключ API для одного и того же провайдера присутствует и в файле конфигурации, и в переменной окружения, Milvus всегда использует значение в milvus.yaml и игнорирует переменную окружения.
Вариант 1: Конфигурационный файл (рекомендуется и имеет более высокий приоритет)
Храните ваши API-ключи в milvus.yaml; Milvus считывает их при запуске и переопределяет любую переменную окружения для того же провайдера.
** Объявите свои ключи в разделе
credential:Вы можете перечислить один или много API-ключей - дайте каждому из них ярлык, который вы придумаете и на который будете ссылаться позже.
# milvus.yaml credential: apikey_dev: # dev environment apikey: <YOUR_DEV_KEY> apikey_prod: # production environment apikey: <YOUR_PROD_KEY>Размещение ключей API здесь делает их постоянными при перезагрузке и позволяет вам переключаться между ключами, просто меняя метку.
Укажите Milvus, какой ключ использовать для вызовов OpenAI
В том же файле укажите провайдеру Cohere на метку, которую вы хотите использовать.
function: textEmbedding: providers: cohere: credential: apikey_dev # ← choose any label you defined above # url: https://api.cohere.com/v2/embed # (optional) custom urlЭто свяжет определенный ключ с каждым запросом, который Milvus отправляет на конечную точку встраивания Cohere.
Вариант 2: Переменная среды
Используйте этот метод, если вы запускаете Milvus с Docker Compose и предпочитаете хранить секреты вне файлов и образов.
Milvus возвращается к переменной окружения только в том случае, если ключ для провайдера не найден в milvus.yaml.
Переменная |
Требуется |
Описание |
|---|---|---|
|
Да |
Ваш действительный ключ API Cohere. |
В файле docker-compose.yaml установите переменную окружения MILVUSAI_COHERE_API_KEY.
# docker-compose.yaml (standalone service section)
standalone:
# ... other configurations ...
environment:
# ... other environment variables ...
# Set the environment variable pointing to the OpenAI API key inside the container
MILVUSAI_COHERE_API_KEY: <MILVUSAI_COHERE_API_KEY>
Блок environment: вводит ключ только в контейнер Milvus, оставляя вашу хостовую ОС нетронутой. Подробнее см. в разделе Настройка Milvus с помощью Docker Compose.
Использование функции встраивания
После настройки учетных данных выполните следующие шаги, чтобы определить и использовать функции встраивания.
Шаг 1: Определите поля схемы
Чтобы использовать функцию встраивания, создайте коллекцию с определенной схемой. Эта схема должна включать как минимум три необходимых поля:
Первичное поле, которое уникально идентифицирует каждую сущность в коллекции.
Скалярное поле, в котором хранятся исходные данные для встраивания.
Векторное поле, зарезервированное для хранения векторных вкраплений, которые функция будет генерировать для скалярного поля.
Следующий пример определяет схему с одним скалярным полем "document" для хранения текстовых данных и одним векторным полем "dense" для хранения вкраплений, которые будут сгенерированы модулем Function. Не забудьте задать размерность вектора (dim), чтобы она соответствовала выходным данным выбранной вами модели встраивания.
from pymilvus import MilvusClient, DataType, Function, FunctionType
# Initialize Milvus client
client = MilvusClient(
uri="http://localhost:19530",
)
# Create a new schema for the collection
schema = client.create_schema()
# Add primary field "id"
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
# Add scalar field "document" for storing textual data
schema.add_field("document", DataType.VARCHAR, max_length=9000)
# Add vector field "dense" for storing embeddings.
# IMPORTANT: Set dim to match the exact output dimension of the embedding model.
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1024)
Шаг 2: Добавьте функцию встраивания в схему
Модуль Function в Milvus автоматически преобразует исходные данные, хранящиеся в скалярном поле, во вкрапления и сохраняет их в явно определенном векторном поле.
В примере ниже добавлен модуль Function (cohere_func), который преобразует скалярное поле "document" в эмбеддинги, сохраняя полученные векторы в векторном поле "dense", определенном ранее.
Определив функцию встраивания, добавьте ее в схему коллекции. Это даст указание Milvus использовать указанную функцию встраивания для обработки и хранения вкраплений из ваших текстовых данных.
# Define embedding function specifically for embedding model provider
text_embedding_function = Function(
name="cohere_func", # Unique identifier for this embedding function
function_type=FunctionType.TEXTEMBEDDING, # Indicates a text embedding function
input_field_names=["document"], # Scalar field(s) containing text data to embed
output_field_names=["dense"], # Vector field(s) for storing embeddings
params={ # Provider-specific embedding parameters (function-level)
"provider": "cohere", # Must be set to "cohere"
"model_name": "embed-english-v3.0", # Specifies the embedding model to use
# Optional parameters:
# "credential": "apikey_dev", # Optional: Credential label specified in milvus.yaml
# "url": "https://api.cohere.com/v2/embed", # Defaults to the official endpoint if omitted
# "truncate": "NONE", # Specifies how the API will handle inputs longer than the maximum token length.
}
)
# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)
Следующие шаги
После настройки функции встраивания обратитесь к обзору функций для получения дополнительных указаний по настройке индекса, примеров вставки данных и операций семантического поиска.