Definición
El operador vectorSearch realiza un Búsqueda de 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.
Sintaxis
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>} } } }
opciones
vectorSearch utiliza los siguientes campos para construir una query:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| Booleano | Opcional | Esto es obligatorio si se omite Indicador que especifica si se debe ejecutar la búsqueda de ENN o ANN. El valor puede ser uno de los siguientes:
Si se omite, es por defecto MongoDB Vector Search admite la búsqueda de ANN en clústeres Atlas que ejecutan MongoDB v6.0.11, v7.0.2, o posterior y ENN buscar en clústeres ejecutando MongoDB v6.0.16, v7.0.10, v7.3.2, o posterior. También puedes usar MongoDB Vector Search con autogestionadas o implementaciones locales de Atlas que crees con la Atlas CLI. |
| Objeto | Opcional | MongoDB búsqueda operador que se va a utilizar para prefiltrar documentos según metadatos o criterios de búsqueda específicos. Para obtener más información, consulta Pre-Filter. |
| Int | Requerido | |
| Int | Opcional | Este campo es obligatorio si Número de vecinos más cercanos a utilizar durante la búsqueda. El valor debe ser menor o igual a ( Recomendamos que especifique un número al menos 20 veces mayor que el número de documentos que se debe devolver ( Este patrón de sobrepetición es la forma recomendada de equilibrar la latencia y la capacidad de recuperación en las búsquedas de ANN, y recomendamos ajustar este parámetro según el tamaño específico del conjunto de datos y los requisitos de la query. |
| String | Requerido | Campo de tipo vector indexado para la búsqueda. |
| Arreglo de enteros o flotantes | Requerido | Arreglo de números de Para obtener más información sobre cómo generar BSON El tamaño del arreglo debe coincidir con el número de dimensiones de vector ( 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 |
| 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:
Para obtener información sobre cómo usar |
Comportamiento
índice de MongoDB Search
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.
Pre-Filtro
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.
score
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.
vectorSearch Limitaciones de operador
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.
No se puede usar el operador vectorSearch para buscar en campos indexados con un índice de tipo vectorSearch.
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.
Ejemplos
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.