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

Cómo indexar incrustaciones vectoriales para la búsqueda vectorial

Puedes usar el tipo knnVector para indexar incrustaciones vectoriales. El campo vectorial puede representarse como un arreglo de números de los siguientes tipos:

  • BSON int32, int64, o double tipos de datos para consultar utilizando el operador knnBeta.

  • BSON double data type for querying using the $vectorSearch stage.

You can use the knnBeta operator, which is now deprecated, and the $vectorSearch stage in your aggregation pipeline to query fields indexed as knnVector.

Nota

No puedes utilizar MongoDB Search Visual Editor en Atlas Interfaz de Usuario para configurar campos de tipo knnVector. En su lugar, utiliza la búsqueda de MongoDB JSON Editor para configurar campos de tipo knnVector.

You can also use MongoDB Vector Search with local Atlas deployments that you create with the Atlas CLI. To learn more, see Create a Local Atlas Deployment.

No se pueden indexar campos dentro de arreglos de documentos ni campos dentro de arreglos de objetos (tipo MongoDB Search embeddedDocuments) como tipo knnVector.

The following is the JSON syntax for the knnVector type. Replace the default index definition with the following. To learn more about the fields, see Field Properties.

1{
2 "mappings": {
3 "dynamic": true|false,
4 "fields": {
5 "<field-name>": {
6 "type": "knnVector",
7 "dimensions": <number-of-dimensions>,
8 "similarity": "euclidean | cosine | dotProduct"
9 }
10 }
11 }
12}

El tipo knnVector tiene las siguientes opciones:

Opción
Tipo
Necesidad
Propósito

type

string

Requerido

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

dimensions

Int

Requerido

Número de dimensiones de los vectores, que MongoDB Search aplica tanto en el momento de creación del índice como al hacer una query. Este valor no puede ser mayor que 8192.

similarity

string

Requerido

Función de similitud vectorial para usar en la búsqueda de los K vecinos más cercanos. El valor puede ser uno de los siguientes:

  • euclidean - measures the distance between ends of vectors. This allows you to measure similarity based on varying dimensions. To learn more, see Euclidean.

  • cosine - measures similarity based on the angle between vectors. This allows you to measure similarity that isn't scaled by magnitude. You can't use zero magnitude vectors with cosine. To measure cosine similarity, we recommend that you normalize your vectors and use dotProduct instead. To learn more, see Cosine.

  • dotProduct - measures similarity like cosine, but takes into account the magnitude of the vector. This allows you to efficiently measure similarity based on both angle and magnitude. To learn more, see Dot Product.

    Si se normaliza la magnitud, cosine y dotProduct son casi idénticos a la hora de medir la similitud.

La siguiente definición de índice para la colección sample_mflix.embedded_movies indexa dinámicamente todos los campos indexables dinámicamente en la colección e indexa estáticamente plot_embedding campo como el tipo knnVector. El campo plot_embedding contiene incrustaciones creadas utilizando el modelo de incrustaciones text-embedding-ada-002 de OpenAI. La definición de índice especifica 1536 dimensiones vectoriales y mide la similitud utilizando euclidean.

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "plot_embedding": {
6 "type": "knnVector",
7 "dimensions": 1536,
8 "similarity": "euclidean"
9 }
10 }
11 }
12}

If you load the sample data on your cluster and create the preceding MongoDB Search index for this collection, you can run $vectorSearch queries against this collection. To learn more about the sample queries that you can run, see $vectorSearch Examples.

Para migrar los índices de MongoDB Search al Tipo vector, reemplace el tipo knnVector en la definición de índice para el campo vectorial con el tipo vector.

Ejemplo

To use the vector type for the plot_embedding field in the sample index definition for the sample_mflix.embedded_movies collection, replace the index definition with the following:

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "plot_embedding": {
6 "type": "vector",
7 "dimensions": 1536,
8 "similarity": "euclidean"
9 }
10 }
11 }
12}

Para ejecutar consultas contra el campo de tipo vector, debes utilizar el vectorSearch (Operador de búsqueda de MongoDB) en lugar del knnBeta Operador.

Nota

Tus knnBeta operador queries existentes pueden continuar ejecutarse contra el índice de tipo vector. Después de migrar el índice, se recomienda migrar inmediatamente tus queries de operadores knnBeta al vectorSearch (MongoDB Search Operator).