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, odoubletipos de datos para consultar utilizando el operador knnBeta.BSON
doubletipo de dato para realizar consultas usando la etapa$vectorSearch.
Puedes utilizar el operador knnBeta, que ahora está en desuso, y la etapa $vectorSearch en tu pipeline de agregación para consultar los campos indexados como 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.
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.
knnVector Limitaciones de tipo
No se pueden indexar campos dentro de arreglos de documentos ni campos dentro de arreglos de objetos (tipo MongoDB Search embeddedDocuments) como tipo knnVector.
Define the Index for the knnVector Type
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 }
Configure knnVector Field Properties
El tipo knnVector tiene las siguientes opciones:
Opción | Tipo | Necesidad | Propósito |
|---|---|---|---|
| string | Requerido | Etiqueta legible por humanos que identifica este tipo de campo. El valor debe ser |
| 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 |
| 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:
|
Try an Example for the knnVector Type
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 cargas los datos de muestra en tu clúster y creas el índice MongoDB Search mencionado anteriormente para esta colección, puedes ejecutar $vectorSearch queries en esta colección. Para aprender más información sobre las queries de muestra que puede ejecutar, consulte Ejemplos de $vectorSearch.
Migrate to vector Type
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 de vector para el campo plot_embedding en la definición de índice de muestra para la colección sample_mflix.embedded_movies, reemplaza 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).