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 incrustaciones vectoriales para la búsqueda vectorial

Puede utilizar el knnVector para indexar incrustaciones vectoriales. El campo vectorial se puede representar 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 tipo de datos para consultar usando la etapa $vectorSearch.

Puedes usar el operador knnBeta, que ahora está obsoleto, y la etapa $vectorSearch en tu pipeline de agregación para campos indexados de query como knnVector.

Nota

No se puede usar la búsqueda de MongoDB Visual Editor en la interfaz de usuario de Atlas para configurar campos de tipo knnVector. En su lugar, usa MongoDB Search JSON Editor para configurar campos de tipo knnVector.

También puede utilizar la búsqueda vectorial de MongoDB con las implementaciones locales de Atlas que cree con Atlas CLI. Para obtener más información, consulte Crear una implementación Local de Atlas.

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

A continuación, se muestra la sintaxis de JSON para el tipo knnVector. Sustituye la definición del índice por defecto por la siguiente. Para obtener más información sobre los campos, consulta Propiedades de campo.

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 - mide la distancia entre los extremos de los vectores. Esto le permite medir la similitud según diferentes dimensiones. Para obtener más información, consulta Euclidean.

  • cosine - mide la semejanza en base al ángulo entre los vectores. Esto te permite medir la similitud que no está escalada por la magnitud. No puedes usar vectores de magnitud cero con cosine. Para medir la similitud de coseno, se recomienda normalizar los vectores y, en su lugar, usar dotProduct. Para obtener más información, consulta Cosine.

  • dotProduct - mide la similitud como cosine, pero tiene en cuenta la magnitud del vector. Esto le permite medir eficientemente la similitud en función tanto del ángulo como de la magnitud. Para obtener más información, consulte Producto punto.

    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}

Si carga los datos de muestra en su clúster y crea el índice de MongoDB Search anterior para esta colección, puede ejecutar consultas $vectorSearch contra esta colección. Para obtener más información sobre los queries de muestra que puede ejecutar, consulte Ejemplos de $vectorSearch.

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

Para usar el tipo vector para el campo plot_embedding en la definición de índice de muestra para la colección sample_mflix.embedded_movies, reemplace la definición del índice con lo siguiente:

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

Volver

geo

En esta página