Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

vectorSearch (MongoDB Search Operador)

El operador vectorSearch realiza una búsqueda ANN o ENN en incrustaciones vectoriales en el campo especificado. Utiliza este operador para agregar capacidades de texto analizado, como búsqueda difusa, coincidencia de frases, filtrado de ubicación, coincidencia de patrones comodín, entre otras, junto con la búsqueda semántica.

vectorSearch tiene la siguiente sintaxis:

{
"$search": {
"index": "<index name>", // optional, defaults to "default"
"vectorSearch": {
"exact": true | false,
"filter": {<operator-specification>},
"limit": <number-of-results>,
"numCandidates": <number-of-candidates>,
"path": "<field-to-search>",
"queryVector": [<array-of-numbers>],
"score": {<options>}
}
}
}

vectorSearch utiliza los siguientes campos para construir una query:

Campo
Tipo
Necesidad
Descripción

exact

Booleano

Opcional

Esto es obligatorio si se omite numCandidates.

Indicador que especifica si se debe ejecutar la búsqueda de ENN o ANN. El valor puede ser uno de los siguientes:

  • false - para ejecutar la búsqueda de ANN

  • true - para ejecutar la búsqueda de ENN

Si se omite, es por defecto false.

MongoDB Vector Search supports ANN search on Atlas clusters running MongoDB v6.0.11, v7.0.2, or later and ENN search on clusters running MongoDB v6.0.16, v7.0.10, v7.3.2, or later. You can also use MongoDB Vector Search with self-managed or local Atlas deployments that you create with the Atlas CLI.

filter

Objeto

Opcional

Operador de Búsqueda de MongoDB operator para prefiltrar documentos basados en metadatos o criterios específicos de búsqueda.

To learn more, see Pre-Filter.

limit

Int

Requerido

Número de documentos (solo de tipo int) que se devolverán en los resultados. Este valor no puede superar el valor de numCandidates si especifica numCandidates.

On sharded clusters, you must use $limit after the $search stage to limit the number of documents in the results.

numCandidates

Int

Opcional

Este campo es obligatorio si exact es false o si se omite.

Número de vecinos más cercanos a utilizar durante la búsqueda. El valor debe ser menor o igual a (<=) 10000. No puede especificar un número inferior al número de documentos a devolver (limit).

Recomendamos que especifique un número al menos 20 veces mayor que el número de documentos que se debe devolver (limit) para aumentar la precisión.

This overrequest pattern is the recommended way to trade off latency and :recall in your ANN searches, and we recommend tuning this parameter based on your specific dataset size and query requirements.

path

String

Requerido

Campo de tipo vector indexado para la búsqueda.

queryVector

Arreglo de enteros o flotantes

Requerido

Array of numbers of float32, BSON BinData vectors with subtype float32, or BSON BinData vectors with subtype int1 or int8 type that represent the query vector.

To learn more about generating BSON binData vectors with subtype float32, int8, or int1, see How to Ingest Pre-Quantized Vectors.

El tamaño del arreglo debe coincidir con el número de dimensiones de vector (numDimensions) especificadas en la definición del índice para el campo.

Se debe incrustar la query con el mismo modelo que se usó para incrustar los datos.

Puedes query tus incrustaciones con vectores de fidelidad completa, mientras el subtipo del vector sea el mismo. Esto solo es posible con vectores binData con subtipo float32. Si usas cualquier otro subtipo (int8 o int1), MongoDB Search no devuelve ningún resultado ni error.

score

Objeto

Opcional

Puntuación asignada a los resultados de términos de búsqueda coincidentes. Utiliza una de las siguientes opciones para modificar el puntaje:

  • boostMultiplica la puntuación resultante por el número dado.

  • constant: reemplazar la puntuación del resultado por el número dado.

  • function: reemplazar el puntaje de resultados usando la expresión dada.

Para obtener información sobre cómo usar score en tu query, consulta Calificación de los Documentos en los Resultados.

Deberá indexar los campos a buscar utilizando el operador vectorSearch. Puedes indexar los siguientes tipos de campos en la definición del índice de MongoDB Search:

  • Campo que contiene embeddings vectoriales. Este es el campo que se especifica en la opción de query path.

  • Campos para pre-filtrar los documentos. Estos son los campos que especificas en la opción de query filter.

Puedes prefiltrar los documentos para acotar el alcance de tu búsqueda semántica. Utiliza cualquier operador de búsqueda de MongoDB compatible en el campo filter para consultar y filtrar los documentos.

Importante

Las **query**s filtradas suelen ser más lentas que una **query** no filtrada equivalente.

Debe indexar los campos con los que desea filtrar sus datos en la definición de índice para el tipo vector.

You can include the score of each document in your search results. Specify the $meta expression with the searchScore value in the $project stage. You can also specify the searchScoreDetails value for the scoreDetails field $meta expression for a detailed breakdown of the score.

Para aprender más, se puede consultar Puntúe los documentos en los resultados y Detalles de la puntuación.

El operador vectorSearch debe ser el operador de nivel superior en las consultas. Por lo tanto, no puedes usar el operador vectorSearch dentro de los siguientes operadoresde búsqueda de MongoDB.

You can't use the vectorSearch operator to query fields indexed using a vectorSearch type index.

No se pueden usar las siguientes opciones de $search con el operador vectorSearch:

No se pueden ejecutar consultas $search con el operador vectorSearch en el entorno de pruebas de MongoDB Search.

The following examples use the sample_mflix.embedded_movies collection from the sample data. If you load the sample data and create the sample index on the collection, you can run the following ANN and ENN queries against the collection after replacing the <connection-string> and <index-name> placeholders in the queries.