Overview
En esta guía, puede aprender a utilizar el controlador de sincronización de Kotlin para realizar
Consultasde búsqueda vectorial de MongoDB. Aggregates La clase Builder proporciona el vectorSearch() método auxiliar, que puede utilizar para crear una etapa de canalización $vectorSearch.
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
Antes de poder realizar consultas de búsqueda vectorial de MongoDB, debe crear un índice de búsqueda vectorial de MongoDB en su colección. Para aprender a crear un índice de búsqueda vectorial mediante programación, consulte Guía de índices de búsqueda vectorial y de búsqueda de MongoDB.
Luego, puede ejecutar una consulta de búsqueda vectorial de MongoDB mediante el método vectorSearch() en una canalización de agregación. Este método acepta los siguientes parámetros:
path:El campo a buscarqueryVector:La incrustación vectorial que representa su consulta de búsquedaindexName:El nombre del índice de búsqueda vectorial de MongoDB que se utilizarálimit:El número máximo de resultados a devolveroptions: (Opcional) Un conjunto de opciones que puede utilizar para configurar la consulta de búsqueda vectorial
Ejemplo básico de búsqueda vectorial
Este ejemplo ejecuta una consulta de búsqueda vectorial de MongoDB que realiza las siguientes acciones:
Consulta el campo vectorial
plot_embedding.Limita los resultados a
5documentos.Especifica una búsqueda vectorial de Vecino Más Cercano Aproximado (ANN) que considera
150candidatos. Para obtener más información sobre las búsquedas ANN, consulta Búsqueda ANN en la documentación de MongoDB Atlas.
val vectorValues = FloatArray(1536) { i -> (i % 10).toFloat() * 0.1f } val queryVector = BinaryVector.floatVector(vectorValues) val indexName = "<vector search index>" // Specifies the path of the field to search val fieldSearchPath: FieldSearchPath = fieldPath("plot_embedding") // Creates the vector search pipeline stage with a limit and numCandidates val pipeline: List<Bson> = listOf( vectorSearch( fieldSearchPath, queryVector, indexName, 5L, approximateVectorSearchOptions(150) ), project( Projections.fields( Projections.excludeId(), Projections.include("title") ) ) ) val results = collection.aggregate(pipeline) results.forEach { doc -> println(doc.toJson()) }
{"title": "Berserk: The Golden Age Arc I - The Egg of the King"} {"title": "Rollerball"} {"title": "After Life"} {"title": "What Women Want"} {"title": "Truth About Demons"}
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.
Ejemplo de puntuación de búsqueda vectorial
El siguiente ejemplo muestra cómo ejecutar la misma consulta de búsqueda vectorial que el ejemplo anterior e imprimir la metapuntuación de búsqueda vectorial de los documentos. Esta puntuación representa la relevancia de cada documento para el vector de consulta:
val pipeline: List<Bson> = listOf( vectorSearch( fieldSearchPath, queryVector, indexName, 5L, approximateVectorSearchOptions(150) ), project( Projections.fields( Projections.excludeId(), Projections.include("title"), Projections.metaVectorSearchScore("score") ) ) ) val results = collection.aggregate(pipeline) results.forEach { doc -> println("Title: ${doc.getString("title")}, Score: ${doc.getDouble("score")}") }
Title: Berserk: The Golden Age Arc I - The Egg of the King, Score: 0.49899211525917053 Title: Rollerball, Score: 0.4976102113723755 Title: After Life, Score: 0.4965665936470032 Title: What Women Want, Score: 0.49622756242752075 Title: Truth About Demons, Score: 0.49614521861076355
Tip
Tutoriales de búsqueda de vectores
Para ver más tutoriales que muestran cómo ejecutar consultas de búsqueda vectorial de MongoDB, consulte los Tutoriales de búsqueda vectorial de MongoDB en la documentación de MongoDB Atlas.
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: