La API Retrieve devuelve segmentos de texto de una base de conocimientos basándose en la similitud semántica. Cuando la búsqueda semántica devuelve demasiados resultados irrelevantes, utilice SearchFilters para aplicar un filtrado basado en metadatos sobre los resultados semánticos. Esto es eficaz para datos estructurados, como tablas de datos con campos bien definidos.
Cómo funciona SearchFilters
Sin SearchFilters, la API Retrieve devuelve todos los segmentos de texto semánticamente similares, lo cual puede incluir coincidencias irrelevantes. SearchFilters realiza primero una búsqueda semántica y luego filtra los resultados según las condiciones de campo.
Sin SearchFilters:

Name: "San Zhang".

Sintaxis
SearchFilters es un arreglo de subgrupos. Cada subgrupo es un objeto JSON con uno o más pares field: value. Los subgrupos siempre se combinan con lógica AND.
Name = "San Zhang" Y Sex = "Male" (dentro del subgrupo 1) Y Position = "Engineer" (subgrupo 2).
Tipos de consulta compatibles
Referencia de operadores
| Tipo de consulta | Operador | Tipos de campo compatibles | Descripción |
|---|---|---|---|
| Valor único | *(valor directo)* | cadena, numérico (long, double) | Coincidir con un solo valor exacto. Ejemplo: {"Name": "San Zhang"} |
| Valor múltiple | *(matriz JSON)* | matriz de cadenas, matriz numérica | Coincidir con cualquier valor en el arreglo (similar a SQL IN). Ejemplo: {"Name": "[\"San Zhang\",\"Si Li\"]"} |
| Igualdad | eq | cadena, numérico | Igual a. Ejemplo: {"Name": {"eq": "San Zhang"}} |
| Igualdad | neq | cadena, numérico | No igual a. Ejemplo: {"Name": {"neq": "San Zhang"}} |
| Intervalo | gt | numérico | Mayor que. Ejemplo: {"Age": {"gt": 20}} |
| Intervalo | gte | numérico | Mayor o igual a. Ejemplo: {"Age": {"gte": 20}} |
| Intervalo | lt | numérico | Menor que. Ejemplo: {"Age": {"lt": 30}} |
| Intervalo | lte | numérico | Menor o igual a. Ejemplo: {"Age": {"lte": 30}} |
| Difuso | like | string | Coincidencia de patrón con comodines. Ejemplo: {"Position": {"like": "E%r"}} |
| Etiqueta | tags | matriz de cadenas | Filtrar por etiquetas de documento (solo bases de conocimientos de búsqueda de documentos). Ejemplo: {"tags": "[\"tag1\",\"tag2\"]"} |
Caracteres comodín para consultas difusas
| Carácter | Descripción | Ejemplo |
|---|---|---|
% | Coincide con cero o más caracteres | E%r coincide con Engineer |
_ | Coincide exactamente con un carácter | E_gineer coincide con Engineer |
Lógica de consulta por etiquetas
- Múltiples etiquetas en un subgrupo usan lógica OR: se devuelven los archivos que coinciden con cualquier etiqueta.
- Para lógica AND entre etiquetas, coloque cada etiqueta en un subgrupo separado.
Requisitos previos
Necesita:
- (Solo usuarios RAM) La política AliyunBailianDataFullAccess y la membresía del espacio de trabajo. No es necesario para una cuenta de Alibaba Cloud.
- Un ID de espacio de trabajo
- El SDK de Model Studio instalado y configurado
- AccessKey y AccessKey secret configurados como variables de entorno
Los usuarios RAM solo pueden gestionar bases de conocimientos en los espacios de trabajo a los que se han unido. Las cuentas de Alibaba Cloud pueden gestionar todos los espacios de trabajo.
Configuración de datos de muestra
Los ejemplos utilizan EmployeeInformation.xlsx (3 registros). Cree una base de conocimientos con:
| Configuración | Valor |
|---|---|
| Tipo de base de conocimientos | Consulta de datos |
| Fuente de datos | Cargar tabla de datos |
| Campos | Name (string), Sex (string), Position (string), Age (double) |
| Configuración de índices | Todos los campos utilizados para la recuperación y las respuestas del modelo |

Ejemplos de código completos
Los siguientes ejemplos en Python y Java cubren todos los tipos de consulta.
Antes de ejecutar el código de muestra, configure su AccessKey y AccessKey secret como variables de entorno.
- Python
- Java
SearchFiltersFullExample.py
SearchFiltersFullExample.py
Ejemplos de tipos de consulta
Cada tipo de consulta incluye sintaxis JSON y ejemplos de solicitud/respuesta.
Reemplace estos marcadores de posición con sus valores reales:
| Marcador de posición | Descripción | Ejemplo |
|---|---|---|
<knowledge-base-id> | ID de índice de base de conocimientos | 27ubwxxxxx |
<workspace-id> | ID de espacio de trabajo | llm-4u5xpd1xdjxxxxxx |
Consulta por subgrupo
Cada elemento en el arreglo searchFilters es un subgrupo que combina condiciones de filtro. Todos los subgrupos deben coincidir (lógica AND).
Filtrar registros donde Name es "San Zhang" Y Sex es "Female":
nodes está vacío.
- Python
- Java
SubGroupQueryExample.py
SubGroupQueryExample.py
Solicitud de ejemplo
Solicitud de ejemplo
Respuesta de ejemplo
Respuesta de ejemplo
Consulta de valor único
Pase un solo valor para un campo con el fin de coincidir con registros que tengan ese valor exacto.
Filtrar registros donde Name es "San Zhang":
- Python
- Java
SingleQueryExample.py
SingleQueryExample.py
Solicitud de ejemplo
Solicitud de ejemplo
Respuesta de ejemplo
Respuesta de ejemplo
Consulta multivalor
Pase múltiples valores para un campo con el fin de coincidir con registros que contengan cualquiera de los valores especificados, similar al operador IN de SQL. Serialice el arreglo de valores como una cadena JSON.
Filtrar registros donde Name es "San Zhang" o "Si Li":
- Python
- Java
MultiQueryExample.py
MultiQueryExample.py
Solicitud de ejemplo
Solicitud de ejemplo
Respuesta de ejemplo
Respuesta de ejemplo
Consulta por rango
Utilice consultas por rango para encontrar registros donde un campo numérico cae dentro de un intervalo especificado. Combine consultas por rango con otros tipos de consulta colocándolas en subgrupos separados.
Filtrar registros donde Position es "Engineer" (valor único) Y Age está entre 20 y 25 (rango):
- Python
- Java
RangeQueryExample.py
RangeQueryExample.py
Solicitud de ejemplo
Solicitud de ejemplo
Respuesta de ejemplo
Respuesta de ejemplo
Consulta difusa
Utilice patrones de comodines para coincidir parcialmente con campos de cadena, similar al operador LIKE de SQL. Envuelva el patrón en un objeto {"like": "<pattern>"} y serialícelo como una cadena JSON.
Filtrar registros donde Name es "San Zhang" Y Position comienza con "E" y termina con "r":
- Python
- Java
WildcardQueryExample.py
WildcardQueryExample.py
Solicitud de ejemplo
Solicitud de ejemplo
Respuesta de ejemplo
Respuesta de ejemplo
Consulta por etiquetas
Filtrar por etiquetas de documento en una base de conocimientos de búsqueda de documentos. Las etiquetas limitan la recuperación a segmentos de texto de archivos que coinciden con valores de etiqueta específicos.
Configuración de muestra: Una base de conocimientos de búsqueda de documentos contiene tres archivos de currículum con las siguientes etiquetas:
| Archivo | Etiquetas |
|---|---|
| Currículum de San Zhang | University A, Sports Specialist Student |
| Currículum de Si Li | University B |
| Currículum de Wu Wang | University B, Student Union President |
Ejemplo 1: Lógica OR (múltiples etiquetas en un subgrupo)
Devolver segmentos de texto de archivos etiquetados con University A O Student Union President:
Múltiples etiquetas dentro de un solo subgrupo usan lógica OR. Para aplicar lógica AND, coloque cada etiqueta en un subgrupo separado (ver Ejemplo 2).
Python -- TagQueryExample.py
Python -- TagQueryExample.py
Java -- TagQueryExample.java
Java -- TagQueryExample.java
Solicitud de ejemplo
Solicitud de ejemplo
Respuesta de ejemplo
Respuesta de ejemplo
University A) como del currículum de Wu Wang (etiquetado Student Union President).
Ejemplo 2: Lógica AND (etiquetas en subgrupos separados)
Devolver segmentos de texto de archivos etiquetados tanto con University A COMO CON Sports Specialist Student:
Python -- TagQueryExample2.py
Python -- TagQueryExample2.py
Java -- TagQueryExample2.java
Java -- TagQueryExample2.java
Solicitud de ejemplo
Solicitud de ejemplo
Respuesta de ejemplo
Respuesta de ejemplo
Referencias
| Recurso | Descripción |
|---|---|
| Crear y usar una base de conocimientos | Guía de usuario de la base de conocimientos |
| API Retrieve | Recuperar segmentos de texto de una base de conocimientos |
| Otorgar permisos de API a un usuario RAM | Configurar el acceso de usuario RAM para la API Retrieve |
| Códigos de error | Solucionar fallos en llamadas a API |