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

Cómo indexar campos vectoriales

Puedes utilizar el vector tipo de incrustaciones vectoriales de índice. El campo del vector debe contener un arreglo de números de los siguientes tipos:

  • BSON int32, int64, o double tipos de datos

  • BSON double Tipo de dato

Puedes utilizar el operador vectorSearch, similar a la etapa $vectorSearch, en tu $search pipeline de agregación para consultar campos indexados como el tipo vector.

Se aplican las siguientes limitaciones:

  • No se pueden indexar campos con matrices de objetos (tipo embeddedDocuments de MongoDB Search) como tipo vector.

  • No puedes establecer storedSource como true en definiciones de índices que contengan tipo vector. En su lugar, usa include para especificar los campos a almacenar en mongot o usa exclude para excluir el campo de tipo vector del almacenamiento.

  • No puedes usar la $vectorSearch etapa para query campos indexados como el tipo vector.

  • Puede indexar campos como tipo vector en el área de búsqueda de MongoDB.

El tipo vector de búsqueda de MongoDB toma los siguientes parámetros:

Opción
Tipo
Necesidad
Descripción

type

vector

Requerido

Etiqueta legible por humanos que identifica este tipo de campo. El valor debe ser vector.

numDimensions

Int

Requerido

Cantidad de dimensiones vectoriales que MongoDB Search aplica en el momento de la indexación y de la consulta. Solo puedes establecer este campo para campos de tipo vector. Debes especificar un valor menor o igual a 8192.

Para la indexación de vectores cuantizados o BinData, puedes especificar uno de los siguientes valores:

  • 1 a 8192 para vectores int8 para la ingesta.

  • Múltiplo de 8 para los vectores int1 para la ingesta.

  • 1 a 8192 para vectores binData(float32) y array(float32) para la cuantificación escalar automática.

  • Múltiplo de 8 para los vectores binData(float32) y array(float32) para la cuantificación binaria automática.

El modelo de incrustación que elijas determina el número de dimensiones de tus incrustaciones vectoriales, y algunos modelos ofrecen múltiples opciones para la cantidad de dimensiones que se generan. Para aprender más, consulta Elegir un método para crear incrustaciones.

similarity

String

Requerido

Función de similitud vectorial para usar en la búsqueda de los K vecinos más cercanos. Puede configurar este campo solo para campos de tipo vector.

Puede especificar uno de los siguientes valores:

  • euclidean - mide la distancia entre los extremos de los vectores.

  • cosine - mide la similitud basándose en el ángulo entre vectores.

  • dotProduct - mide la similitud como cosine, pero tiene en cuenta la magnitud del vector.

Para obtener más información, consulte Acerca de las funciones de similitud.

quantization

String

Opcional

Tipo de cuantización automática de vectores para tus vectores. Utiliza esta configuración solo si tus incrustaciones son vectores float o double.

Puede especificar uno de los siguientes valores:

  • none : indica que no hay cuantización automática para las incrustaciones vectoriales. Utilice esta configuración si dispone de vectores precuantizados para la ingesta. Si se omite, este es el valor por defecto.

  • scalar : indica la cuantificación escalar, que transforma los valores en enteros de 1 byte.

  • binary - Indica cuantización binaria, que transforma los valores a un solo bit. Para utilizar este valor, numDimensions debe ser un múltiplo de 8.

    Si la precisión es crítica, seleccione none o scalar en lugar de binary.

Para obtener más información, consulte Cuantificación de vectores.

indexingMethod

String

Opcional

Estructura de índice para el campo vectorial. El valor puede ser:

  • hnsw - para índices basados ​​en grafos donde se conectan vectores similares

  • flat - para índice plano, no gráfico

Si hnsw se omite, el valor predeterminado es. Si hnsw especifica, MongoDB Vector Search realiza una búsqueda ANN sobre los mundos pequeños navegables jerárquicos. Búsqueda de grafos y ENN sobre vectores de fidelidad completa. También puede especificar hnswOptions.

Si flat especifica, MongoDB Vector Search realiza un escaneo completo de vectores de fidelidad completa o cuantizados. Durante una búsqueda ANN, MongoDB Vector Search ignora la configuración numCandidates de. Para la búsqueda ENN, MongoDB Vector Search realiza un escaneo completo de vectores de fidelidad completa.

hnswOptions

Objeto

Opcional

Parámetros para usar en la construcción de grafos de Hierarchical Navigable Small Worlds. Si se omite, usa los valores por defecto para los parámetros maxEdges y numEdgeCandidates.

IMPORTANTE: Esta funcionalidad está disponible como vista previa. La modificación de los valores por defecto podría impactar negativamente a tu índice y queries de MongoDB Search.

hnswOptions.
maxEdges

Int

Opcional

Número máximo de aristas (o conexiones) que un nodo puede tener en el grafo de Hierarchical Navigable Small Worlds. El valor puede estar entre 16 y 64, inclusive ambos. Si se omite, es por defecto 16. Por ejemplo, para un valor de 16, cada nodo puede tener un máximo de dieciséis aristas de salida en cada capa del grafo de Hierarchical Navigable Small Worlds.

Un número más alto mejora la recuperación (exactitud de los resultados de búsqueda) porque el grafo está mejor conectado. Sin embargo, esto también aumenta el tiempo de query e indexación al incrementar el número de vecinos a evaluar por nodo del grafo, y requiere más memoria para almacenar los nodos adicionales para cada conexión en el Hierarchical Navigable Small Worlds grafo.

hnswOptions.
numEdgeCandidates

Int

Opcional

De forma análoga a numCandidates durante el query, este parámetro controla el número máximo de nodos que se deben evaluar a fin de encontrar los vecinos más cercanos para conectarse a un nuevo nodo. El valor puede estar entre 100 y 3200, ambos inclusive. Si se omite, el valor es por defecto 100.

Un número mayor proporciona un grafo con conexiones de alta calidad, lo que puede mejorar la calidad de la búsqueda (recall), pero también puede aumentar la latencia de la query.

El siguiente ejemplo de definición de índice utiliza la colección sample_mflix.embedded_movies en los datos de muestra. Después de cargar la colección, puedes usar el siguiente ejemplo para indexar el campo plot_embedding_voyage_3_large como el tipo vector para ejecutar consultas utilizando el vectorSearch (operador de búsqueda de MongoDB). Para ver una query de muestra que se ejecutará sobre este índice, consulte Ejemplos.

Esta definición de índice indexa automáticamente todos los campos indexables dinámicamente utilizando el por defecto typeSet y también indexa el campo plot_embedding_voyage_3_large como tipo vector con la siguiente configuración:

  • 2048 número de dimensiones

  • dotProduct función de similitud

  • scalar cuantización

  • hnsw Método de indexación (predeterminado)

Volver

uuid

En esta página