🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI
Home
  • Guía del usuario

Plantillas de filtro

En Milvus, las expresiones de filtro complejas con numerosos elementos, especialmente las que implican caracteres no ASCII como los caracteres CJK, pueden afectar significativamente al rendimiento de la consulta. Para solucionar este problema, Milvus introduce un mecanismo de plantillas de expresiones de filtro diseñado para mejorar la eficacia reduciendo el tiempo empleado en analizar expresiones complejas. Esta página explica el uso de plantillas de expresiones de filtro en operaciones de búsqueda, consulta y eliminación.

Descripción general

Las plantillas de expresiones de filtrado permiten crear expresiones de filtrado con marcadores de posición que pueden sustituirse dinámicamente por valores durante la ejecución de la consulta. El uso de plantillas permite evitar la incrustación de matrices de gran tamaño o expresiones complejas directamente en el filtro, lo que reduce el tiempo de análisis y mejora el rendimiento de las consultas.

Supongamos que tiene una expresión de filtro que incluye dos campos, age y city, y desea encontrar a todas las personas cuya edad sea superior a 25 años y que vivan en "北京" (Pekín) o "上海" (Shanghái). En lugar de incrustar directamente los valores en la expresión del filtro, puede utilizar una plantilla.

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

Aquí, {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 de expresión de filtro en Milvus tiene varias ventajas clave.

  • Reducción del tiempo de análisis: Al sustituir expresiones de filtro grandes o complejas por marcadores de posición, el sistema emplea menos tiempo en analizar y procesar el filtro.

  • Mejora del rendimiento de las consultas: Al reducirse la sobrecarga de análisis sintáctico, mejora el rendimiento de las consultas, lo que se traduce en mayores QPS y tiempos de respuesta más rápidos.

  • Escalabilidad: A medida que sus conjuntos de datos crecen y las expresiones de filtro se vuelven más complejas, la creación de plantillas garantiza que el rendimiento siga siendo eficiente y escalable.

Operaciones de búsqueda

Para las operaciones de búsqueda en Milvus, la expresión filter se utiliza para definir la condición de filtrado, y el parámetro filter_params se utiliza 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 filtrado.

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 puede aplicarse 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 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
)

Utilizando filter_params, Milvus maneja eficientemente la inserción dinámica de valores, mejorando la velocidad de ejecución de la consulta.

Operaciones de eliminación

También puede utilizar plantillas de expresiones de filtrado en operaciones de eliminación. De forma similar a la búsqueda y la consulta, 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. Utilizando marcadores de posición y el diccionario filter_params, puede reducir significativamente el tiempo empleado en analizar expresiones de filtro complejas. Esto conduce a una ejecución más rápida de la consulta y a un mejor rendimiento general.

Try Managed Milvus for Free

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

Get Started
Feedback

¿Fue útil esta página?