Docs Menu
Docs Home
/ /

vectorSearch (Operador de búsqueda de MongoDB)

El operador vectorSearch realiza una 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 consulta:

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 ANN en clústeres de Atlas con MongoDB6.0.11 v, v7.0.2 o posterior, y la búsqueda ENN en clústeres con MongoDB v,,, 6 0167010v,,,7 32v,, o posterior. También puede usar MongoDB Vector Search con implementaciones de Atlas locales o autoadministradas que cree con la CLI de Atlas.

filter

Objeto

Opcional

MongoDB búsqueda Operador a utilizar para prefiltrar documentos según metadatos o criterios de búsqueda específicos.

Para obtener más información, consulte Prefiltro.

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

Matriz de números 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.

Puede consultar sus incrustaciones con vectores de alta fidelidad, siempre que el subtipo del vector sea el mismo. Esto solo es posible con vectores binData con subtipo float32. Si usa cualquier otro subtipo (int8 o int1), MongoDB Search no devuelve resultados ni errores.

score

Objeto

Opcional

Puntuación asignada a los resultados de búsqueda coincidentes. Utilice una de las siguientes opciones para modificar la puntuación:

  • boost:multiplica la puntuación del resultado 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 el uso de score en su consulta,consulte Calificar los documentos en los resultados.

Debe indexar los campos de búsqueda mediante el operador vectorSearch. Puede indexar los siguientes tipos de campos en la definición del índice de búsqueda de MongoDB:

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

  • Campos para prefiltrar los documentos. Estos son los campos que se especifican en la opción de consulta filter.

Puede prefiltrar los documentos para limitar el alcance de su búsqueda semántica y garantizar que no se consideren todos los vectores en la comparación. Puede usar cualquier operador de búsqueda compatible con MongoDB en el campo filter para consultar y filtrar los documentos.

Debes indexar los campos cuyos datos deseas filtrar en la definición de índice para el vector tipo.

Puede incluir la puntuación de cada documento en los resultados de búsqueda. Especifique la expresión $meta con el searchScore valor en la etapa. También puede especificar $project el searchScoreDetails valor para la expresión scoreDetails $meta del campo 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 vectorSearch operador debe ser el operador de nivel superior en sus consultas. Por lo tanto, no puede usar el vectorSearch operador dentro de los siguientes operadores de búsqueda de MongoDB:

No puede utilizar el vectorSearch operador para consultar campos indexados mediante un índice de tipo vectorSearch.

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

No se pueden ejecutar consultas con $search el vectorSearch operador en el área de búsqueda de MongoDB.

Los siguientes ejemplos utilizan la sample_mflix.embedded_movies colección de los datos de muestra. Si carga los datos de muestra y crea el índice de muestra en la colección, puede ejecutar las siguientes consultas ANN y ENN en la colección después de reemplazar los <connection-string> <index-name> marcadores de posición y en las consultas.

Volver

text

En esta página