Docs Menu
Docs Home
/ /

Búsqueda vectorial de MongoDB

En esta guía, podrá aprender a utilizar el Función debúsqueda vectorial de MongoDB en el controlador Java. 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.

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 deMongoDB e índices de búsqueda vectorial" en la guía de índices. Para obtener más información sobre las 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.

El siguiente ejemplo muestra cómo crear una canalización 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

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.

El siguiente ejemplo muestra cómo se puede ejecutar la agregación e imprimir el meta-puntaje de búsqueda vectorial a partir del resultado de la secuencia de agregación anterior:

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

Tip

Ejemplos de búsqueda de vectores de controladores Java

Visita la documentación de Atlas para encontrar más tutoriales sobre el uso del controlador Java para realizar búsquedas vectoriales de Atlas.

Para obtener más información sobre los métodos y tipos mencionados en esta guía, consulte la siguiente documentación de API:

Volver

MongoDB búsqueda

En esta página