Definición
El operador vectorSearch realiza un Búsqueda ANN o ENN en incrustaciones vectoriales en el campo especificado. Utilice este operador para añadir funciones de texto analizado, como búsqueda difusa, coincidencia de frases, filtrado por ubicación, coincidencia de patrones con comodines y 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 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 El tamaño de la matriz debe coincidir con la cantidad de dimensiones del 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
Puede aplicar un filtro previo a los documentos para reducir el alcance de su búsqueda semántica y asegurarse de que no se consideren todos los vectores para la comparación. Puedes utilizar cualquier operador compatible de MongoDB Search en el campo filter para query y filtrar los documentos.
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 obtener más información,consulte Calificar los documentos en los resultados y devolver los 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 puedes usar el operador vectorSearch para consultar campos indexados usando un tipo de índice vectorSearch.
No se pueden usar las siguientes opciones de $search con el operador vectorSearch:
No se pueden ejecutar consultas con $search el vectorSearch operador en el área de búsqueda de MongoDB.
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, podrás ejecutar las siguientes consultas ANN y ENN en la colección después de reemplazar los marcadores de posición <connection-string> y <index-name> en las consultas.