Overview
En esta guía, puedes aprender cómo utilizar el MongoDB Vector Search funcionalidad en el driver de Kotlin. el Aggregates La clase desarrolladores proporciona el método asistente vectorSearch() que puede usar para crear una etapa de pipeline $vectorSearch. Esta etapa del pipeline permite realizar una búsqueda semántica en los documentos. Una búsqueda semántica es un tipo de búsqueda que localiza información con un significado similar, pero no necesariamente idéntica, al término o frase de búsqueda proporcionada.
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 de
plotEmbeddingutilizando incrustaciones de vectores de un valor de stringUtiliza 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
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: