Изменение схемы внешней коллекцииCompatible with Milvus 3.0.x

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

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

Ограничения

  • В настоящее время внешние коллекции поддерживают добавление полей после их создания. Другие изменения схемы, такие как удаление полей, переименование полей, изменение типов данных полей, изменение размерности векторов или пересопоставление external_field, не поддерживаются.

  • Можно добавлять только те поля, которые уже существуют во внешнем источнике данных. Эта операция сопоставляет существующее внешнее поле с полем Milvus. Она не создает новое поле во внешнем источнике данных и не заполняет исходные данные.

  • Добавление полей типа « SPARSE_FLOAT_VECTOR » в существующую внешнюю коллекцию не поддерживается.

  • Добавление полей StructArray в существующую внешнюю коллекцию не поддерживается. Если вашей внешней коллекции требуется поле StructArray, определите его в схеме коллекции при создании коллекции.

Добавление поля

Перед добавлением поля в внешнюю коллекцию убедитесь, что это поле уже существует во внешнем источнике данных. Затем вызовите метод ` add_collection_field() `, чтобы сделать это поле доступным в Milvus, установив для параметра ` external_field ` имя поля во внешнем источнике данных. Установите для параметра ` data_type ` тип данных Milvus, соответствующий типу поля во внешнем источнике данных. Например, если сопоставленное поле хранит значения двойной точности, используйте ` DataType.DOUBLE`.

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

Добавление скалярного поля

Используйте « add_collection_field() » для добавления скалярного поля, если необходимо вернуть это поле в результатах запроса или использовать его в фильтрах. В следующем примере добавляется поле « score », которое сопоставляется с полем « score » во внешнем источнике данных.

from pymilvus import DataType, MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus",
)

client.add_collection_field(
    collection_name="product_embeddings",
    field_name="score",
    data_type=DataType.DOUBLE,
    nullable=True,
    external_field="score",
)

В данном примере « score » — это имя поля в Milvus, а « external_field="score" » сопоставляет его полю « score » во внешнем источнике данных. Укажите « nullable=True », поскольку поле добавляется после того, как коллекция уже была создана.

Добавление векторного поля

Вы также можете добавить векторное поле, если внешний источник данных уже содержит векторные значения. Укажите вектор data_type и dim так, чтобы они соответствовали векторному полю во внешнем источнике данных.

В следующем примере добавляется плотное векторное поле с именем image_embedding_v2.

from pymilvus import DataType, MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus",
)

client.add_collection_field(
    collection_name="product_embeddings",
    field_name="image_embedding_v2",
    data_type=DataType.FLOAT_VECTOR,
    dim=768,
    nullable=True,
    external_field="image_embedding_v2",
)

Если вы планируете выполнять векторный поиск по добавленному векторному полю, создайте индекс для этого поля перед обновлением внешней коллекции.

index_params = client.prepare_index_params()

index_params.add_index(
    field_name="image_embedding_v2",
    index_type="AUTOINDEX",
    metric_type="COSINE",
)

client.create_index(
    collection_name="product_embeddings",
    index_params=index_params,
)

Обновление внешней коллекции

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

client.refresh_external_collection(
    collection_name="product_embeddings"
)

ПереведеноDeepL

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?