Modèles d'expressions de filtrage

Dans Milvus, les expressions de filtrage complexes comportant de nombreux éléments, en particulier celles contenant des caractères non ASCII tels que les caractères CJK, peuvent considérablement affecter les performances des requêtes. Pour remédier à cela, Milvus introduit un mécanisme de modèles d’expressions de filtrage conçu pour améliorer l’efficacité en réduisant le temps consacré à l’analyse syntaxique des expressions complexes. Cette page explique comment utiliser les modèles d’expressions de filtrage dans les opérations de recherche, de requête et de suppression.

Présentation

Les modèles d’expressions de filtrage vous permettent de créer des expressions de filtrage comportant des espaces réservés, qui peuvent être remplacés dynamiquement par des valeurs lors de l’exécution de la requête. Grâce à ces modèles, vous évitez d’intégrer directement de grands tableaux ou des expressions complexes dans le filtre, ce qui réduit le temps d’analyse et améliore les performances des requêtes.

Supposons que vous disposiez d’une expression de filtrage impliquant deux champs, age et city, et que vous souhaitiez trouver toutes les personnes âgées de plus de 25 ans et résidant soit à « 北京 » (Pékin), soit à « 上海 » (Shanghai). Au lieu d’intégrer directement les valeurs dans l’expression de filtrage, vous pouvez utiliser un modèle :

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

Ici, {age} et {city} sont des espaces réservés qui seront remplacés par les valeurs réelles de filter_params lors de l’exécution de la requête.

L’utilisation de modèles d’expressions de filtrage dans Milvus présente plusieurs avantages majeurs :

  • Réduction du temps d’analyse: en remplaçant les expressions de filtrage volumineuses ou complexes par des espaces réservés, le système consacre moins de temps à l’analyse et au traitement du filtre.

  • Amélioration des performances des requêtes: grâce à la réduction de la charge liée à l’analyse, les performances des requêtes s’améliorent, ce qui se traduit par un QPS plus élevé et des temps de réponse plus courts.

  • Évolutivité: à mesure que vos ensembles de données s’étoffent et que les expressions de filtrage gagnent en complexité, les modèles garantissent que les performances restent efficaces et évolutives.

Opérations de recherche

Pour les opérations de recherche dans Milvus, l’expression filter est utilisée pour définir la condition de filtrage, et le paramètre filter_params sert à spécifier les valeurs des espaces réservés. Le dictionnaire filter_params contient les valeurs dynamiques que Milvus utilisera pour remplacer les espaces réservés dans l’expression de filtrage.

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

Dans cet exemple, Milvus remplacera dynamiquement {age} par 25 et {city} par ["北京", "上海"] lors de l’exécution de la recherche.

Opérations de requête

Le même mécanisme de modèles peut être appliqué aux opérations de requête dans Milvus. Dans la fonction query, vous définissez l’expression de filtrage et utilisez filter_params pour spécifier les valeurs à substituer.

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
)

Grâce à l’utilisation de ` filter_params`, Milvus gère efficacement l’insertion dynamique de valeurs, ce qui améliore la vitesse d’exécution des requêtes.

Opérations de suppression

Vous pouvez également utiliser les modèles d’expression de filtrage dans les opérations de suppression. Comme pour la recherche et la requête, l’expression ` filter ` définit les conditions, tandis que ` filter_params ` fournit les valeurs dynamiques pour les espaces réservés.

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

Cette approche améliore les performances des opérations de suppression, en particulier lorsque les conditions de filtrage sont complexes.

Conclusion

Les modèles d’expressions de filtrage constituent un outil essentiel pour optimiser les performances des requêtes dans Milvus. En utilisant des espaces réservés et le dictionnaire filter_params, vous pouvez réduire considérablement le temps consacré à l’analyse syntaxique d’expressions de filtrage complexes. Cela se traduit par une exécution plus rapide des requêtes et de meilleures performances globales.

Traduit parDeepL

Essayez Milvus géré gratuitement

Zilliz Cloud est sans souci, propulsé par Milvus et 10 fois plus rapide.

Commencer
Feedback

Cette page a-t - elle été utile ?