Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

Cómo indexar campos vectoriales

Puedes usar el tipo vector para indexar incrustaciones vectoriales. El campo vectorial 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 pipeline de agregación $search para consultar campos indexados como el tipo vector.

Se aplican las siguientes limitaciones:

  • No se puede indexar campos con arreglos de objetos (tipo MongoDB Search embeddedDocuments) 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 etapa de $vectorSearch para query campos indexados como el tipo vector.

  • Puedes indexar campos como el tipo vector en MongoDB Search Playground.

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, puede 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 en tus incrustaciones vectoriales, y algunos modelos ofrecen varias opciones para la cantidad de dimensiones que se generan. Para obtener más información, consulte 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 aprender más, consulte Acerca de la Quantization.

indexingMethod

String

Opcional

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

  • hnsw - para índices basados en grafos donde los vectores similares están conectados

  • flat - para índices planos, no de grafo

If omitted, defaults to hnsw. If you specify hnsw, MongoDB Vector Search performs ANN search over the Hierarchical Navigable Small Worlds graph and ENN search over full-fidelity vectors. You can also specify hnswOptions.

If you specify flat, MongoDB Vector Search performs a full scan over full-fidelity or quantized vectors. During an ANN search, MongoDB Vector Search ignores the settings for numCandidates. For ENN search, MongoDB Vector Search performs a full scan over full-fidelity vectors.

hnswOptions

Objeto

Opcional

Parameters to use for Hierarchical Navigable Small Worlds graph construction. If omitted, uses the default values for the maxEdges and numEdgeCandidates parameters.

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

Maximum number of edges (or connections) that a node can have in the Hierarchical Navigable Small Worlds graph. Value can be between 16 and 64, both inclusive. If omitted, defaults to 16. For example, for a value of 16, each node can have a maximum of sixteen outgoing edges at each layer of the Hierarchical Navigable Small Worlds graph.

A higher number improves :recall (accuracy of search results) because the graph is better connected. However, this also increases query and indexing time by increasing the number of neighbors to evaluate per graph node, and requires more memory to store the additional nodes for each connection in the Hierarchical Navigable Small Worlds graph.

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 el datos de muestra. Después de cargar la colección, puedes utilizar 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 obtener una query de muestra que se ejecutar en este índice, consulta Ejemplo.

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 (por defecto)