Modelos de expressões de filtro

No Milvus, expressões de filtro complexas com numerosos elementos, especialmente aquelas que envolvem caracteres não ASCII, como os caracteres CJK, podem afetar significativamente o desempenho das consultas. Para resolver esta questão, o Milvus introduz um mecanismo de modelos de expressões de filtro concebido para melhorar a eficiência, reduzindo o tempo gasto na análise de expressões complexas. Esta página explica como utilizar os modelos de expressões de filtro nas operações de pesquisa, consulta e eliminação.

Visão geral

Os modelos de expressões de filtro permitem-lhe criar expressões de filtro com espaços reservados, que podem ser substituídos dinamicamente por valores durante a execução da consulta. Ao utilizar modelos, evita incorporar matrizes de grandes dimensões ou expressões complexas diretamente no filtro, reduzindo o tempo de análise e melhorando o desempenho das consultas.

Suponhamos que tem uma expressão de filtro que envolve dois campos, age e city, e que pretende encontrar todas as pessoas com idade superior a 25 anos e que vivam em «北京» (Pequim) ou em «上海» (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 espaços reservados que serão substituídos pelos valores reais em filter_params quando a consulta for executada.

A utilização de modelos de expressões de filtro no Milvus apresenta várias vantagens fundamentais:

  • Tempo de análise reduzido: ao substituir expressões de filtro grandes ou complexas por marcadores de posição, o sistema gasta menos tempo a analisar e a processar o filtro.

  • Melhor desempenho das consultas: Com a redução da sobrecarga de análise, o desempenho das consultas melhora, levando a um maior QPS e a tempos de resposta mais rápidos.

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

Operações de pesquisa

Para 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 marcadores de posição. O dicionário filter_params contém os valores dinâmicos que o Milvus utilizará para substituir na expressão de filtro.

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 modelos pode ser aplicado às operações de consulta no Milvus. Na função query, define-se a expressão de filtro e utiliza-se o 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 de forma eficiente com a inserção dinâmica de valores, melhorando a velocidade de execução da consulta.

Operações de eliminação

Também é possível utilizar modelos de expressões de filtro em operações de eliminação. À semelhança da pesquisa e da consulta, a expressão filter define as condições, e o filter_params fornece os valores dinâmicos para os marcadores de posição.

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

Os modelos de expressões de filtro são uma ferramenta essencial para otimizar o desempenho das consultas no Milvus. Ao utilizar marcadores de posição e o dicionário filter_params, é possível reduzir significativamente o tempo gasto na análise de expressões de filtro complexas. Isto resulta numa execução mais rápida das consultas e num melhor desempenho geral.

Traduzido porDeepL

Experimente o Milvus gerenciado gratuitamente

O Zilliz Cloud é descomplicado, powered by Milvus e 10x mais rápido.

Começar
Feedback

Esta página foi útil?