🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI
Home
  • Guia do utilizador

Modelo de filtro

No Milvus, as expressões de filtro complexas com numerosos elementos, especialmente as que envolvem caracteres não ASCII como os caracteres CJK, podem afetar significativamente o desempenho da consulta. Para resolver este problema, o Milvus introduz um mecanismo de modelo de expressão de filtro concebido para melhorar a eficiência, reduzindo o tempo gasto a analisar expressões complexas. Esta página explica a utilização do modelo de expressão de filtro nas operações de pesquisa, consulta e eliminação.

Visão geral

O modelo de expressão de filtro permite-lhe criar expressões de filtro com marcadores de posição, que podem ser substituídos dinamicamente por valores durante a execução da consulta. Com a utilização de modelos, evita-se a incorporação de grandes matrizes ou expressões complexas diretamente no filtro, reduzindo o tempo de análise e melhorando o desempenho da consulta.

Digamos que você tenha uma expressão de filtro envolvendo dois campos, age e city, e queira encontrar todas as pessoas cuja idade seja maior que 25 anos e que morem em "北京" (Pequim) ou "上海" (Xangai). Em vez de incorporar diretamente os valores na expressão de filtro, pode utilizar um modelo.

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

Aqui, {age} e {city} são marcadores de posição que serão substituídos pelos valores reais em filter_params quando a consulta for executada.

O uso de modelos de expressão de filtro no Milvus tem várias vantagens importantes.

  • Redução do tempo de análise: Ao substituir expressões de filtro grandes ou complexas por placeholders, o sistema gasta menos tempo analisando e processando o filtro.

  • Melhoria do desempenho da consulta: Com a redução da sobrecarga de análise, o desempenho da consulta melhora, levando a QPS mais altos e tempos de resposta mais rápidos.

  • Escalabilidade: À medida que os conjuntos de dados crescem e as expressões de filtro se tornam mais complexas, a criação de modelos garante que o desempenho permaneça eficiente e escalável.

Operações de pesquisa

Para as operações de pesquisa no Milvus, a expressão filter é utilizada para definir a condição de filtragem e o parâmetro filter_params é utilizado para especificar os valores dos placeholders. O dicionário filter_params contém os valores dinâmicos que o Milvus utilizará para substituir a expressão de filtragem.

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,
)

Neste exemplo, o Milvus substituirá dinamicamente {age} por 25 e {city} por ["北京", "上海"] ao executar a pesquisa.

Operações de consulta

O mesmo mecanismo de criação de modelos pode ser aplicado às operações de consulta no Milvus. Na função query, define-se a expressão de filtragem e utiliza-se filter_params para especificar os valores a substituir.

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
)

Ao utilizar filter_params, o Milvus lida eficazmente com a inserção dinâmica de valores, melhorando a velocidade de execução da consulta.

Operações de exclusão

Também é possível utilizar modelos de expressão de filtro em operações de eliminação. De forma semelhante à pesquisa e consulta, a expressão filter define as condições e a expressão filter_params fornece os valores dinâmicos para os espaços reservados.

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

Esta abordagem melhora o desempenho das operações de eliminação, especialmente quando se lida com condições de filtragem complexas.

Conclusão

O modelo de expressão de filtro é uma ferramenta essencial para otimizar o desempenho das consultas no Milvus. Utilizando placeholders e o dicionário filter_params, é possível reduzir significativamente o tempo gasto na análise de expressões de filtro complexas. Isso leva a uma execução mais rápida da consulta e a um melhor desempenho geral.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Esta página foi útil?