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

milvus-logo
LFAI
Home
  • Guide de l'utilisateur

Explication du filtrage

Milvus offre de puissantes capacités de filtrage qui permettent une interrogation précise de vos données. Les expressions de filtre vous permettent de cibler des champs scalaires spécifiques et d'affiner les résultats de la recherche avec différentes conditions. Ce guide explique comment utiliser les expressions de filtre dans Milvus, avec des exemples axés sur les opérations de requête. Vous pouvez également appliquer ces filtres dans les requêtes de recherche et de suppression.

Opérateurs de base

Milvus prend en charge plusieurs opérateurs de base pour filtrer les données.

  • Opérateurs de comparaison: == Les opérateurs de comparaison : , !=, >, <, >=, et <= permettent de filtrer sur la base de champs numériques, de texte ou de date.

  • Filtres de plage: IN et LIKE permettent de faire correspondre des plages ou des ensembles de valeurs spécifiques.

  • Opérateurs arithmétiques: +, -, *, /, %, et `` sont utilisés pour les calculs impliquant des champs numériques.

  • Opérateurs logiques: AND, OR, et NOT ou '&&', '||', '~', '!' combinent plusieurs conditions dans des expressions complexes.

Exemple : Filtrage par couleur

Pour trouver des entités de couleur primaire (rouge, vert ou bleu) dans un champ scalaire color, utilisez l'expression de filtrage suivante.

filter='color in ["red", "green", "blue"]'

Exemple : Filtrage des champs JSON

Milvus permet de référencer des clés dans des champs JSON. Par exemple, si vous avez un champ JSON product avec les clés price et model, et que vous voulez trouver des produits avec un modèle spécifique et un prix inférieur à 1 850, utilisez l'expression de filtre suivante.

filter='product["model"] == "JSN-087" and product["price"] < 1850'

Exemple : Filtrage des champs de type tableau

Si vous disposez d'un champ de tableau history_temperatures contenant des enregistrements de température et que vous souhaitez trouver des observatoires dont la 10e température enregistrée dépasse 23 °C, utilisez cette expression.

filter='history_temperatures[10] > 23'

Pour plus d'informations sur ces opérateurs de base, reportez-vous à la section Opérateurs de base.

Modèles d'expression de filtrage

Lorsque le filtrage utilise des caractères CJK, le traitement peut être plus complexe en raison des jeux de caractères plus importants et des différences d'encodage. Cela peut entraîner des performances plus lentes, en particulier avec l'opérateur IN.

Milvus introduit un modèle d'expression de filtre pour optimiser les performances lors de l'utilisation de caractères CJK. En séparant les valeurs dynamiques de l'expression de filtre, le moteur de requête traite l'insertion de paramètres plus efficacement.

Exemple

Pour trouver les personnes âgées de plus de 25 ans vivant à "北京" (Pékin) ou "上海" (Shanghai), utilisez le modèle d'expression suivant.

filter = "age > 25 and city in ['北京', '上海']"

Pour améliorer les performances, utilisez cette variante avec des paramètres.

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

Cette approche permet de réduire la charge d'analyse et d'améliorer la vitesse d'interrogation. Pour plus d'informations, voir la section Modélisation des filtres.

Opérateurs spécifiques aux types de données

Milvus fournit des opérateurs de filtrage avancés pour des types de données spécifiques, tels que les champs JSON, ARRAY et VARCHAR.

Opérateurs spécifiques aux champs JSON

Milvus propose des opérateurs avancés pour l'interrogation des champs JSON, permettant un filtrage précis dans des structures JSON complexes.

JSON_CONTAINS(identifier, jsonExpr): Vérifie si une expression JSON existe dans le champ.

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter='json_contains(tags, "sale")'

JSON_CONTAINS_ALL(identifier, jsonExpr): Vérifie que tous les éléments de l'expression JSON sont présents.

# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter='json_contains_all(tags, ["electronics", "sale", "new"])'

JSON_CONTAINS_ANY(identifier, jsonExpr): Filtre les entités pour lesquelles il existe au moins un élément dans l'expression JSON.

# JSON data: {"tags": ["electronics", "sale", "new"]}
filter='json_contains_any(tags, ["electronics", "new", "clearance"])'

Pour plus de détails sur les opérateurs JSON, voir Opérateurs JSON.

Opérateurs spécifiques aux champs ARRAY

Milvus propose des opérateurs de filtrage avancés pour les champs de type tableau, tels que ARRAY_CONTAINS, ARRAY_CONTAINS_ALL, ARRAY_CONTAINS_ANY, et ARRAY_LENGTH, qui permettent un contrôle fin des données de type tableau.

ARRAY_CONTAINS: Filtre les entités contenant un élément spécifique.

filter="ARRAY_CONTAINS(history_temperatures, 23)"

ARRAY_CONTAINS_ALL: Filtre les entités où tous les éléments d'une liste sont présents.

filter="ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])"

ARRAY_CONTAINS_ANY: Filtre les entités contenant n'importe quel élément de la liste.

filter="ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])"

ARRAY_LENGTH: Filtre en fonction de la longueur du tableau.

filter="ARRAY_LENGTH(history_temperatures) < 10"

Pour plus de détails sur les opérateurs de tableau, voir Opérateurs de tableau.

Opérateurs spécifiques aux champs VARCHAR

L'opérateur Text_Match permet d'extraire des documents avec précision en fonction de termes d'interrogation spécifiques. Il est particulièrement utile pour les recherches filtrées qui combinent des filtres scalaires avec des recherches de similarité vectorielle. Contrairement aux recherches sémantiques, la correspondance de texte se concentre sur les occurrences exactes des termes.

Milvus utilise Tantivy pour prendre en charge l'indexation inversée et la recherche textuelle basée sur les termes. Le processus implique

  1. Analyseur: Tokenise et traite le texte d'entrée.

  2. Indexation: Création d'un index inversé mettant en correspondance des tokens uniques avec des documents.

Pour plus de détails, reportez-vous à la section Correspondance de textes.

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 ?