Docs Menu
Docs Home
/ /

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

Puedes utilizar el knnVector Tipo para indexar incrustaciones vectoriales. El campo vectorial se puede representar como una matriz de números de los siguientes tipos:

  • BSON int32, oint64 double tipos de datos para realizar consultas utilizando el operador knnBeta.

  • BSON double Tipo de datos para realizar consultas utilizando la $vectorSearch etapa.

Puede utilizar el operador knnBeta, que ahora está obsoleto, y la $vectorSearch etapa en su canal de agregación para consultar campos indexados knnVector como.

Nota

No puedes usar la búsqueda de MongoDB Visual Editor En la interfaz de usuario de Atlas, configure campos de tipo knnVector. En su lugar, utilice la búsqueda de MongoDB 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 matrices de documentos o campos dentro de matrices de objetos (tipo embeddedDocuments de MongoDB Search) como knnVector tipo.

A continuación, se muestra la sintaxis JSON para el knnVector tipo. Reemplace la definición del índice predeterminado por la siguiente. Para obtener más información sobre los campos, consulte 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 vectoriales que MongoDB Search aplica en el momento de la indexación y la consulta. 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 permite medir la similitud según las dimensiones. Para más información, consulte Euclidiana.

  • cosine Mide la similitud según el ángulo entre vectores. Esto permite medir la similitud sin escalar por magnitud. No se pueden usar vectores de magnitud cero cosine con. Para medir la similitud del coseno, recomendamos normalizar los vectores y dotProduct usar. Para obtener más información, consulte Coseno.

  • dotProduct Mide cosine la similitud como, pero considera la magnitud del vector. Esto permite medir la similitud eficientemente basándose tanto en el ángulo como en la magnitud. Para obtener más información, consulte Producto escalar.

    Si normalizamos la magnitud, cosine y dotProduct son casi idénticos en la medición de similitud.

La siguiente definición de índice para la colección sample_mflix.embedded_movies indexa dinámicamente todos los campos indexables dinámicamente de la colección e indexa estáticamente el campo plot_embedding como tipo knnVector. El campo plot_embedding contiene incrustaciones creadas con el modelo de incrustaciones text-embedding-ada-002 de OpenAI. La definición de índice especifica las dimensiones del vector 1536 y mide la similitud mediante 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 ejemplo en su clúster y crea el índice de búsqueda de MongoDB anterior para esta colección, puede ejecutar consultas en ella. Para obtener más información sobre las consultas de ejemplo que puede ejecutar,$vectorSearch consulte Ejemplos de $vectorSearch.

Para migrar sus índices de búsqueda de MongoDB al tipo vectorial, reemplace el knnVector tipo en su definición de índice para el campo vectorial con el vector tipo.

Ejemplo

Para utilizar el vector tipo para el plot_embedding campo en la definición de índice de muestra para la sample_mflix.embedded_movies colección, reemplace la definición de í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