Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
$ VectorSearch
Nuevo desde la versión 8.0
No es compatible con el clúster de Elastic.
El $vectorSearch operador de Amazon DocumentDB le permite realizar una búsqueda vectorial, un método utilizado en el aprendizaje automático para encontrar puntos de datos similares mediante la comparación de sus representaciones vectoriales mediante métricas de distancia o similitud. Esta capacidad combina la flexibilidad y las sofisticadas consultas de una base de datos de documentos basada en JSON con el poder de la búsqueda vectorial, lo que le permite desarrollar casos de uso del aprendizaje automático y de la IA generativa, como la búsqueda semántica, la recomendación de productos, etc.
Parámetros
-
<exact>(opcional): marca que especifica si se debe ejecutar la búsqueda del vecino más cercano exacto (ENN) o del vecino más cercano aproximado (ANN). El valor puede ser uno de los siguientes: -
false: para ejecutar una búsqueda ANN
-
true: para ejecutar la búsqueda ENN
Si se omite o se establece en falso, numCandidates es obligatorio.
- `<index>` : Name of the Vector Search index to use. - `<limit>` : Number of documents to return in the results. - `<numCandidates>` (optional): This field is required if 'exact' is false or omitted. Number of nearest neighbors to use during the search. Value must be less than or equal to (<=) 10000. You can't specify a number less than the number of documents to return ('limit'). - `<path>` : Indexed vector type field to search. - `<queryVector>` : Array of numbers that represent the query vector.
Ejemplo (MongoDB Shell)
En el siguiente ejemplo, se muestra cómo utilizar el $vectorSearch operador para buscar descripciones de productos similares en función de sus representaciones vectoriales.
Cree documentos de muestra
db.products.insertMany([ { _id: 1, name: "Product A", description: "A high-quality, eco-friendly product for your home.", description_vector: [ 0.2, 0.5, 0.8 ] }, { _id: 2, name: "Product B", description: "An innovative and modern kitchen appliance.", description_vector: [0.7, 0.3, 0.9] }, { _id: 3, name: "Product C", description: "A comfortable and stylish piece of furniture.", description_vector: [0.1, 0.2, 0.4] } ]);
Crea un índice de búsqueda vectorial
db.runCommand( { createIndexes: "products", indexes: [{ key: { "description_vector": "vector" }, vectorOptions: { type: "hnsw", dimensions: 3, similarity: "cosine", m: 16, efConstruction: 64 }, name: "description_index" }] } );
Ejemplo de consulta
db.products.aggregate([ { $vectorSearch: { index: "description_index", limit: 2, numCandidates: 10, path: "description_vector", queryVector: [0.1, 0.2, 0.3] } } ]);
Salida
[
{
"_id": 1,
"name": "Product A",
"description": "A high-quality, eco-friendly product for your home.",
"description_vector": [ 0.2, 0.5, 0.8 ]
},
{
"_id": 3,
"name": "Product C",
"description": "A comfortable and stylish piece of furniture.",
"description_vector": [ 0.1, 0.2, 0.4 ]
}
]
Ejemplos de código
Para ver un ejemplo de código para usar el $vectorSearch comando, elija la pestaña del idioma que desee usar: