A API Retrieve retorna segmentos de texto de uma base de conhecimento com base na similaridade semântica. Quando a busca semântica retornar muitos resultados irrelevantes, use SearchFilters para aplicar filtragem baseada em metadados aos resultados semânticos. Essa abordagem é eficaz para dados estruturados, como tabelas com campos bem definidos.
Como funciona o SearchFilters
Sem SearchFilters, a API Retrieve retorna todos os segmentos de texto semanticamente similares, o que pode incluir correspondências irrelevantes. O SearchFilters executa primeiro a busca semântica e depois filtra os resultados conforme as condições de campo.
Sem SearchFilters:

Name: "San Zhang".

Sintaxe
SearchFilters é um array de subgrupos. Cada subgrupo é um objeto JSON com um ou mais pares field: value. Os subgrupos são sempre combinados com lógica AND.
Name = "San Zhang" E Sex = "Male" (no subgrupo 1) E Position = "Engineer" (subgrupo 2).
Tipos de consulta suportados
Referência de operadores
| Tipo de consulta | Operador | Tipos de campo suportados | Descrição |
|---|---|---|---|
| Valor único | *(valor direto)* | string, numérico (long, double) | Corresponde a um único valor exato. Exemplo: {"Name": "San Zhang"} |
| Múltiplos valores | *(array JSON)* | array de strings, array numérico | Corresponde a qualquer valor no array (similar ao operador SQL IN). Exemplo: {"Name": "[\"San Zhang\",\"Si Li\"]"} |
| Igualdade | eq | string, numérico | Igual a. Exemplo: {"Name": {"eq": "San Zhang"}} |
| Desigualdade | neq | string, numérico | Diferente de. Exemplo: {"Name": {"neq": "San Zhang"}} |
| Intervalo | gt | numérico | Maior que. Exemplo: {"Age": {"gt": 20}} |
| Intervalo | gte | numérico | Maior ou igual a. Exemplo: {"Age": {"gte": 20}} |
| Intervalo | lt | numérico | Menor que. Exemplo: {"Age": {"lt": 30}} |
| Intervalo | lte | numérico | Menor ou igual a. Exemplo: {"Age": {"lte": 30}} |
| Fuzzy | like | string | Correspondência por padrão curinga. Exemplo: {"Position": {"like": "E%r"}} |
| Tag | tags | array de strings | Filtra por tags de documento (apenas bases de conhecimento de busca de documentos). Exemplo: {"tags": "[\"tag1\",\"tag2\"]"} |
Caracteres curinga para consultas fuzzy
Caractere | Descrição | Exemplo |
|---|---|---|
| Corresponde a zero ou mais caracteres |
|
| Corresponde exatamente a um caractere |
|
Lógica de consulta de tags
- Múltiplas tags em um único subgrupo usam lógica OR: arquivos correspondentes a qualquer tag são retornados.
- Para aplicar lógica AND entre tags, coloque cada tag em um subgrupo separado.
Pré-requisitos
Você precisa de:
- (Apenas para usuários RAM) A política AliyunBailianDataFullAccess e associação ao workspace. Não necessário para contas Alibaba Cloud.
- Um ID do workspace
- O SDK do Model Studio instalado e configurado
- AccessKey e AccessKey secret configurados como variáveis de ambiente
Usuários RAM podem gerenciar bases de conhecimento apenas nos workspaces aos quais foram associados. Contas Alibaba Cloud podem gerenciar todos os workspaces.
Configuração de dados de exemplo
Os exemplos utilizam o arquivo EmployeeInformation.xlsx (3 registros). Crie uma base de conhecimento com as seguintes configurações:
Configuração | Valor |
|---|---|
Knowledge base type | Data Query |
Data source | Upload Data Table |
Fields | Name (string), Sex (string), Position (string), Age (double) |
Index settings | All fields used for retrieval and model responses |

Exemplos completos de código
Os exemplos a seguir em Python e Java abrangem todos os tipos de consulta.
Antes de executar o código de exemplo, configure seu AccessKey e AccessKey secret como variáveis de ambiente .
- Python
- Java
SearchFiltersFullExample.py
SearchFiltersFullExample.py
Exemplos de tipos de consulta
Cada tipo de consulta inclui sintaxe JSON e exemplos de solicitação e resposta.
Substitua estes placeholders pelos seus valores reais:
Placeholder | Descrição | Exemplo |
|---|---|---|
| ID do índice da base de conhecimento |
|
| ID do Workspace |
|
Consulta por subgrupo
Cada elemento no array searchFilters é um subgrupo que combina condições de filtro. Todos os subgrupos devem corresponder (lógica AND).
Filtrar registros onde Name é "San Zhang" E Sex é "Female":
nodes está vazio.
- Python
- Java
SubGroupQueryExample.py
SubGroupQueryExample.py
Solicitação de exemplo
Solicitação de exemplo
Resposta de exemplo
Resposta de exemplo
Consulta de valor único
Informe um único valor para um campo a fim de corresponder a registros com esse valor exato.
Filtrar registros onde Name é "San Zhang":
- Python
- Java
SingleQueryExample.py
SingleQueryExample.py
Solicitação de exemplo
Solicitação de exemplo
Resposta de exemplo
Resposta de exemplo
Consulta de múltiplos valores
Informe múltiplos valores para um campo a fim de corresponder a registros que contenham qualquer um dos valores especificados, similar ao operador SQL IN. Serialize o array de valores como uma string JSON.
Filtrar registros onde Name é "San Zhang" ou "Si Li":
- Python
- Java
MultiQueryExample.py
MultiQueryExample.py
Solicitação de exemplo
Solicitação de exemplo
Resposta de exemplo
Resposta de exemplo
Consulta de intervalo
Use consultas de intervalo para encontrar registros onde um campo numérico esteja dentro de um intervalo especificado. Combine consultas de intervalo com outros tipos de consulta colocando-as em subgrupos separados.
Filtrar registros onde Position é "Engineer" (valor único) E Age está entre 20 e 25 (intervalo):
- Python
- Java
RangeQueryExample.py
RangeQueryExample.py
Solicitação de exemplo
Solicitação de exemplo
Resposta de exemplo
Resposta de exemplo
Consulta fuzzy
Use padrões curinga para corresponder parcialmente a campos de string, similar ao operador SQL LIKE. Envolva o padrão em um objeto {"like": "<pattern>"} e serialize-o como uma string JSON.
Filtrar registros onde Name é "San Zhang" E Position começa com "E" e termina com "r":
- Python
- Java
WildcardQueryExample.py
WildcardQueryExample.py
Solicitação de exemplo
Solicitação de exemplo
Resposta de exemplo
Resposta de exemplo
Consulta por tag
Filtre por tags de documento em uma base de conhecimento de busca de documentos . As tags restringem a recuperação a segmentos de texto de arquivos correspondentes a valores específicos de tags.
Configuração de exemplo: Uma base de conhecimento de busca de documentos contém três arquivos de currículo com as seguintes tags:
Arquivo | Tags |
|---|---|
Currículo de San Zhang |
|
Currículo de Si Li |
|
Currículo de Wu Wang |
|

Exemplo 1: Lógica OR (múltiplas tags em um subgrupo)
Retorna segmentos de texto de arquivos marcados com University A OU Student Union President:
Múltiplas tags dentro de um único subgrupo usam lógica OR. Para aplicar lógica AND, coloque cada tag em um subgrupo separado (veja o Exemplo 2).
Python -- TagQueryExample.py
Python -- TagQueryExample.py
Java -- TagQueryExample.java
Java -- TagQueryExample.java
Solicitação de exemplo
Solicitação de exemplo
Resposta de exemplo
Resposta de exemplo
University A) quanto do Currículo de Wu Wang (marcado com Student Union President).
Exemplo 2: Lógica AND (tags em subgrupos separados)
Retorna segmentos de texto de arquivos marcados tanto com University A QUANTO com Sports Specialist Student:
Python -- TagQueryExample2.py
Python -- TagQueryExample2.py
Java -- TagQueryExample2.java
Java -- TagQueryExample2.java
Solicitação de exemplo
Solicitação de exemplo
Resposta de exemplo
Resposta de exemplo
Referências
| Recurso | Descrição |
|---|---|
| Criar e usar uma base de conhecimento | Guia do usuário da base de conhecimento |
| API Retrieve | Recuperar segmentos de texto de uma base de conhecimento |
| Conceder permissões de API a um usuário RAM | Configurar acesso de usuário RAM para a API Retrieve |
| Códigos de erro | Solucionar falhas em chamadas de API |