Overview
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.
Realiza una búsqueda vectorial
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.
Ejemplo de búsqueda vectorial
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
plotEmbeddingutilizando incrustaciones de vectores de un valor de stringUsa el índice de búsqueda vectorial
mflix_movies_embedding_indexDevuelve 1 documento
Filtros para documentos en los que el valor de
yeares al menos2016
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.
Documentación de la API
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: