Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Ejecuta una query de búsqueda vectorial en MongoDB

En esta guía, puedes aprender cómo usar el controlador Sync de Kotlin para realizar consultas de Búsqueda Vectorial en MongoDB. La clase Aggregates desarrolladores proporciona el método asistente vectorSearch(), que se puede usar para crear una etapa de pipeline $vectorSearch.

Importante

Compatibilidad de características

Para aprender qué versiones de MongoDB Atlas admiten esta funcionalidad, consulte Limitaciones en la documentación de MongoDB Atlas.

Antes de poder realizar consultas de MongoDB Vector Search, debes crear un índice de MongoDB Vector Search en tu colección. Si quieres aprender a crear programáticamente un índice de búsqueda vectorial, consulta la guía de MongoDB Search e Índices de búsqueda vectorial.

Luego, puedes ejecutar una query de Búsqueda Vectorial de MongoDB utilizando el método vectorSearch() en un pipeline de agregación. Este método acepta los siguientes parámetros:

  • path: El campo en el que buscar

  • queryVector: El embedding vectorial que representa tu consulta de búsqueda

  • indexName: Nombre del índice de MongoDB Vector Search que se utilizará

  • limit: El número máximo de resultados a devolver

  • options: (Opcional) Un conjunto de opciones que puedes usar para configurar la query de búsqueda vectorial

Este ejemplo ejecuta una query de MongoDB Vector Search que realiza las siguientes acciones:

  • Consulta el campo vectorial plot_embedding.

  • Limita los resultados a 5 documentos.

  • Especifica una búsqueda vectorial de Vecino Más Cercano Aproximado (ANN) que considera 150 candidatos. 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

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.

El siguiente ejemplo muestra cómo ejecutar la misma consulta de búsqueda vectorial que el ejemplo anterior e imprimir la meta-puntuación de búsqueda vectorial de los documentos. Esta puntuación representa la relevancia de cada documento con respecto al vector de query:

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 vectorial

Para ver más tutoriales que muestran cómo ejecutar consultas de MongoDB Vector Search, consulta el Tutoriales de MongoDB Vector Search en la documentación de MongoDB Atlas.

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: