Overview
En esta guía, podrá aprender a utilizar el Función de búsqueda vectorial de MongoDB en el controlador Kotlin. Aggregates La clase builders proporciona el vectorSearch() método auxiliar que permite crear una etapa de pipeline `$vectorSearch`. Esta etapa permite realizar una búsqueda semántica en los documentos. Una búsqueda semántica localiza información con significado similar, pero no necesariamente idéntico, al término o frase de búsqueda proporcionados.
Importante
Compatibilidad de características
Para saber qué versiones de MongoDB Atlas admiten esta función, consulte Limitaciones en la documentación de MongoDB Atlas.
Realiza una búsqueda vectorial
Para usar esta función, debe crear un índice de búsqueda vectorial e indexar sus incrustaciones vectoriales. Para obtener información sobre cómo crear un índice de búsqueda vectorial mediante programación, consulte Sección "Búsqueda MongoDB" e "Índices de Búsqueda Vectorial MongoDB" de la guía de Índices. Para obtener más información sobre incrustaciones vectoriales, consulte "Cómo indexar incrustaciones vectoriales para la búsqueda vectorial" en la documentación de Atlas.
Después de crear un índice de búsqueda vectorial en sus incrustaciones vectoriales, puede hacer referencia a este índice en su etapa de canalización, como se muestra en la siguiente sección.
Ejemplo de búsqueda de vectores
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 crear una canalización de agregación que utiliza el método vectorSearch() para realizar una búsqueda vectorial exacta con las siguientes especificaciones:
Busca valores de campo
plotEmbeddingmediante incrustaciones vectoriales de un valor de cadenaUtiliza el índice de búsqueda vectorial
mflix_movies_embedding_indexDevuelve 1 documento
Filtros para documentos en los que el valor
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
Tipo de vector de consulta
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, consulte la siguiente documentación de API: