🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Руководство пользователя
  • Home
  • Docs
  • Руководство пользователя

  • Поиск и ранжирование

  • Фильтрация

  • Фильтрация шаблонов

Шаблонизация фильтров

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

Обзор

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

Допустим, у вас есть выражение фильтра, включающее два поля age и city, и вы хотите найти всех людей, чей возраст больше 25 лет и которые живут либо в "北京" (Пекин), либо в "上海" (Шанхай). Вместо того чтобы напрямую вставлять значения в выражение фильтра, можно использовать шаблон.

filter = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}

Здесь {age} и {city} - это заполнители, которые будут заменены реальными значениями в filter_params при выполнении запроса.

Использование шаблонов выражений фильтров в Milvus имеет несколько ключевых преимуществ.

  • Сокращение времени разбора: заменяя большие или сложные выражения фильтра на шаблоны, система тратит меньше времени на разбор и обработку фильтра.

  • Повышение производительности запросов: Благодаря уменьшению накладных расходов на парсинг повышается производительность запросов, что приводит к повышению QPS и ускорению времени отклика.

  • Масштабируемость: По мере роста наборов данных и усложнения выражений фильтров шаблонизация обеспечивает эффективность и масштабируемость производительности.

Поисковые операции

Для операций поиска в Milvus выражение filter используется для определения условия фильтрации, а параметр filter_params - для задания значений для заполнителей. Словарь filter_params содержит динамические значения, которые Milvus будет использовать для подстановки в выражение фильтра.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.search(
    "hello_milvus",
    vectors[:nq],
    filter=expr,
    limit=10,
    output_fields=["age", "city"],
    search_params={"metric_type": "COSINE", "params": {"search_list": 100}},
    filter_params=filter_params,
)

В этом примере Milvus динамически заменит {age} на 25 и {city} на ["北京", "上海"] при выполнении поиска.

Операции запроса

Тот же механизм шаблонизации может быть применен к операциям запроса в Milvus. В функции query вы определяете выражение фильтрации и используете filter_params для указания значений для подстановки.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.query(
    "hello_milvus",
    filter=expr,
    output_fields=["age", "city"],
    filter_params=filter_params
)

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

Операции удаления

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

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.delete(
    "hello_milvus",
    filter=expr,
    filter_params=filter_params
)

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

Заключение

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

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

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

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

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