Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

vectorSearch (MongoDB Search Operador)

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.

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 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.

filter

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.

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.

En clústeres fragmentados, debe utilizar después $limit $search de la etapa para limitar la cantidad de documentos en los resultados.

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.

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.

path

String

Requerido

Campo de tipo vector indexado para la búsqueda.

queryVector

Arreglo de enteros o flotantes

Requerido

Arreglo de números de float32, vectores BSON BinData con subtipo float32 o vectores BSON BinData con subtipo int1 o tipo int8 que representan el vector de query.

Para obtener más información sobre cómo generar binData vectores BSON con el subtipo,float32 int8 int1o, consulte Cómo ingerir vectores precuantificados.

El tamaño de la matriz debe coincidir con la cantidad de dimensiones delnumDimensions vector () 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:reemplace la puntuación del resultado con 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.

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.

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.

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.

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.

Volver

text

En esta página