Plantillas de filtro

En Milvus, las expresiones de filtro complejas con numerosos elementos, especialmente aquellas que incluyen caracteres no ASCII, como los caracteres CJK, pueden afectar significativamente al rendimiento de las consultas. Para solucionar esto, Milvus introduce un mecanismo de plantillas de expresiones de filtro diseñado para mejorar la eficiencia al reducir el tiempo dedicado a analizar expresiones complejas. En esta página se explica cómo utilizar las plantillas de expresiones de filtro en operaciones de búsqueda, consulta y eliminación.

Descripción general

Las plantillas de expresiones de filtro te permiten crear expresiones de filtro con marcadores de posición, que pueden sustituirse dinámicamente por valores durante la ejecución de la consulta. Al utilizar plantillas, evitas incrustar grandes matrices o expresiones complejas directamente en el filtro, lo que reduce el tiempo de análisis y mejora el rendimiento de las consultas.

Supongamos que tienes una expresión de filtro que incluye dos campos, age y city, y que quieres encontrar a todas las personas cuya edad sea superior a 25 años y que vivan en «北京» (Pekín) o en «上海» (Shanghái). En lugar de incluir directamente los valores en la expresión de filtro, puedes utilizar una plantilla:

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

En este caso, « {age} » y « {city} » son marcadores de posición que se sustituirán por los valores reales en « filter_params » cuando se ejecute la consulta.

El uso de plantillas en las expresiones de filtro de Milvus ofrece varias ventajas clave:

  • Reducción del tiempo de análisis sintáctico: al sustituir expresiones de filtro largas o complejas por marcadores de posición, el sistema dedica menos tiempo a analizar y procesar el filtro.

  • Mejora del rendimiento de las consultas: al reducirse la sobrecarga de análisis, mejora el rendimiento de las consultas, lo que se traduce en un mayor número de consultas por segundo (QPS) y tiempos de respuesta más rápidos.

  • Escalabilidad: a medida que tus conjuntos de datos crecen y las expresiones de filtro se vuelven más complejas, el uso de plantillas garantiza que el rendimiento siga siendo eficiente y escalable.

Operaciones de búsqueda

Para las operaciones de búsqueda en Milvus, se utiliza la expresión « filter » para definir la condición de filtrado, y el parámetro « filter_params » para especificar los valores de los marcadores de posición. El diccionario « filter_params » contiene los valores dinámicos que Milvus utilizará para sustituir en la expresión 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,
)

En este ejemplo, Milvus sustituirá dinámicamente {age} por 25 y {city} por ["北京", "上海"] al ejecutar la búsqueda.

Operaciones de consulta

El mismo mecanismo de plantillas se puede aplicar a las operaciones de consulta en Milvus. En la función query, se define la expresión de filtro y se utiliza filter_params para especificar los valores que se van a sustituir.

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
)

Al utilizar filter_params, Milvus gestiona de forma eficiente la inserción dinámica de valores, lo que mejora la velocidad de ejecución de las consultas.

Operaciones de eliminación

También se pueden utilizar plantillas de expresiones de filtro en las operaciones de eliminación. Al igual que en las búsquedas y consultas, la expresión filter define las condiciones, y filter_params proporciona los valores dinámicos para los marcadores de posición.

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

Este enfoque mejora el rendimiento de las operaciones de eliminación, especialmente cuando se trata de condiciones de filtro complejas.

Conclusión

Las plantillas de expresiones de filtro son una herramienta esencial para optimizar el rendimiento de las consultas en Milvus. Mediante el uso de marcadores de posición y el diccionario filter_params, se puede reducir significativamente el tiempo dedicado al análisis de expresiones de filtro complejas. Esto se traduce en una ejecución más rápida de las consultas y un mejor rendimiento general.

Traducido porDeepL

Prueba Milvus gestionado gratis

Zilliz Cloud no da problemas, funciona con Milvus y es 10 veces más rápido.

Empezar
Feedback

¿Fue útil esta página?