🚀 Try Zilliz Cloud, the fully managed Milvus, for free—experience 10x faster performance! Try Now>>

milvus-logo
LFAI
Casa

Templatura dei filtri

In Milvus, le espressioni di filtro complesse con numerosi elementi, in particolare quelle che coinvolgono caratteri non ASCII come i caratteri CJK, possono influire significativamente sulle prestazioni delle query. Per ovviare a questo problema, Milvus introduce un meccanismo di template delle espressioni di filtro progettato per migliorare l'efficienza riducendo il tempo di analisi delle espressioni complesse. Questa pagina spiega come utilizzare il templating delle espressioni di filtro nelle operazioni di ricerca, interrogazione e cancellazione.

Panoramica

Il templating delle espressioni di filtro consente di creare espressioni di filtro con segnaposto, che possono essere sostituiti dinamicamente con valori durante l'esecuzione della query. La templatura evita di incorporare grandi array o espressioni complesse direttamente nel filtro, riducendo i tempi di analisi e migliorando le prestazioni della query.

Supponiamo di avere un'espressione di filtro che coinvolge due campi, age e city, e di voler trovare tutte le persone la cui età è superiore a 25 anni e che vivono in "北京" (Pechino) o "上海" (Shanghai). Invece di inserire direttamente i valori nell'espressione del filtro, è possibile utilizzare un modello.

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

In questo caso, {age} e {city} sono segnaposto che verranno sostituiti con i valori effettivi in filter_params quando la query verrà eseguita.

L'uso del template delle espressioni di filtro in Milvus offre diversi vantaggi.

  • Riduzione del tempo di analisi: sostituendo le espressioni di filtro complesse o di grandi dimensioni con dei segnaposto, il sistema spende meno tempo per l'analisi e l'elaborazione del filtro.

  • Migliori prestazioni delle query: Grazie alla riduzione dell'overhead di parsing, le prestazioni delle query migliorano, portando a QPS più elevati e a tempi di risposta più rapidi.

  • Scalabilità: Man mano che i dataset crescono e le espressioni dei filtri diventano più complesse, il templating garantisce prestazioni efficienti e scalabili.

Operazioni di ricerca

Per le operazioni di ricerca in Milvus, l'espressione filter è usata per definire la condizione di filtraggio e il parametro filter_params è usato per specificare i valori dei segnaposto. Il dizionario filter_params contiene i valori dinamici che Milvus utilizzerà per sostituire l'espressione del 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,
)

In questo esempio, Milvus sostituirà dinamicamente {age} con 25 e {city} con ["北京", "上海"] durante l'esecuzione della ricerca.

Operazioni di query

Lo stesso meccanismo di template può essere applicato alle operazioni di interrogazione in Milvus. Nella funzione query si definisce l'espressione del filtro e si usa filter_params per specificare i valori da sostituire.

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
)

Utilizzando filter_params, Milvus gestisce in modo efficiente l'inserimento dinamico dei valori, migliorando la velocità di esecuzione delle query.

Operazioni di cancellazione

È possibile utilizzare la templatura delle espressioni di filtro anche nelle operazioni di cancellazione. Come per le ricerche e le query, l'espressione filter definisce le condizioni e filter_params fornisce i valori dinamici per i segnaposto.

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

Questo approccio migliora le prestazioni delle operazioni di cancellazione, soprattutto quando si tratta di condizioni di filtro complesse.

Conclusione

La templatura delle espressioni di filtro è uno strumento essenziale per ottimizzare le prestazioni delle query in Milvus. Utilizzando i segnaposto e il dizionario filter_params, è possibile ridurre significativamente il tempo di analisi di espressioni di filtro complesse. Questo porta a un'esecuzione più rapida delle query e a migliori prestazioni complessive.

Tradotto daDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

Questa pagina è stata utile?