Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
La recherche de similarité vectorielle (VSS) est une capacité courante dans les applications intelligentes alimentées par l’IA. Vous pouvez utiliser Azure Managed Redis comme base de données vectorielle à faible latence en le combinant avec des modèles d’intégration, tels que Azure OpenAI, pour Retrieval-Augmented Generation (RAG), la mise en cache sémantique, les recommandations, la recherche et d’autres scénarios d’IA.
Cet article présente les embeddings vectoriels, la recherche par similarité vectorielle, et comment Azure Managed Redis peut stocker et rechercher des vecteurs en utilisant le module RediSearch.
Pour des tutoriels et des applications d’exemple utilisant Azure Managed Redis avec Azure OpenAI, consultez les ressources suivantes :
Étendue de la disponibilité
Les fonctionnalités de recherche vectorielle dans Redis nécessitent Redis Stack, en particulier le module RediSearch. Dans Azure Managed Redis, RediSearch est disponible en tant que module géré que vous devez activer lors de la création du cache.
Le tableau suivant montre la disponibilité RediSearch pour les niveaux Azure Managed Redis.
| niveau Azure Managed Redis | Prise en charge de RediSearch |
|---|---|
| Mémoire optimisée | Oui |
| Équilibrée | Oui |
| Optimisé pour le calcul | Oui |
| Optimisé pour le stockage flash | Non |
Important
Vous ne pouvez pas ajouter de modules à une instance Azure Managed Redis après sa création. Si vous prévoyez d’utiliser la recherche vectorielle, activez le module RediSearch lors du provisionnement.
Planifiez une instance Azure Managed Redis pour la recherche vectorielle
Avant de créer une instance Azure Managed Redis pour la recherche vectorielle, planifiez la configuration du cache et le modèle de données. Vous devez choisir certaines options, y compris les modules et la politique de clustering, lors du provisionnement.
Pour les charges de travail de recherche vectorielle :
- Activez le module RediSearch lorsque vous créez l’instance Azure Managed Redis.
- Utilisez la politique de clustering de l’entreprise . RediSearch nécessite une politique de clustering d’entreprise.
- Utilisez la politique d’expulsion
NoEvictionlorsque RediSearch est activé. - Choisissez un niveau intégré en mémoire pris en charge : Mémoire optimisée, Équilibrée ou Calcul optimisée.
- Dimensionnez le cache pour les données vectorielles et la surcharge des indices.
- Stockez les métadonnées avec des vecteurs, tels que l’ID du document, le titre, l’URL source, la catégorie, l’horodatage, l’ID du locataire ou les champs de contrôle d’accès, afin que les requêtes puissent filtrer les résultats et retourner les informations de source.
- Utilisez TLS pour les connexions clients et envisagez l’authentification Microsoft Entra lorsque votre client la supporte.
- Pour les charges de travail en production, considérez Private Link, la haute disponibilité et les diagnostics.
Azure Managed Redis gère les versions disponibles des modules pour le service. Vous ne pouvez pas charger manuellement les modules ni mettre à jour manuellement les versions des modules.
Pour plus d’informations, voir Utilisez les modules Redis avec Azure Managed Redis, Azure Managed Redis architecture, et Quickstart : Create an Azure Managed Redis instance.
Que sont les incorporations vectorielles ?
Les plongements vectoriels sont des représentations numériques de données, telles que des mots, documents, images ou produits, dans un espace vectoriel de haute dimension. Les embeddings capturent les relations sémantiques de manière à permettre aux applications de comparer mathématiquement les données.
Par exemple, les mots basketball et baseball ont en général des représentations vectorielles plus proches l’une de l’autre que chacune ne l’est de rainforest, car le modèle place des concepts sémantiquement liés les uns près des autres dans l’espace vectoriel.
Différents modèles d’apprentissage automatique génèrent des embeddings différemment. Pour de meilleurs résultats, utilisez un modèle d’inclusion cohérent pour un indice vectoriel donné. Le schéma d’index, les dimensions vectorielles et la métrique de distance doivent correspondre au modèle d’immersion utilisé pour générer les vecteurs.
Comparaison vectorielle
Vous pouvez comparer des vecteurs en utilisant des métriques de distance ou de similarité. Les métriques courantes sont les suivantes :
- similarité cosinus, qui compare l’angle entre vecteurs.
- La distance euclidienne, qui mesure la distance en ligne droite dans l’espace vectoriel.
- Le produit interne, que certains scénarios d’intégration et de classement utilisent couramment.
La bonne métrique dépend du modèle d’immersion et de la normalisation des vecteurs. Pour de nombreux scénarios d’inclusion de texte, la similarité cosinus est un choix courant.
Génération d’incorporations
De nombreux modèles Machine Learning prennent en charge les API d’incorporation. Pour un exemple de création d’embeddings vectoriels avec Azure OpenAI, voir Apprendre à générer des embeddings avec Azure OpenAI.
Qu’est-ce qu’une base de données vectorielle ?
Une base de données vectorielle stocke, indexe, récupère et compare des vecteurs de haute dimension. Les bases de données vectorielles sont conçues pour retourner des vecteurs similaires avec une faible latence et un débit élevé.
Vous pouvez utiliser Azure Managed Redis comme base de données vectorielle en stockant des embeddings dans des structures de données Redis et en les indexant en utilisant RediSearch.
Stockage vectoriel et métadonnées
Dans Redis, vous pouvez stocker des vecteurs dans des hachages ou des documents JSON. Stockez des métadonnées utiles avec chaque vecteur, telles que l’identifiant du document, le titre, l’URL source, la catégorie, l’horodatage, l’identifiant du locataire ou les champs de contrôle d’accès.
Les métadonnées rendent la recherche vectorielle plus utile car les applications peuvent filtrer les résultats avant ou pendant la recherche vectorielle. Pour les applications RAG, les métadonnées peuvent également être renvoyées avec les résultats de recherche afin d’étayer les citations et l’ancrage aux sources.
Index et méthodes de recherche
Les bases de données vectorielles utilisent des index pour rendre la recherche efficace. RediSearch prend en charge des approches courantes d’indexation vectorielle, notamment :
- FLAT - Un indice exact de force brute. FLAT peut être utile pour des ensembles de données plus petits ou des charges de travail nécessitant une recherche exhaustive.
- HNSW - Un index de plus proches voisins approximatifs basé sur des graphes hiérarchiques navigables de type Small World. HNSW est souvent utilisé pour des ensembles de données plus vastes où une latence plus faible est plus importante que la précision exhaustive.
Les méthodes de recherche courantes incluent :
-
K plus proches voisins (KNN) - Renvoie les
Kvecteurs les plus similaires. - Voisins approximatifs (ANN) - Échange une certaine précision contre une latence plus faible et un coût de calcul réduit.
Fonctionnalités de recherche
Les bases de données vectorielles effectuent des recherches en comparant un vecteur de requête à des vecteurs indexés et en renvoyant les résultats les plus similaires. De nombreuses applications utilisent également la recherche hybride, où les filtres de métadonnées restreignent l’ensemble des candidats avant ou pendant la comparaison vectorielle.
Par exemple, une requête de recommandation de produit peut ne rechercher que des produits dans une catégorie spécifique, ou une application RAG peut rechercher uniquement des documents auxquels l’utilisateur actuel est autorisé à accéder.
Scénarios clés de recherche vectorielle
La recherche de similarité vectorielle peut être utilisée dans de nombreux modèles d’application, notamment :
- Questions et réponses sémantiques. Créez un chatbot qui répond à vos questions via vos propres données. Les documents peuvent être fragmentés, intégrés, stockés dans Azure Managed Redis, puis récupérés par similarité vectorielle avant d’être résumés par un grand modèle de langage.
- Récupération de documents. Utilisez des embeddings pour fournir une recherche sémantique dans les documents lorsque la recherche par mots-clés ne suffit pas.
- Recommandation de produit. Trouvez des produits ou services similaires en fonction de l’activité de navigation, de l’historique d’achats ou des descriptions de produits.
- Recherche visuelle. Recherchez des produits ou des images visuellement similaires à une image soumise.
- Mise en cache sémantique. Réduisez le coût et la latence des LLM en mettant en cache les complétions et en réutilisant les réponses en cache lorsqu’une nouvelle invite est sémantiquement similaire à une précédente.
- Mémoire de conversation en LLM. Stockez la mémoire à court terme, comme les tournants récents des conversations, et la mémoire à long terme, telle que des résumés durables, les préférences des utilisateurs ou des faits, comme des embeddings que les applications peuvent récupérer pour de futures réponses.
Pourquoi choisir Azure Managed Redis pour stocker et rechercher des vecteurs ?
Azure Managed Redis est utile pour les charges de travail de recherche vectorielle nécessitant un accès à faible latence près des données d’application, des données de cache, de l’état de session ou de la mémoire conversationnelle. Comme Redis est couramment utilisé pour les modèles d’applications haute performance, Azure Managed Redis peut prendre en charge la recherche vectorielle tout en servant des cas d’usage adjacents tels que la mise en cache, la limitation de fréquence, le stockage de session, la mise en cache sémantique et la mémoire d’agents.
De nombreux cadres d’IA et d’applications incluent des intégrations Redis, notamment :
- Fournisseur Redis du Microsoft Agent Framework
- Noyau sémantique Redis Connector
- Intégrations de LangChain à Redis
- Base vectorielle Redis de LlamaIndex
Azure Managed Redis utilise le module RediSearch pour prendre en charge des capacités de recherche vectorielle telles que :
- Métriques de distance courantes, y compris
L2,COSINE, etIP. - Recherche KNN avec
FLATetHNSWindex vectoriels. - Stockage vectoriel dans des structures de données hachées ou JSON.
- Les principales questions sur les K.
- Requêtes par plage vectorielle.
- Recherche hybride avec des fonctionnalités de requête telles que :
- Filtrage géospatial.
- Filtres numériques et textuels.
- Correspondance par préfixe et correspondance approximative.
- Correspondance phonétique.
- Requêtes booléennes.
Quelles sont mes autres options pour stocker et rechercher des vecteurs ?
Azure propose plusieurs services pour le stockage vectoriel et la recherche. Le meilleur choix dépend de ta charge de travail.
| Service | Considérez quand |
|---|---|
| Azure Managed Redis | Vous avez besoin d’une recherche vectorielle à faible latence proche du cache applicatif, de l’état de la session, du cache sémantique ou des modèles mémoire LLM. |
| Recherche Azure AI | Vous avez besoin d’un service axé sur la recherche pour l’indexation de documents, la recherche hybride, l’ajustement de la pertinence et les scénarios de récupération d’entreprise. |
| Azure Cosmos DB | Vous voulez la recherche vectorielle en parallèle des données NoSQL opérationnelles. |
| Azure Database pour PostgreSQL - Serveur flexible | Vous souhaitez effectuer une recherche vectorielle dans PostgreSQL à l’aide de pgvector, aux côtés de données relationnelles. |
Contenu connexe
La meilleure façon de commencer avec les embeddings et la recherche vectorielle est d’essayer vous-même.