Overview
En esta guía, aprenderá a usar la función de búsqueda vectorial de MongoDB en el controlador de Kotlin. La Aggregates clase de constructores proporciona el vectorSearch() método auxiliar que puede usar para crear una etapa de canalización $vectorSearch. Esta etapa de canalización le permite realizar una búsqueda semántica en sus documentos. Una búsqueda semántica es un tipo de búsqueda que localiza información similar en significado, pero no necesariamente idéntica, al término o frase de búsqueda proporcionados.
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: