El propósito de la API de Search es encontrar objetos de datos que sean similares a una consulta determinada y devolver una lista de resultados clasificados (según la similitud). La API de Search también admite el filtrado.
La API de Search ofrece varias formas de buscar objetos de datos: búsqueda de vectores, búsqueda en el texto completo y búsqueda semántica. Además, se pueden combinar varias búsquedas de cualquier tipo para lograr una búsqueda híbrida.
Búsqueda de vectores
La búsqueda de vectores te permite proporcionar tu propio vector de búsqueda. Este es el método obligatorio para buscar campos de embedding que no tienen un embedding-config.
Si se proporcionan varios campos vector_search, los resultados se combinan con pesos iguales.
En el siguiente ejemplo, se muestra cómo realizar una búsqueda de vectores en una colección con el ID COLLECTION_ID.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- COLLECTION_ID: ID de la colección.
- LOCATION: Es la región en la que usas Agent Platform.
- PROJECT_ID: Es el Cloud de Confiance by S3NS ID del proyecto.
Método HTTP y URL:
POST https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects:search
Cuerpo JSON de la solicitud:
{
"vector_search": {
"search_field": "plot_embedding",
"vector": {
"values": [
0.42426406871192845,
0.565685424949238,
0.7071067811865475
]
},
"filter": {
"genre": {
"$eq": "Thriller"
}
},
"top_k": 5,
"output_fields": {
"data_fields": "*",
"vector_fields": "*",
"metadata_fields": "*"
}
}
}
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{
"results": [
{
"dataObject": {
"name": "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/1",
"createTime": "2026-01-31T20:05:06Z",
"updateTime": "2026-02-02T13:59:24Z",
"data": {
"year": 1991,
"title": "The Silence of the Lambs",
"director": "Jonathan Demme",
"genre": "Thriller"
},
"vectors": {
"plot_embedding": {
"dense": {
"values": [
1,
1,
1
]
}
},
"sparse_embedding": {
"sparse": {
"values": [
1,
6,
3,
2,
8,
5,
2
],
"indices": [
4065,
13326,
17377,
25918,
28105,
32683,
42998
]
}
},
"genre_embedding": {
"dense": {
"values": [
0.3863801,
0.73934346,
0.16189057,
0.5271367
]
}
},
"soundtrack_embedding": {
"dense": {
"values": [
0.5920452,
0.08301644,
0.12647335,
0.619643,
0.49258286
]
}
}
}
},
"distance": 1.697
},
{
"dataObject": {
"name": "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/2",
"createTime": "2026-02-04T14:35:29Z",
"updateTime": "2026-02-04T14:37:29Z",
"data": {
"year": 1995,
"title": "Se7en",
"director": "David Fincher",
"genre": "Thriller"
},
"vectors": {
"genre_embedding": {
"dense": {
"values": [
0.3863801,
0.73934346,
0.16189057,
0.5271367
]
}
},
"plot_embedding": {
"dense": {
"values": [
1,
1,
1
]
}
},
"sparse_embedding": {
"sparse": {
"values": [
1,
6,
3,
2,
8,
5,
2
],
"indices": [
4065,
13326,
17377,
25918,
28105,
32683,
42998
]
}
},
"soundtrack_embedding": {
"dense": {
"values": [
0.5920452,
0.08301644,
0.12647335,
0.619643,
0.49258286
]
}
}
}
},
"distance": 1.75
}
]
}
gcloud
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
-
SEARCH_VECTOR_FILE: Es la ruta de acceso local a un archivo JSON que contiene el vector denso o disperso con el que se realizará la búsqueda.
Ejemplo de contenido de archivo para un vector denso:
{ "dense": { "values": [ 0.42426406871192845, 0.565685424949238, 0.7071067811865475 ] } }
Ejemplo de contenido de archivo para un vector disperso:
{ "sparse": { "indices": [1, 5, 10], "values": [0.1, 0.5, 0.21] } }
- COLLECTION_ID: ID de la colección.
- LOCATION: Es la región en la que usas Agent Platform.
- PROJECT_ID: Es el Cloud de Confiance by S3NS ID del proyecto.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud vector-search collections data-objects search \ --vector-search-field="plot_embedding" \ --vector-from-file=SEARCH_VECTOR_FILE \ --json-filter='{"genre": {"$eq": "Thriller"}}' \ --top-k=5 \ --output-data-fields='*' \ --output-vector-fields='*' \ --output-metadata-fields='*' \ --collection=COLLECTION_ID \ --location=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud vector-search collections data-objects search ` --vector-search-field="plot_embedding" ` --vector-from-file=SEARCH_VECTOR_FILE ` --json-filter='{"genre": {"$eq": "Thriller"}}' ` --top-k=5 ` --output-data-fields='*' ` --output-vector-fields='*' ` --output-metadata-fields='*' ` --collection=COLLECTION_ID ` --location=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud vector-search collections data-objects search ^ --vector-search-field="plot_embedding" ^ --vector-from-file=SEARCH_VECTOR_FILE ^ --json-filter='{"genre": {"$eq": "Thriller"}}' ^ --top-k=5 ^ --output-data-fields='*' ^ --output-vector-fields='*' ^ --output-metadata-fields='*' ^ --collection=COLLECTION_ID ^ --location=LOCATION ^ --project=PROJECT_ID
Deberías recibir una respuesta similar a la que figura a continuación:
---
dataObject:
createTime: '2026-01-31T20:05:06Z'
data:
director: Jonathan Demme
genre: Thriller
title: The Silence of the Lambs
year: 1991
name: projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/1
updateTime: '2026-02-02T13:59:24Z'
vectors:
genre_embedding:
dense:
values:
- 0.38638
- 0.739343
- 0.161891
- 0.527137
plot_embedding:
dense:
values:
- 1.0
- 1.0
- 1.0
soundtrack_embedding:
dense:
values:
- 0.592045
- 0.0830164
- 0.126473
- 0.619643
- 0.492583
sparse_embedding:
sparse:
indices:
- 4065
- 13326
- 17377
- 25918
- 28105
- 32683
- 42998
values:
- 1.0
- 6.0
- 3.0
- 2.0
- 8.0
- 5.0
- 2.0
distance: 1.697
---
dataObject:
createTime: '2026-02-04T14:35:29Z'
data:
director: David Fincher
genre: Thriller
title: Se7en
year: 1995
name: projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects/2
updateTime: '2026-02-04T14:37:29Z'
vectors:
genre_embedding:
dense:
values:
- 0.38638
- 0.739343
- 0.161891
- 0.527137
plot_embedding:
dense:
values:
- 1.0
- 1.0
- 1.0
soundtrack_embedding:
dense:
values:
- 0.592045
- 0.0830164
- 0.126473
- 0.619643
- 0.492583
sparse_embedding:
sparse:
indices:
- 4065
- 13326
- 17377
- 25918
- 28105
- 32683
- 42998
values:
- 1.0
- 6.0
- 3.0
- 2.0
- 8.0
- 5.0
- 2.0
distance: 1.75
Python
from google.cloud import vectorsearch_v1
# Create the client
data_object_search_service_client = vectorsearch_v1.DataObjectSearchServiceClient()
# Initialize request
vector_search = vectorsearch_v1.VectorSearch(
search_field="plot_embedding",
vector={"values": [0.1, 0.2, 0.3]},
filter={"genre": {"$eq": "Thriller"}},
top_k=5,
)
request = vectorsearch_v1.SearchDataObjectsRequest(
parent="projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID",
vector_search=vector_search,
)
# Make the request
response = data_object_search_service_client.search_data_objects(request=request)
# Handle the response
print(response)
Ajuste de la precisión y el rendimiento de la búsqueda
En el caso de las búsquedas de vectores en índices de ANN densos con más de 100,000 embeddings, la recuperación basada en agentes, de forma predeterminada, intenta proporcionar una compensación óptima entre la recuperación y la latencia. Puedes ajustar este equilibrio para tu caso de uso especificando una tasa de recuperación objetivo.
Los valores deben ser mayores o iguales que 0.00 y menores o iguales que 1.00.
Para obtener información sobre cómo crear un índice de ANN, consulta Cómo crear un índice de ANN.
En el siguiente ejemplo, se muestra cómo realizar una búsqueda vectorial en un índice de ANN denso con una tasa de recuperación objetivo de 0.95.
REST
Método HTTP y URL:
POST https://vectorsearch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataObjects:search
Cuerpo JSON de la solicitud:
{
"vectorSearch": {
"searchField": "plot_embedding",
"vector": {
"values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]
},
"topK": 10,
"searchHint": {
"indexHint": {
"name": "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/indexes/INDEX_ID",
"denseScannParams": {
"targetRecall": 0.95
}
}
},
"outputFields": {
"dataFields": "*",
"vectorFields": "*",
"metadataFields": "*"
}
}
}
gcloud
Guarda el vector de búsqueda en un archivo JSON, por ejemplo, vector.json:
{
"dense": {
"values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]
}
}
Luego, ejecuta el siguiente comando gcloud vector-search collections data-objects search:
gcloud vector-search collections data-objects search \
--project=PROJECT_ID \
--location=LOCATION \
--collection=COLLECTION_ID \
--vector-search-field=plot_embedding \
--vector-from-file=vector.json \
--use-index=INDEX_ID \
--dense-scann-target-recall=0.95 \
--top-k=10
Python
from google.cloud import vectorsearch_v1
# Create the client
data_object_search_service_client = vectorsearch_v1.DataObjectSearchServiceClient()
collection = "projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID"
# Set the target recall rate on the index hint
search_hint = vectorsearch_v1.SearchHint(
index_hint=vectorsearch_v1.SearchHint.IndexHint(
name=f"{collection}/indexes/INDEX_ID",
dense_scann_params=vectorsearch_v1.SearchHint.IndexHint.DenseScannParams(
target_recall=0.95,
),
),
)
# Initialize request
vector_search = vectorsearch_v1.VectorSearch(
search_field="plot_embedding",
vector={"values": [0.42426406871192845, 0.565685424949238, 0.7071067811865475]},
top_k=10,
search_hint=search_hint,
output_fields=vectorsearch_v1.OutputFields(
data_fields=["*"],
vector_fields=["*"],
metadata_fields=["*"],
),
)
request = vectorsearch_v1.SearchDataObjectsRequest(
parent=collection,
vector_search=vector_search,
)
# Make the request
response = data_object_search_service_client.search_data_objects(request=request)
# Handle the response
print(response)
Búsqueda de texto
Esto realiza una búsqueda en el texto completo sin vectores dispersos. El dialecto de consulta predeterminado "palabra" trata toda la entrada como términos de búsqueda individuales con un operador AND implícito. Puedes establecer enhanced_query en true para expandir los términos de búsqueda, controlar la lematización, quitar las palabras irrelevantes y permitir operadores de búsqueda adicionales:
OR: Es un operador de disyunción que distingue mayúsculas de minúsculas y que coincide con los documentos que contienen al menos uno de los términos especificados. Solo se aplica a los dos términos adyacentes.": (comillas dobles) para la búsqueda de frases-: Es el operador de negación. Excluye los documentos que contienen los términos que preceden al operador.
Búsqueda de texto avanzada
La API de búsqueda de texto de Agent Retrieval te permite expresar búsquedas de texto a través de consultas estructuradas que contienen una o más subconsultas, lo que te permite hacer lo siguiente:
Coincide con campos específicos de objetos de datos.
Especifica el tipo de coincidencia que se realizará:
Por término, no distingue mayúsculas de minúsculas
Exactamente, distingue mayúsculas de minúsculas
Incluye mejoras por idioma para hacer coincidir las raíces de los términos, los sinónimos, los errores ortográficos y las palabras irrelevantes (como "un", "una" y "el").
Usa los operadores booleanos
AND,ORyNOTpara combinar subconsultas.Controla el orden de evaluación agrupando las subconsultas.
Las contribuciones de la puntuación de mejora influyen en las clasificaciones.
Existen tres tipos de subconsultas:
Texto: Proporciona el texto de búsqueda y uno o más campos con los que se debe hacer la coincidencia.
Combinado: Aplica el operador
ANDoORpara combinar subconsultas y se puede usar para agrupar otras subconsultas combinadas y controlar el orden de evaluación.
En los ejemplos de esta página, se usa la colección que se muestra en la siguiente tabla. Contiene seis objetos de datos y define los siguientes campos en su esquema de datos: las cadenas ID, Title, Description y el array de cadenas Keywords.
| ID | Título | Descripción | Palabras clave |
|---|---|---|---|
| 1 | The Quick Brown Fox | Un zorro marrón rápido salta fácilmente sobre el perro perezoso. | salvaje, bosque, mamífero, naranja, agilidad, depredador |
| 2 | Lazy Dog Days | El perro marrón duerme. | doméstico, mascota, casa, canino, tranquilo, perezoso, obediente |
| 3 | Zorro vs. perro | El zorro rápido supera al perro. | silvestre, doméstico, conflicto, caniformia, mamíferos, interacción |
| 4 | Osos pardos | Movimientos rápidos en el bosque. | salvaje, bosque, úrsido, depredador superior, hibernación, gigante |
| 5 | Una historia astuta | El perro salta alto. | Astuto, salta |
| 6 | Mis días de verano sin hacer nada | Un cuento sobre relajarse durante las vacaciones de verano. | verano, relajarse, vacaciones, sol |
Subconsultas de texto
Las búsquedas de texto coinciden con uno o más campos de un objeto de datos. Todas las búsquedas estructuradas deben contener al menos una búsqueda de texto.
En el siguiente ejemplo, se define una consulta de texto básica:
"text_search": {
"structured_query": {
"text": {
"text": "fox vs dog"
}
}
}
De forma predeterminada, el texto se divide en términos individuales, y cada término se busca en los campos especificados. En el ejemplo anterior, se buscan los términos "zorro", "vs" y "perro" en el campo Title.
Las búsquedas de texto tienen los siguientes parámetros opcionales:
fields: Es un array de campos con los que se realizará la coincidencia. Si no se especifica, el valor predeterminado es que se haga la coincidencia con todos los campos. Los campos coinciden con un operadorORimplícito.match_type: Es el tipo de coincidencia que se realizará. El tipo de concordancia puede serEXACT, que especifica que el campo debe coincidir exactamente con el texto de búsqueda. Si el campo es un array de cadenas, se realiza una coincidencia con cualquier elemento del array.enhancement: Especificaenabledy unlanguageCode, lo que permite realizar coincidencias con sinónimos, raíces, errores ortográficos y palabras irrelevantes en el idioma especificado paralanguageCode(por ejemplo,en-US). El valor predeterminado es sin mejora.boost: Opcional Es un multiplicador que se aplica a la puntuación de la búsqueda. El valor predeterminado es1.0.
Tipo de coincidencia
El parámetro match_type especifica cómo el texto de búsqueda coincide con el valor de un campo.
El valor del parámetro puede ser uno de los siguientes:
EXACT: El campo debe coincidir exactamente con el término de búsqueda. Si el campo es un array de cadenas, se realiza una coincidencia con cualquier elemento del array.
En el siguiente ejemplo, se especifica el tipo de coincidencia EXACT:
"text_search": {
"structured_query": {
"text": {
"text": "Fox vs Dog",
"fields": [ "Title" ],
"match_type": "EXACT"
}
}
}
Tipo de coincidencia para arrays de cadenas
Los resultados de la consulta se muestran en la siguiente tabla:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 1.0000 | 3 | Zorro vs. perro | El zorro rápido supera al perro. | silvestre, doméstico, conflicto, caniformia, mamíferos, interacción |
Cuando el campo es un array de cadenas, el texto de búsqueda coincide con cualquier elemento del array.
En el siguiente ejemplo, se muestra cómo buscar el texto exacto wild en el array de cadenas Keywords:
"text_search": {
"structured_query": {
"text": {
"text": "wild",
"fields": [ "Keywords" ],
"match_type": "EXACT"
}
}
}
Los resultados de la consulta se muestran en la siguiente tabla:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 1.0000 | 3 | Zorro vs. perro | El zorro rápido supera al perro. | silvestre, doméstico, conflicto, caniformia, mamíferos, interacción |
| 1.0000 | 4 | Osos pardos | Movimientos rápidos en el bosque. | salvaje, bosque, úrsido, depredador superior, hibernación, gigante |
| 1.0000 | 1 | The Quick Brown Fox | Un zorro marrón rápido salta fácilmente sobre el perro perezoso. | salvaje, bosque, mamífero, naranja, agilidad, depredador |
Mejoras en las búsquedas
Las búsquedas pueden incluir un parámetro queryEnhancement opcional para especificar mejoras específicas del idioma. Esto incluye la coincidencia con sinónimos, raíces (por ejemplo, la raíz "salt" de "saltar"), ortografía incorrecta y palabras irrelevantes (como "un", "una" y "el").
El parámetro es un objeto con las siguientes propiedades:
enabled: Es un valor booleano que especifica si se deben habilitar las mejoras.languageCode: Es una cadena que especifica el idioma de las mejoras (por ejemplo,en-US).
En el siguiente ejemplo, se habilitan las mejoras para el idioma en-US:
"text_search": {
"structured_query": {
"text": {
"text": {
"text": "jump",
"fields": [ "Description" ],
"queryEnhancement": {
"enabled": true,
"languageCode": "en-US"
}
}
}
}
}
Los resultados de la consulta se muestran en la siguiente tabla:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 0.3419 | 1 | The Quick Brown Fox | Un zorro marrón rápido salta fácilmente sobre el perro perezoso. | salvaje, bosque, mamífero, naranja, agilidad, depredador |
| 0.3419 | 5 | Una historia astuta | El perro salta alto. | Astuto, salta |
Si no se especificó queryEnhancement o enabled era false, no se realizaría ninguna coincidencia.
Subconsultas combinadas
Las consultas combinadas aplican una operación booleana a dos o más subconsultas. Las operaciones admitidas son AND y OR.
Las búsquedas combinadas tienen las siguientes propiedades:
op: Es el operador booleano que se aplicará a las subqueries. El valor puede serANDoOR.subQueries: Es un array de subconsultas que se combinarán. Pueden ser cualquiera de los tipos de subconsultas admitidos, incluidas otras consultas combinadas. La profundidad máxima de anidación es de 2.boost: Opcional Es un multiplicador que se aplica a la puntuación de la búsqueda. El valor predeterminado es1.0.
Conjunción (AND)
El operador AND coincide con los objetos de datos que contienen los términos de todas las subconsultas.
En el siguiente ejemplo, se muestra cómo combinar tres búsquedas de texto con el operador AND:
"text_search": {
"structured_query": {
"combine": {
"op": "AND",
"subQueries": [
{
"text": {
"text": "Brown",
"fields": [ "Title" ]
}
},
{
"text": {
"text": "quick",
"fields": [ "Description" ]
}
},
{
"text": {
"text": "forest predator",
"fields": [ "Keywords" ]
}
}
]
}
}
}
En el ejemplo, las coincidencias solo se producen si coinciden las tres subconsultas.
Los resultados de la consulta se muestran en la siguiente tabla:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 5.0587 | 4 | Osos pardos | Movimientos rápidos en el bosque. | salvaje, bosque, úrsido, depredador superior, hibernación, gigante |
| 5.0587 | 1 | The Quick Brown Fox | Un zorro marrón rápido salta fácilmente sobre el perro perezoso. | salvaje, bosque, mamífero, naranja, agilidad, depredador |
Cuando una subconsulta de texto tiene varios campos para hacer coincidir, se aplica un OR implícito, como se muestra en el siguiente ejemplo:
"text_search": {
"structured_query": {
"combine": {
"op": "AND",
"subQueries": [
{
"text": {
"text": "Brown",
"fields": [ "Title", "Description" ]
}
},
{
"text": {
"text": "quick",
"fields": [ "Description" ]
}
},
{
"text": {
"text": "forest predator",
"fields": [ "Keywords" ]
}
}
]
}
}
}
En el ejemplo anterior:
La primera subconsulta coincide con el término
Brownque no distingue mayúsculas de minúsculas en el campoTitleoDescription.La segunda subconsulta coincide con el término
quickque no distingue mayúsculas de minúsculas en el campoDescription.La tercera subconsulta coincide con los términos que no distinguen mayúsculas de minúsculas
forestypredatoren cualquiera de los valores del campo de array de cadenasKeywords.Si las tres subconsultas coinciden, se genera una coincidencia en la consulta combinada.
Los resultados de la consulta se muestran en la siguiente tabla:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 6.3176 | 1 | The Quick Brown Fox | Un zorro marrón rápido salta fácilmente sobre el perro perezoso. | salvaje, bosque, mamífero, naranja, agilidad, depredador |
| 5.0587 | 4 | Osos pardos | Movimientos rápidos en el bosque. | salvaje, bosque, úrsido, depredador superior, hibernación, gigante |
Disyunción (OR)
El operador OR coincide con los objetos de datos que contienen los términos de al menos una de las subconsultas.
En el siguiente ejemplo, se muestra cómo combinar tres búsquedas de texto con el operador OR:
"text_search": {
"structured_query": {
"combine": {
"op": "OR",
"subQueries": [
{
"text": {
"text": "Brown",
"fields": [ "Title", "Description" ]
}
},
{
"text": {
"text": "quick",
"fields": [ "Description" ]
}
},
{
"text": {
"text": "forest predator",
"fields": [ "Keywords" ]
}
}
]
}
}
}
En el ejemplo, se produce una coincidencia si coincide alguna de las tres subqueries.
Los resultados de la consulta se muestran en la siguiente tabla:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 6.3176 | 1 | The Quick Brown Fox | Un zorro marrón rápido salta fácilmente sobre el perro perezoso. | salvaje, bosque, mamífero, naranja, agilidad, depredador |
| 5.0587 | 4 | Osos pardos | Movimientos rápidos en el bosque. | salvaje, bosque, úrsido, depredador superior, hibernación, gigante |
Agrupación
Las subconsultas combinadas se pueden anidar dentro de otras subconsultas combinadas para controlar el orden de evaluación.
En el siguiente ejemplo, se muestra cómo agrupar subconsultas:
"text_search": {
"structured_query": {
"combine": {
"op": "AND",
"subQueries": [
{
"combine": {
"op": "OR",
"subQueries": [
{
"text": {
"text": "Fox",
"fields": [ "Title" ]
}
},
{
"text": {
"text": "jumps",
"fields": [ "Description" ]
}
}
]
}
},
{
"unary": {
"op": "NOT",
"subQuery": {
"text": {
"text": "domestic",
"fields": [ "Keywords" ]
}
}
}
}
]
}
}
}
El ejemplo anterior es equivalente al siguiente:
(Fox sin distinguir mayúsculas de minúsculas en Title O jumps sin distinguir mayúsculas de minúsculas en Description) Y NO domestic sin distinguir mayúsculas de minúsculas en ninguno de los elementos Keywords.
En la siguiente tabla, se muestran los resultados de la consulta:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 3.5178 | 1 | The Quick Brown Fox | Un zorro marrón rápido salta fácilmente sobre el perro perezoso. | salvaje, bosque, mamífero, naranja, agilidad, depredador |
| 2.2589 | 5 | Una historia astuta | El perro salta alto. | Astuto, salta |
Subconsultas unarias
Las subconsultas unarias aplican una operación booleana a una sola subconsulta en una consulta estructurada. El operador NOT es la única operación unaria admitida.
Las búsquedas unarias tienen las siguientes propiedades:
op: Es el operador booleano que se aplicará a la subconsulta. El valor puede serNOT.subQuery: Es la subconsulta a la que se aplicará la operación unaria.boost: Opcional Es un multiplicador que se aplica a la puntuación de la búsqueda. El valor predeterminado es1.0.
Negación (NOT)
El operador NOT coincide con los objetos de datos que no contienen los términos de la subconsulta.
En el siguiente ejemplo, se muestra cómo usar el operador NOT:
"text_search": {
"structured_query": {
"unary": {
"op": "NOT",
"subQuery": {
"text": {
"text": "dog",
"fields": [ "Description" ]
}
}
}
}
}
Los resultados de la consulta se muestran en la siguiente tabla:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 1.000 | 4 | Osos pardos | Movimientos rápidos en el bosque. | salvaje, bosque, úrsido, depredador superior, hibernación, gigante |
| 1.000 | 6 | Mis días de verano sin hacer nada | Un cuento sobre relajarse durante las vacaciones de verano. | verano, relajarse, vacaciones, sol |
Cuando se aplica a un array de cadenas, el operador NOT coincide con un objeto de datos si el término no se incluye en ninguno de los elementos del array.
En el ejemplo, se produce una coincidencia si el término orange, que no distingue mayúsculas de minúsculas, no se incluye en ningún elemento del array de cadenas Keywords.
"text_search": {
"structured_query": {
"combine": {
"op": "AND",
"subQueries": [
{
"text": {
"text": "Brown",
"fields": [ "Title" ]
}
},
{
"text": {
"text": "quick",
"fields": [ "Description" ]
}
},
{
"text": {
"text": "forest predator",
"fields": [ "Keywords" ]
}
},
{
"unary": {
"op": "NOT",
"subQuery": {
"text": {
"text": "orange",
"fields": [ "Keywords" ]
}
}
}
}
]
}
}
}
Los resultados de la consulta se muestran en la siguiente tabla:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 6.0587 | 4 | Osos pardos | Movimientos rápidos en el bosque. | salvaje, bosque, úrsido, depredador superior, hibernación, gigante |
Boost
Cualquier subconsulta puede tener un parámetro boost para aplicar un multiplicador a la puntuación de la subconsulta. De forma predeterminada, todas las subconsultas tienen un boost de 1.0.
En el siguiente ejemplo, se muestra cómo potenciar una subconsulta:
"text_search": {
"structured_query": {
"combine": {
"op": "OR",
"subQueries": [
{
"text": {
"text": "fox",
"fields": [ "Title" ]
},
"boost": 1.0
},
{
"text": {
"text": "jumps",
"fields": [ "Description" ]
},
"boost": 1.0
},
{
"text": {
"text": "interaction",
"fields": [ "Keywords" ]
},
"boost": 5.0
}
]
}
}
}
Los resultados de la consulta se muestran en la siguiente tabla:
| Puntuación | ID | Título | Descripción | Palabras clave |
|---|---|---|---|---|
| 7.5534 | 3 | Zorro vs. perro | El zorro rápido supera al perro. | silvestre, doméstico, conflicto, caniformia, mamíferos, interacción |
| 2.5178 | 1 | The Quick Brown Fox | Un zorro marrón rápido salta fácilmente sobre el perro perezoso. | salvaje, bosque, mamífero, naranja, agilidad, depredador |
| 1.2589 | 5 | Una historia astuta | El perro salta alto. | Astuto, salta |
Búsqueda semántica
Esta búsqueda convierte tu consulta de texto en embeddings para encontrar resultados basados en el significado semántico. Usa el embedding-config definido en tu esquema para generar la incorporación de la búsqueda. Si se proporcionan varios campos vector_search, los resultados se combinan con pesos iguales.
Cómo realizar búsquedas con la búsqueda híbrida
Usa batch_search_data_objects para ejecutar varias búsquedas en paralelo (búsqueda de vectores, búsqueda de texto y búsqueda semántica). Los resultados se pueden combinar y clasificar de forma opcional con el clasificador ReciprocalRankFusion, que combina conjuntos de resultados con el algoritmo de fusión por clasificación recíproca (RRF).