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