Guide de filtrage de la recherche IA
Les expressions de filtre de recherche IA affinent les résultats de la query par valeur de colonne. La syntaxe diffère selon le type d'endpoint : les endpoints standard utilisent un dictionnaire Python, et les endpoints optimisés pour le stockage utilisent une chaîne de filtre de type SQL.
- **Endpoint standard** utilisent un dictionnaire Python, où la clé encode à la fois le nom de la colonne et l'opérateur (par
{"price <": 200}exemple,). - Les endpoints optimisés pour le stockage utilisent une chaîne de filtre de type SQL similaire à une clause
WHERE(par exemple,"price < 200").
Pour une référence complète des opérateurs pris en charge et où trouver des filtres dans l'API de query, consultez Utiliser des filtres sur les queries. Pour des Notebooks d'exemple, voir Notebooks d'exemple.
Endpoints standards
Les endpoints standards acceptent un dictionnaire Python transmis à similarity_search() via le parameter filters. La clé encode à la fois le nom de la colonne et l'opérateur (par exemple, {"price >": 40000}), et plusieurs clés dans le même dictionnaire sont combinées avec la logique AND. Cette section résume les opérateurs pris en charge et les limitations connues.
Référence rapide
Colonnes de chaînes
Opérateur | Syntaxe | Exemple |
|---|---|---|
Correspondance exacte |
|
|
Négation |
|
|
OU (plusieurs valeurs) |
|
|
Basé sur les jetons |
|
|
Valeurs avec trait d'union |
|
|
Modèle JSON |
|
|
Colonnes numériques (INT, DOUBLE)
Opérateur | Syntaxe | Exemple |
|---|---|---|
Supérieur à |
|
|
Inférieur ou égal à |
|
|
Supérieur ou égal à |
|
|
Correspondance d'entiers. |
|
|
Plage | Deux clés dans le dictionnaire. |
|
Colonnes booléennes
Opérateur | Syntaxe | Exemple |
|---|---|---|
Correspondre à vrai |
|
|
Faux |
|
|
Colonnes de tableaux
Les Endpoint standard prennent en charge les types primitifs ARRAY : ARRAY<STRING>, ARRAY<INT>, ARRAY<BIGINT>, ARRAY<SMALLINT>, ARRAY<TINYINT>, ARRAY<FLOAT>, ARRAY<DOUBLE>, ARRAY<BOOLEAN>, ARRAY<DATE> et ARRAY<TIMESTAMP>. ARRAY<STRUCT> n'est pas pris en charge.
Opérateur | Syntaxe | Exemple |
|---|---|---|
Contient une valeur |
|
|
Contient toute valeur (OU) |
|
|
ET avec une autre colonne |
|
|
Colonnes Timestamp (natives TIMESTAMP ou DATE)
Opérateur | Syntaxe | Exemple |
|---|---|---|
Après |
|
|
Correspondance exacte du timestamp |
|
|
Négation |
|
|
Plage | Deux clés dans le dictionnaire. |
|
Filtres combinés
Plusieurs clés dans un seul dictionnaire sont combinées avec la logique AND. Utilisez la syntaxe {"col1 OR col2 op": [v1, v2]} pour OR à travers différents champs.
Modèle | Syntaxe | Exemple |
|---|---|---|
Chaîne + numérique | Plusieurs clés |
|
Numérique + numérique | Plusieurs clés |
|
Chaîne + numérique + tableau | Plusieurs clés |
|
Chaîne + tableau + numérique | Plusieurs clés |
|
Chaîne + numérique + Timestamp | Plusieurs clés |
|
| Clé combinée |
|
JSON | Liste de dictionnaires |
|
| Liste de dictionnaires |
|
Limitations
Limitation | Détail | Solution de contournement |
|---|---|---|
| La création d’un index avec | Aplatir la structure en une colonne de chaîne pour l'indexation et le filtrage. |
| Correspond à des jetons entiers séparés par des espaces, et non à des modèles de caractères génériques SQL ( | Utilisez un endpoint optimisé pour le stockage pour les caractères génériques |
| L'utilisation de | Utilisez une colonne native |
| Il n'y a pas d'opérateur | Utilisez deux clés dans le dict, par exemple |
Aucune fonction SQL dans les filtres | Les fonctions comme | Utilisez un Endpoint optimisé pour le stockage avec une chaîne de filtre SQL. Pour les Timestamp, stocker en millisecondes d'époque. |
Le filtrage numérique JSON n'est pas pris en charge. | Les endpoints standard ne peuvent pas extraire ou caster des valeurs JSON imbriquées (par exemple, | Utilisez des modèles |
Les clés de dictionnaire en double sont supprimées silencieusement | Python ne conserve que la dernière valeur pour les clés en double dans un dict. Par exemple, | Utilisez une liste de dictionnaires : |
Endpoints optimisés pour le stockage
Les Endpoint optimisés pour le stockage acceptent une chaîne de filtre de type SQL transmise à similarity_search() via le parameter filters. Cette section résume les opérateurs pris en charge et les limitations connues.
Référence rapide
Colonnes de chaînes
Opérateur | Syntaxe | Exemple |
|---|---|---|
Correspondance exacte |
|
|
Négation |
|
|
OU (plusieurs valeurs) |
|
|
Modèle générique |
|
|
Valeurs avec trait d'union |
|
|
Correspondance de sous-chaîne JSON |
|
|
Colonnes numériques (INT, DOUBLE)
Opérateur | Syntaxe | Exemple |
|---|---|---|
Supérieur à |
|
|
Inférieur ou égal à |
|
|
Supérieur ou égal à |
|
|
Correspondance d'entiers. |
|
|
Plage |
|
|
Colonnes booléennes
Opérateur | Syntaxe | Exemple |
|---|---|---|
Booléen vrai |
|
|
Colonnes de tableaux
Le filtrage de tableau n’est pas pris en charge sur les Endpoint optimisés pour le stockage. ARRAY_CONTAINS soulève un BadRequest: Syntax error. Comme solution de contournement, concaténez les valeurs du tableau dans une colonne de type chaîne et utilisez LIKE. Par exemple :
"body_type LIKE '%sedan%'""body_type LIKE '%hybrid%' OR body_type LIKE '%electric%'"
Colonnes de timestamp (natives TIMESTAMP)
Opérateur | Syntaxe | Exemple |
|---|---|---|
Après la date |
|
|
Plage | Combiner avec |
|
Filtres combinés
Modèle | Syntaxe | Exemple |
|---|---|---|
Chaîne + numérique |
|
|
Numérique + numérique |
|
|
Chaîne + numérique + |
|
|
|
|
|
Timestamp + numérique + chaîne |
|
|
Limitations
Limitation | Détail | Solution de contournement |
|---|---|---|
| La création d’un index avec | Aplatir la structure en une colonne de chaîne pour l'indexation et le filtrage. |
|
| Concaténez les valeurs du tableau dans une colonne de chaîne et utilisez |
| L'utilisation de | Utilisez |
Les chaînes de caractères de Timestamp brutes provoquent une incompatibilité de type |
| Entourez la valeur avec |
Le filtrage numérique JSON n'est pas pris en charge. | Les fonctions SQL comme | Pré-extrayez les champs JSON dans les colonnes de niveau supérieur au moment de la création de l'index, ou utilisez la correspondance de modèles |
Post-filtrage (sur-récupération) | Les résultats sont classés par pertinence d'abord, puis filtrés. La plupart des cas sont gérés automatiquement, mais dans de rares scénarios (principalement | Augmentez |