Фильтрация метаданных с помощью Zilliz Cloud Pipelines
Частый вопрос, который я слышу: «Нужна ли мне обычная SQL-база данных в дополнение к моей векторной базе данных?» Этот вопрос может быть необходим, если вы включаете дополнительную информацию вместе с неструктурированными данными. Кроме того, вы можете фильтровать данные для бизнес-целей перед выполнением поиска семантической схожести. Например:
В юридическом контексте вам может понадобиться искать фрагменты текста только в вашей базе данных договоров или в конкретном договоре.
В розничной торговле вы можете захотеть сузить поиск до определенного размера мужской обуви.
В поиске изображений вы можете захотеть найти постеры к фильмам, выпущенным в 2010–2016 годах, с оценками IMDB выше 7.0.
Возвращаясь к вопросу выше, мой ответ: «Нет, вам не нужно об этом беспокоиться, если вы используете векторную базу данных Milvus или Zilliz Cloud, полностью управляемый Milvus.» С Milvus вы можете выполнять гибридный векторный и скалярный поиск, чтобы добиться лучшей точности.
В следующих разделах мы обсудим скалярную фильтрацию или фильтрацию метаданных и то, как вы можете выполнять фильтрацию метаданных в Zilliz Cloud. Этот блог продолжает мой предыдущий блог о начале работы с RAG всего за 5 минут. Вы можете найти его код в этом ноутбуке и прокрутить вниз до ячейки #27.
Как понять фильтрацию метаданных в Milvus?
Векторная база данных Milvus позволяет выполнять векторный поиск, применяя логические выражения и ограничивая их условиями по атрибутам ваших данных. Атрибутами может быть любое поле, кроме вектора эмбеддинга неструктурированных данных. Кроме того, фильтрация метаданных сосуществует с векторным поиском в Milvus. Вы можете использовать любое поле, кроме поля вектора эмбеддинга, в выражении фильтра и использовать векторный индекс для поиска по полю вектора эмбеддинга. Milvus автоматически обрабатывает обе операции, когда вы указываете выражение фильтра в вашей команде поиска.
Как выполнить фильтрацию метаданных в Zilliz Cloud?
Чтобы быстро начать итерации, в этом руководстве я буду использовать Zilliz Cloud (Free Tier), полностью управляемый Milvus. Он размещает вашу базу данных на бессерверном облачном сервере, но вы по-прежнему можете взаимодействовать с ней локально, выполняя вызовы PyMilvus API. Я также буду использовать Zilliz Cloud Pipelines, встроенную функцию, чтобы кодировать неструктурированные данные в векторные эмбеддинги для упрощения операций.
Данные ниже взяты со страниц нашей документации Milvus Documentation.
Шаг 1: Создайте коллекцию (таблицу базы данных) и pipelines
Загрузите ваши данные в S3 или GCS.
Откройте другое окно браузера по адресу https://cloud.zilliz.com/ и создайте кластер «Starter».
- Добавьте имя коллекции и нажмите «Create Collection and Cluster».
Примечание: Когда вы создаете свой первый кластер Zilliz Cloud, по умолчанию вы также создаете новую коллекцию. Когда вы используете Zilliz Cloud Pipelines, вы создадите еще одну новую коллекцию.
- Перейдите через левое меню к Pipelines и следуйте пошаговым инструкциям, чтобы загрузить ваши данные.
a. Начните с «Ingestion Pipeline».
b. Выберите имя вашего кластера, добавьте имена коллекции и pipeline и нажмите «Add a Function».
c. Добавьте имя и нажмите “Add”. На этом этапе конвейера вы не можете ничего изменить.
d. Необязательно: нажмите “Add a Function” еще раз
e. Необязательно: назовите шаг поля метаданных, поле метаданных и тип. Нажмите “Add”.
- Нажмите “Create Ingestion Pipeline”. Теперь вы создали новый конвейер загрузки и новую коллекцию.
Нажмите “Create Deletion and Search Pipelines”, чтобы создать конвейеры удаления и поиска.
Чтобы найти конвейер “Ingestion,” нажмите значок Run > в разделе “Actions.”
- Укажите ваши данные. В AWS самый простой способ — временный предварительно подписанный URL. Выберите, когда хотите им поделиться, затем скопируйте предварительно подписанный URL.
- Вставьте предварительно подписанный URL и нажмите “Run.”
- Обновите браузер и проверьте, корректны ли новая коллекция и схема.
Выполните запрос в веб-консоли или с помощью вызовов API.
Шаг 2. Поиск в веб-консоли
Найдите конвейер “Search” в разделе Actions > нажмите значок Run.
В пользовательском интерфейсе введите свой вопрос и нажмите “Run.”
Отредактируйте “filter” с помощью булевого выражения. Вы должны увидеть, что фильтр был применен к результатам поиска.
Вот и все! Вы можете использовать булевые выражения, чтобы фильтровать поиск по любому полю, кроме вектора эмбеддинга неструктурированных данных. Поиск по полю вектора эмбеддинга выполняется с использованием векторного индекса AUTOINDEX в Pipelines.
Кроме того, в Pipelines эмбеддинги нормализуются, чтобы метрики IP и косинусного расстояния работали эквивалентно. Модель эмбеддингов по умолчанию, используемая в Pipelines на данный момент, — bge-large-en-v1.5.
Шаг 3. Поиск через API
Вы также можете выполнять поиск с помощью вызовов API (код Python находится в этом блокноте; прокрутите вниз до Cell#27. )
Вам понадобятся две вещи.
Токен API Zilliz
Pipeline-ID
Вы можете получить токен API на главном экране кластера.
Чтобы получить Pipeline-ID, найдите конвейер “Search,” посмотрите в столбце “Pipeline-ID” и нажмите значок копирования. Вставьте Pipeline ID в URL вашего API-вызова.
import requests, json
url = "https://controller.api.gcp-us-west1.zillizcloud.com/v1/pipelines/pipe-xxxx/run"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {TOKEN}",
}
data = {
"data": {
"query_text": SAMPLE_QUESTION
},
"params": {
"limit": TOP_K,
"offset": 0,
# Any of these fields can be used in filter expression.
"outputFields": ["chunk_text", "chunk_id", "doc_name", "source"],
"filter": "doc_name == 'param.html'"
}
}
# Send the POST request
response = requests.post(url, headers=headers, json=data)
Вот и всё! Теперь вы научились выполнять поиск с фильтрацией в Zilliz Cloud через API.
Краткое содержание
Подобно объединению данных в базе данных SQL, позволяющему выполнять SQL-запросы, фильтрация метаданных позволяет выполнять гибридный векторный и скалярный поиск в Milvus или Zilliz Cloud для получения более точных результатов, соответствующих вашим конкретным потребностям. Вы можете ограничить поиск определёнными условиями, указав логические выражения, которые фильтруют скалярные поля или поле первичного ключа. В выражении фильтра можно использовать любое поле, кроме вектора эмбеддинга, и выполнять поиск по полю вектора эмбеддинга с помощью векторного индекса. Milvus или Zilliz Cloud автоматически обрабатывает обе операции, когда вы указываете выражение фильтра в команде поиска.
Полный код для этой демонстрации находится в этом notebook; прокрутите вниз до Cell#27. Попробуйте.
Читать далее

From Vector Database to Vector Lakebase
Zilliz offers a fully managed Vector Lakebase powered by Milvus, unifying real-time vector search, lake-scale discovery, and Al data operations.

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.



