Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La recherche vectorielle de voisin le plus proche (ENN) effectue un calcul de distance exhaustive sur tous les vecteurs indexés pour garantir la récupération des voisins les plus proches en fonction d’une métrique de distance spécifiée. ENN est pris en charge sur tous les niveaux de cluster sans frais supplémentaires et ne nécessite aucune inscription.
Qu’est-ce que la recherche vectorielle du voisin le plus proche (ENN) exacte ?
La recherche vectorielle ENN effectue une comparaison complète entre le vecteur de requête et chaque vecteur dans le jeu de données. Cette approche garantit les points suivants :
- Précision garantie : récupère les vrais voisins les plus proches en fonction de la métrique de distance choisie (par exemple, distance euclide, similarité cosinus).
- Augmentation de la charge de calcul : en raison de sa nature exhaustive, l’ENN est plus gourmande en ressources et peut entraîner des temps de requête plus longs, en particulier avec des jeux de données volumineux.
À l’inverse, la recherche de voisin le plus proche (ANN) approximative utilise des techniques d’indexation telles que l’HNSW (Hierarchical Navigable Small World), le fichier inversé (IVF) ou DiskANN pour accélérer les recherches. Bien que l’ANN offre des temps de réponse plus rapides et une meilleure évolutivité, il ne retourne pas toujours les voisins les plus proches.
Quand devez-vous utiliser la recherche vectorielle ENN ?
Envisagez d’utiliser la recherche vectorielle ENN dans les scénarios suivants :
- Exigences élevées en matière de précision : pour les applications où les résultats top-k précis sont essentiels, tels que les systèmes de recommandation sensibles ou la recherche scientifique, ENN garantit une précision maximale.
- Taille de jeu de données gérable : lorsque vous traitez de jeux de données plus petits ou lorsque les contraintes de performances sont moins strictes, la nature exhaustive de l’ENN est réalisable.
- Filtrage de faible sélectivité : si vous appliquez des filtres qui entraînent un sous-ensemble relativement petit de données, l’ENN peut effectuer efficacement des comparaisons exhaustives au sein de ce sous-ensemble.
Par exemple : dans un jeu de données volumineux contenant des millions de documents classés par locataires, l’exécution d’une recherche vectorielle au sein d’un locataire spécifique (comprenant quelques milliers de vecteurs) peut être gérée efficacement par ENN.
Comment utiliser la recherche vectorielle ENN
Avant d’utiliser la recherche vectorielle ENN, vérifiez qu’un index vectoriel (par exemple, IVF, HNSW, DiskANN) est créé pour le chemin approprié. Si un index vectoriel existe déjà, il n’est pas nécessaire de le reconstruire lors du basculement entre les méthodes de recherche, car ENN fonctionne indépendamment de ces index pendant l’exécution de la requête.
Pour activer ENN, définissez "exact": true dans votre requête. Par exemple:
{
"$search": {
"cosmosSearch": {
"path": "myVectorField",
"exact": true, // Enables ENN
"query": [0.2, 0.4, 0.9], // Query vector
"k": 10, // Number of results to return
"filter": {
"tenant_id": { "$eq": "tenant123" }
}
}
}
}
Combinaison de la recherche vectorielle ENN avec des filtres
La recherche vectorielle ENN peut être combinée avec des filtres d’attribut ou géospatiaux pour limiter l’étendue de la recherche à un sous-ensemble spécifique de données. Après avoir appliqué le filtre, le moteur de recherche effectue des calculs de distance exhaustives sur le sous-ensemble filtré, en retournant les voisins les plus proches du haut k qui répondent aux critères de filtre.
Scénario de cas d’utilisation
Un client gère une collection d’environ 300 000 documents, chacun contenant un champ vectoriel, un tenant_id champ (représentant des milliers de locataires) et d’autres attributs. Ils ont observé que les recherches vectorielles ANN avec un tenant_id filtre étaient lentes.
En passant à la recherche vectorielle ENN tout en conservant le même filtre, le client a obtenu une amélioration de 50% des performances des requêtes et atteint 100% précision de rappel.
Questions fréquentes (FAQ)
Comment ENN fonctionne-t-il à grande échelle ?
- Performances sur les jeux de données volumineux : L’ENN peut être plus lente pour les jeux de données volumineux sans filtrage sélectif en raison de la nécessité d’évaluer chaque vecteur.
- Coût de calcul plus élevé : ENN implique de comparer le vecteur de requête à tous les vecteurs (ou filtrés), ce qui entraîne une utilisation accrue des ressources pour un jeu de données volumineux.
ANN vs ENN : Quelle est la différence ?
- La recherche vectorielle proche la plus proche (ENN) offre une précision de 100% en comparant de manière exhaustive le vecteur de requête à tous les vecteurs indexés, ce qui le rend adapté aux applications nécessitant des résultats précis ou lorsqu’il s’agit de jeux de données plus petits ou de sous-ensembles filtrés.
- La recherche proche la plus proche (ANN) utilise des techniques d’indexation spécialisées pour fournir des réponses plus rapides et une meilleure scalabilité pour les jeux de données volumineux, bien qu’elle puisse légèrement compromettre la précision.