Overview
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.
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 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.
Ejemplo de búsqueda de vectores
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.
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: