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

milvus-logo
LFAI
Home
  • Guide de l'utilisateur

Modèle de filtre

Dans Milvus, les expressions de filtre complexes comportant de nombreux éléments, en particulier celles qui impliquent des caractères non ASCII tels que les caractères CJK, peuvent affecter de manière significative les performances des requêtes. Pour y remédier, Milvus introduit un mécanisme de modélisation des expressions de filtre conçu pour améliorer l'efficacité en réduisant le temps consacré à l'analyse des expressions complexes. Cette page explique comment utiliser le modèle d'expression de filtre dans les opérations de recherche, de requête et de suppression.

Vue d'ensemble

Le modèle d'expression de filtre vous permet de créer des expressions de filtre avec des espaces réservés, qui peuvent être remplacés dynamiquement par des valeurs pendant l'exécution de la requête. En utilisant le modèle, vous évitez d'intégrer de grands tableaux ou des expressions complexes directement dans le filtre, ce qui réduit le temps d'analyse et améliore les performances de la requête.

Supposons que vous ayez une expression de filtre impliquant deux champs, age et city, et que vous souhaitiez trouver toutes les personnes dont l'âge est supérieur à 25 ans et qui vivent soit à "北京" (Pékin), soit à "上海" (Shanghai). Au lieu d'intégrer directement les valeurs dans l'expression du filtre, 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 lorsque la requête sera exécutée.

L'utilisation d'un modèle d'expression de filtre dans Milvus présente plusieurs avantages clés.

  • Réduction du temps d'analyse: en remplaçant les expressions de filtre complexes ou volumineuses par des caractères génériques, le système passe moins de temps à analyser et à traiter le filtre.

  • Amélioration des performances des requêtes: La réduction des frais généraux d'analyse permet d'améliorer les performances des requêtes, ce qui se traduit par des QPS plus élevés et des temps de réponse plus rapides.

  • Évolutivité: Au fur et à mesure que vos ensembles de données se développent et que les expressions de filtre deviennent plus complexes, le templating garantit 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 est utilisé pour spécifier les valeurs des espaces réservés. Le dictionnaire filter_params contient les valeurs dynamiques que Milvus utilisera pour remplacer 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élisation peut être appliqué aux opérations de requête dans Milvus. Dans la fonction query, vous définissez l'expression du filtre et utilisez filter_params pour spécifier les valeurs à remplacer.

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
)

En utilisant filter_params, Milvus gère efficacement l'insertion dynamique des valeurs, ce qui améliore la vitesse d'exécution de la requête.

Opérations de suppression

Vous pouvez également utiliser le modèle d'expression de filtre dans les opérations de suppression. Comme pour la recherche et la requête, l'expression filter définit les conditions et 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 lorsqu'il s'agit de conditions de filtrage complexes.

Conclusion

Le modelage des expressions de filtre est un outil essentiel pour optimiser les performances des requêtes dans Milvus. En utilisant les caractères génériques et le dictionnaire filter_params, vous pouvez réduire considérablement le temps passé à analyser des expressions de filtre complexes. Cela permet d'accélérer l'exécution des requêtes et d'améliorer les performances globales.

Traduit parDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

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