Guia de filtragem de Pesquisa de IA
Esta página descreve a sintaxe da expressão de filtro para queries da Pesquisa de AI. A sintaxe do filtro é diferente para endpoints padrão e otimizados para armazenamento.
- Endpoints padrão usam um dicionário Python, em que a chave codifica o nome da coluna e o operador (por exemplo,
{"price <": 200}). - Endpoints otimizados para armazenamento usam uma string de filtro semelhante a uma
WHEREcláusula (por"price < 200"exemplo,).
Para uma referência completa de operadores compatíveis e onde encontrar filtros na API de consulta, consulte Usar filtros em consultas. Para Notebooks de exemplo, consulte Notebooks de exemplo.
Endpoints padrão
Endpoints padrão aceitam um dicionário Python passado para similarity_search() por meio do parâmetro filters. A chave codifica tanto o nome da coluna quanto o operador (por exemplo, {"price >": 40000}), e várias chaves no mesmo dicionário são combinadas com a lógica AND. Esta seção resume os operadores compatíveis e as limitações conhecidas.
Referência rápida
Colunas de strings
Operador | Sintaxe | Exemplo |
|---|---|---|
Correspondência exata |
|
|
Negação |
|
|
OU (vários valores) |
|
|
Baseado em token |
|
|
Valores hifenizados |
|
|
Padrão JSON |
|
|
Colunas numéricas (INT, DOUBLE)
Operador | Sintaxe | Exemplo |
|---|---|---|
Maior que |
|
|
Menor ou igual a |
|
|
Maior ou igual a |
|
|
Correspondência de inteiros |
|
|
Intervalo | Duas chaves em um dicionário |
|
Colunas Booleanas
Operador | Sintaxe | Exemplo |
|---|---|---|
Corresponder ao verdadeiro |
|
|
Corresponder a Falso |
|
|
Colunas de matrizes
Endpoints padrão suportam tipos primitivos de ARRAY: ARRAY<STRING>, ARRAY<INT>, ARRAY<BIGINT>, ARRAY<SMALLINT>, ARRAY<TINYINT>, ARRAY<FLOAT>, ARRAY<DOUBLE>, ARRAY<BOOLEAN>, ARRAY<DATE> e ARRAY<TIMESTAMP>. ARRAY<STRUCT> não é compatível com.
Operador | Sintaxe | Exemplo |
|---|---|---|
Contém um valor |
|
|
Contém qualquer valor (OU) |
|
|
E com outra coluna |
|
|
Colunas de timestamp (nativas TIMESTAMP ou DATE)
Operador | Sintaxe | Exemplo |
|---|---|---|
Depois |
|
|
Correspondência exata de carimbo de data/hora |
|
|
Negação |
|
|
Intervalo | Duas chaves em um dicionário |
|
Filtros combinados
Múltiplas chaves em um único dicionário são combinadas com AND lógica. Use a sintaxe {"col1 OR col2 op": [v1, v2]} para OR em diferentes campos.
Padrão | Sintaxe | Exemplo |
|---|---|---|
string + numérico | Múltiplas chaves |
|
Numérico + numérico | Múltiplas chaves |
|
String + numérico + array | Múltiplas chaves |
|
String + array + numérico | Múltiplas chaves |
|
strings, numérico e marca de tempo | Múltiplas chaves |
|
| Chave combinada |
|
JSON | Lista de dicionários |
|
| Lista de dicionários |
|
Limitações
Limitação | Detalhe | Solução alternativa |
|---|---|---|
| A criação de um índice com | Desachatar a estrutura em uma coluna de strings para indexação e filtragem. |
| Corresponde a tokens inteiros separados por espaço em branco, e não padrões curinga SQL ( | Utilize um endpoint otimizado para armazenamento para caractere curinga |
| Usar | Use uma coluna |
| Não há | Use duas chaves no dicionário, por exemplo |
Sem funções SQL em filtros | Funções como | Use um endpoint otimizado para armazenamento com uma string de filtro SQL. Para registros de data/hora, devem ser armazenados como milissegundos desde a época. |
Filtragem numérica de JSON não é compatível | Endpoints padrão não podem extrair ou converter valores JSON aninhados (por exemplo, | Usar padrões |
Chaves de dicionário duplicadas descartadas silenciosamente | Python mantém apenas o último valor para chaves duplicadas em um dicionário. Por exemplo, | Use uma lista de dicionários: |
Endpoints otimizados para armazenamento
Endpoints otimizados para armazenamento aceitam uma string de filtro semelhante a SQL passada para similarity_search() através do parâmetro filters. Esta seção resume os operadores compatíveis e as limitações conhecidas.
Referência rápida
Colunas de strings
Operador | Sintaxe | Exemplo |
|---|---|---|
Correspondência exata |
|
|
Negação |
|
|
OU (vários valores) |
|
|
Padrão de caractere universal |
|
|
Valores hifenizados |
|
|
Correspondência de substring JSON |
|
|
Colunas numéricas (INT, DOUBLE)
Operador | Sintaxe | Exemplo |
|---|---|---|
Maior que |
|
|
Menor ou igual a |
|
|
Maior ou igual a |
|
|
Correspondência de inteiros |
|
|
Intervalo |
|
|
Colunas Booleanas
Operador | Sintaxe | Exemplo |
|---|---|---|
Boolean verdadeiro |
|
|
Colunas de matrizes
A filtragem de arrays não é suportada em endpoints otimizados para armazenamento. ARRAY_CONTAINS gera um BadRequest: Syntax error. Como alternativa, concatene valores de array em uma coluna de string e use LIKE. Por exemplo:
"body_type LIKE '%sedan%'""body_type LIKE '%hybrid%' OR body_type LIKE '%electric%'"
Colunas de timestamp (nativas TIMESTAMP)
Operador | Sintaxe | Exemplo |
|---|---|---|
Após a data |
|
|
Intervalo | Combinar com |
|
Filtros combinados
Padrão | Sintaxe | Exemplo |
|---|---|---|
string + numérico |
|
|
Numérico + numérico |
|
|
String + numérico + |
|
|
|
|
|
Timestamp + numérico + string |
|
|
Limitações
Limitação | Detalhe | Solução alternativa |
|---|---|---|
| A criação de um índice com | Desachatar a estrutura em uma coluna de strings para indexação e filtragem. |
|
| Concatenar valores de matriz em uma coluna de strings e use |
| Usando | Use |
Strings de timestamp não formatadas causam incompatibilidade de tipos. |
| Envolva o valor com |
Filtragem numérica de JSON não é compatível | Funções SQL como | Pré-extrair campos JSON em colunas de nível superior no momento da criação do índice, ou usar correspondência de padrões |
Pós-filtragem (overfetch) | Os resultados são classificados primeiro por relevância, depois filtrados. A maioria dos casos é tratada automaticamente, mas, em cenários raros—principalmente | Aumentar |