Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Búsqueda vectorial de MongoDB

En esta guía, puedes aprender cómo utilizar el Funcionalidad MongoDB Vector Search en el driver Java. 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.

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 MongoDB Search e Índices de búsqueda de vectores sección en la guía de Índices. Para aprender más sobre incrustaciones vectoriales, revisa Cómo indexar vector embeddings para 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.

El siguiente ejemplo muestra cómo compilar un pipeline de agregación que utiliza los métodos vectorSearch() y project() para calcular una puntuación de búsqueda vectorial:

// Create an instance of the BinaryVector class as the query vector
BinaryVector queryVector = BinaryVector.floatVector(
new float[]{0.0001f, 1.12345f, 2.23456f, 3.34567f, 4.45678f});
// Specify the index name for the vector embedding index
String indexName = "mflix_movies_embedding_index";
// Specify the path of the field to search on
FieldSearchPath fieldSearchPath = fieldPath("plot_embedding");
// Limit the number of matches to 1
int limit = 1;
// Create a pre-filter to only search within a subset of documents
VectorSearchOptions options = exactVectorSearchOptions()
.filter(gte("year", 2016));
// Create the vectorSearch pipeline stage
List<Bson> pipeline = asList(
vectorSearch(
fieldSearchPath,
queryVector,
indexName,
limit,
options),
project(
metaVectorSearchScore("vectorSearchScore")));

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 agregación e imprimir la meta-puntuación de búsqueda vectorial a partir del resultado de la anterior pipeline de agregación:

Document found = collection.aggregate(pipeline).first();
double score = found.getDouble("vectorSearchScore").doubleValue();
System.out.println("vectorSearch score: " + score);

Tip

Ejemplos de búsqueda vectorial con Java Driver

Visite la documentación de Atlas para encontrar más tutoriales sobre el uso del controlador Java para realizar búsquedas vectoriales en 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:

Volver

MongoDB búsqueda

En esta página