Partager via


Présentation des incorporations vectorielles et de la recherche vectorielle dans Azure Cache pour Redis

La recherche de similarité vectorielle (VSS) est devenue une technologie répandue pour les applications intelligentes avec de l’IA. Azure Cache pour Redis peut être utilisé comme base de données vectorielle en la combinant avec des modèles comme Azure OpenAI pour des scénarios d’IA de génération augmentée de récupération (RAG) et d’analyse. Cet article est une présentation générale du concept des incorporations vectorielles, de la recherche de similarité vectorielle et de l’utilisation de Redis comme base de données vectorielle alimentant des applications intelligentes.

Pour obtenir des tutoriels et des exemples d’applications sur l’utilisation d’Azure Cache pour Redis et d’Azure OpenAI pour effectuer une recherche de similarité vectorielle, consultez les rubriques suivantes :

Étendue de la disponibilité

Les fonctionnalités de recherche vectorielle dans Redis nécessitent Redis Stack, en particulier le module RediSearch. Cette fonctionnalité est disponible uniquement dans les niveaux Entreprise d’Azure Cache pour Redis.

Ce tableau contient les informations relatives à la disponibilité de la recherche vectorielle dans différents niveaux.

Niveau De base / Standard Premium Enterprise Enterprise Flash
Disponible Non Non Oui Oui (préversion)

Que sont les incorporations vectorielles ?

Concept

Les incorporations vectorielles sont un concept fondamental du machine learning et du traitement du langage naturel qui permettent de représenter les données, par exemple, des mots, des documents ou des images, sous forme de vecteurs numériques dans un espace vectoriel de grande dimension. L’idée principale derrière les incorporations vectorielles est de capturer les relations et la sémantique sous-jacentes des données en les mappant à des points dans cet espace vectoriel. Cela signifie la conversion de votre texte ou d’images en une séquence de nombres qui représente les données, puis en comparant les différentes séquences de nombres. Cela permet de manipuler et d’analyser mathématiquement des données complexes, ce qui facilite les tâches comme la comparaison de similarité, les recommandations et la classification.

Chaque modèle Machine Learning classe les données et produit le vecteur d’une manière différente. Par ailleurs, il n’est généralement pas possible de déterminer exactement la signification sémantique de chaque dimension vectorielle. Toutefois, comme le modèle est cohérent entre chaque bloc de données d’entrée, des mots, des documents ou des images similaires ont des vecteurs également similaires. Par exemple, les mots basketball et baseball ont des vecteurs d’incorporation beaucoup plus proches les uns des autres qu’un mot comme rainforest.

Comparaison vectorielle

Les vecteurs peuvent être comparés en utilisant différentes métriques. La façon la plus courante de comparer les vecteurs est d’utiliser la similarité cosinus, qui mesure le cosinus de l’angle entre deux vecteurs dans un espace multidimensionnel. Plus les vecteurs sont proches, plus l’angle est petit. D’autres métriques de distance courantes sont la distance euclidienne et le produit interne.

Génération d’incorporations

De nombreux modèles Machine Learning prennent en charge les API d’incorporation. Pour obtenir un exemple de création d’incorporations vectorielles en utilisant Azure OpenAI Service, consultez Découvrir comment générer des incorporations avec Azure OpenAI.

Qu’est-ce qu’une base de données vectorielle ?

Une base de données vectorielle est une base de données qui peut stocker, gérer, récupérer et comparer des vecteurs. Les bases de données vectorielles doivent pouvoir stocker efficacement un vecteur de grande dimension, et le récupérer avec une latence minimale et un haut débit. Les banques de données non relationnelles sont le plus souvent utilisées comme bases de données vectorielles, bien qu'il soit possible d'utiliser des bases de données relationnelles comme PostgreSQL, par exemple, avec l'extension pgvector.

Index et méthode de recherche

Les bases de données vectorielles doivent indexer les données pour accélérer la recherche et la récupération. En outre, une base de données vectorielle doit prendre en charge des requêtes de recherche intégrées pour permettre des expériences de programmation simplifiées.

Il existe plusieurs méthodes d’indexation, notamment :

  • FLAT – Index de force brute
  • HNSW – Recherche efficace et robuste des plus proches voisins approximatifs en utilisant des graphiques HNSW (Hierarchical Navigable Small World)

Il existe plusieurs méthodes de recherche courantes, notamment :

  • K plus proches voisins (KNN) : méthode exhaustive qui fournit la plus grande précision, mais avec un coût de calcul plus élevé.
  • Voisin le plus proche approximatif (ANN) : méthode plus efficace qui troque la précision contre une plus grande vitesse et une surcharge de traitement inférieure.

Fonctionnalités de recherche

Enfin, les bases de données vectorielles exécutent des recherches vectorielles en utilisant la méthode de comparaison vectorielle choisie pour renvoyer les vecteurs les plus similaires. Certaines bases de données vectorielles peuvent également effectuer des recherches hybrides, en limitant d’abord les résultats en fonction des caractéristiques ou des métadonnées également stockées dans la base de données avant d’effectuer la recherche vectorielle. Il s’agit d’un moyen de rendre la recherche vectorielle plus efficace et personnalisable. Par exemple, une recherche vectorielle peut être limitée aux vecteurs associé à une étiquette spécifique dans la base de données, ou aux vecteurs avec des données de géolocalisation dans une région donnée.

Scénarios clés de recherche vectorielle

La recherche de similarité vectorielle peut être utilisée dans plusieurs applications. Voici quelques cas d’utilisation courants :

  • Questions et réponses sémantiques. Créez un chatbot qui peut répondre aux questions sur vos propres données. Par exemple, un chatbot qui peut répondre aux questions des employés sur leur couverture médicale. Les centaines de pages de documentation dense sur la couverture médicale peuvent être divisées en blocs, converties en vecteurs d’incorporation et analysées en fonction de la similarité vectorielle. Les documents obtenus peuvent ensuite être résumés pour les employés en utilisant un autre grand modèle de langage (LLM). Exemple de questions et réponses sémantiques
  • Extraction de document. Utilisez la compréhension sémantique plus approfondie du texte fournie par les LLM pour une expérience de recherche de document plus riche où la recherche traditionnelle basée sur les mots clés ne suffit pas. Exemple d’extraction de document
  • Recommandation de produit. Recherchez des produits ou services similaires à recommander en fonction des activités passées des utilisateurs, comme l’historique de recherche ou les achats précédents. Exemple de recommandation de produit
  • Recherche visuelle. Recherchez des produits qui ressemblent à une photo prise par un utilisateur ou à une image d’un autre produit. Exemple de recherche visuelle
  • Mise en cache sémantique. Réduisez le coût et la latence des LLM en mettant en cache leurs résultats. Les requêtes LLM sont comparées en utilisant la similarité vectorielle. Si une nouvelle requête est suffisamment similaire à une requête précédemment mise en cache, la requête mise en cache est renvoyée. Exemple de mise en cache sémantique en utilisant LangChain
  • Mémoire de conversation LLM. Conservez l’historique des conversations avec un LLM sous forme d’incorporations dans une base de données vectorielle. Votre application peut utiliser la recherche vectorielle pour extraire l’historique ou les « souvenirs » appropriés dans la réponse du LLM. Exemple de mémoire de conversation LLM

Pourquoi choisir Azure Cache pour Redis afin de stocker et rechercher des vecteurs ?

Azure Cache pour Redis peut être utilisé efficacement comme base de données vectorielle pour stocker des vecteurs d’incorporation et effectuer des recherches de similarité vectorielle. La prise en charge du stockage et de la recherche vectoriels a été disponible dans de nombreux frameworks de Machine Learning clés, notamment :

Ces frameworks offrent des intégrations puissantes avec Redis. Par exemple, l’intégration de LangChain à Redis génère automatiquement un schéma d’index pour les métadonnées transmis quand Redis est utilisé comme magasin vectoriel. Cela facilite considérablement le filtrage des résultats en fonction des métadonnées.

Redis a un large éventail de fonctionnalités de recherche via le module RediSearch, qui est disponible dans le niveau Entreprise d’Azure Cache pour Redis. Il s’agit notamment des paramètres suivants :

  • Plusieurs métriques de distance, y compris Euclidean, Cosine et Internal Product.
  • Prise en charge des méthodes d’indexation KNN (avec FLAT) et ANN (avec HNSW).
  • Stockage vectoriel dans des structures de données de hachage ou JSON
  • K premières requêtes
  • Requêtes de plage vectorielle (c’est-à-dire rechercher tous les éléments à une distance vectorielle spécifique)
  • Recherche hybride avec des fonctionnalités de requête puissantes, comme :
    • Filtrage géospatial
    • Filtres numériques et textuels
    • Correspondance de préfixe et approximative
    • Correspondance phonétique
    • Requêtes booléennes

Par ailleurs, Redis est souvent un choix économique, car il est déjà très souvent utilisé pour la mise en cache ou le stockage de sessions. Dans ces scénarios, il peut avoir un double emploi en ayant un rôle de mise en cache classique tout en gérant simultanément les applications de recherche vectorielle.

Quelles sont mes autres options pour stocker et rechercher des vecteurs ?

Il existe plusieurs autres solutions dans Azure pour le stockage et la recherche vectoriels. Voici d’autres solutions :

La meilleure façon de bien démarrer avec les incorporations et la recherche vectorielle est de l’essayer vous-même !