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

Búsqueda vectorial de MongoDB

En esta guía, puedes aprender cómo usar la funcionalidad MongoDB Vector Search en el controlador de Kotlin. La clase de desarrolladores Aggregates brinda el método asistente vectorSearch() que puedes usar para crear una etapa de pipeline $vectorSearch. Esta etapa del pipeline permite realizar una búsqueda semántica en tus documentos. Una búsqueda semántica es un tipo de búsqueda que localiza información que es similar en significado, pero no necesariamente idéntica, al término o frase de búsqueda proporcionado.

Importante

Compatibilidad de características

Para aprender qué versiones de MongoDB Atlas admiten esta funcionalidad, consulte Limitaciones en la documentación de MongoDB Atlas.

Para usar esta funcionalidad, debes crear un índice de búsqueda vectorial e indexar tus incrustaciones vectoriales. Para aprender cómo crear programáticamente un índice de búsqueda vectorial, consulta la sección Índices de MongoDB Search y MongoDB Vector Search en la guía de Índices. Para obtener más información sobre las incrustaciones vectoriales, consulte Cómo indexar incrustaciones vectoriales para la búsqueda vectorial en la documentación de Atlas.

Una vez que hayas creado un índice de búsqueda vectorial en tus incrustaciones vectoriales, puedes hacer referencia a este índice en la etapa de tu pipeline, como se muestra en la siguiente sección.

El ejemplo en esta sección utiliza datos modelados con la siguiente clase de datos de Kotlin:

data class MovieAlt(
val title: String,
val year: Int,
val plot: String,
val plotEmbedding: List<Double>
)

Este ejemplo muestra cómo construir un pipeline de agregación que utiliza el método vectorSearch() para realizar una búsqueda vectorial exacta con las siguientes especificaciones:

  • Busca valores de campo de plotEmbedding utilizando incrustaciones de vectores de un valor de string

  • Usa el índice de búsqueda vectorial mflix_movies_embedding_index

  • Devuelve 1 documento

  • Filtros para documentos en los que el valor de year es al menos 2016

Aggregates.vectorSearch(
SearchPath.fieldPath(MovieAlt::plotEmbedding.name),
BinaryVector.floatVector(floatArrayOf(0.0001f, 1.12345f, 2.23456f, 3.34567f, 4.45678f)),
"mflix_movies_embedding_index",
1.toLong(),
exactVectorSearchOptions().filter(Filters.gte(MovieAlt::year.name, 2016))
)

Tip

Query Vector Type

El ejemplo anterior crea una instancia de BinaryVector para que sirva como vector de query, pero también puedes crear un List de instancias de Double. Sin embargo, se recomienda usar el tipo BinaryVector para mejorar la eficiencia del almacenamiento.

Tip

Ejemplos de búsqueda vectorial en Kotlin

Visita la documentación de Atlas para encontrar más tutoriales sobre cómo usar el driver Kotlin para realizar una búsqueda vectorial con MongoDB.

Para obtener más información sobre los métodos y tipos mencionados en esta guía, vea la siguiente documentación de la API: