Фильтрация метаданных с помощью 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. Попробуйте.
Читать далее

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

My Wife Wanted Dior. I Spent $600 on Claude Code to Vibe-Code a 2M-Line Database Instead.
Write tests, not code reviews. How a test-first workflow with 6 parallel Claude Code sessions turns a 2M-line C++ codebase into a daily shipping pipeline.

Smarter Autoscaling in Zilliz Cloud: Always Optimized for Every Workload
With the latest upgrade, Zilliz Cloud introduces smarter autoscaling—a fully automated, more streamlined, elastic resource management system.



