Definición
El operador vectorSearch realiza una búsqueda ANN o ENN en incrustaciones de vectores en el campo especificado. Usa este operador para añadir capacidades de análisis de texto como búsqueda difusa, coincidencia de frases, filtrado por ubicación, coincidencia de patrones comodín y mucho más 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 ANN en clusters de Atlas que ejecutan MongoDB v6.0.11, v7.0.2, o posterior y ENN búsqueda en clústeres que ejecutan MongoDB v6.0.16, v7.0.10, v7.3.2, o posterior. También puedes usar la búsqueda vectorial de MongoDB con autogestionado o implementaciones locales de Atlas que crees con la CLI de Atlas. |
| Objeto | Opcional | Operador de Búsqueda de MongoDB operator para prefiltrar documentos basados en metadatos o criterios específicos de búsqueda. 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 el recall 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
Puede incluir la puntuación de cada documento en los resultados de búsqueda. Especifica la expresión $meta con el valor searchScore en la etapa $project. También puede especificar el valor searchScoreDetails para el campo scoreDetails de la expresión $meta para obtener un desglose detallado de la puntuación.
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:
- searchSequenceToken
En su lugar, usa
$skipy$limitdespués de la etapa$search.
No se pueden ejecutar consultas $search con el operador vectorSearch en el entorno de pruebas de MongoDB Search.
Ejemplos
Los siguientes ejemplos utilizan la colección sample_mflix.embedded_movies de los datos de muestras. Si cargas los datos de muestra y creas el índice de muestra en la colección, puedes ejecutar las siguientes ANN y ENN queries contra la colección después de reemplazar los marcadores de posición <connection-string> y <index-name> en las queries.