Vecteurs dans Recherche Azure AI
La recherche vectorielle est une approche de la récupération des informations qui prend en charge l’indexation et l’exécution des requêtes sur des représentations numériques du contenu. Étant donné que le contenu est numérique plutôt que texte brut, la correspondance est basée sur des vecteurs qui sont les plus similaires au vecteur de requête, ce qui permet la correspondance entre :
- la ressemblance sémantique ou conceptuelle (« chien » et « canine », conceptuellement similaire mais linguistiquement distincte)
- contenu multilingue (« dog » en anglais et « hund » en allemand)
- plusieurs types de contenu (« chien » en texte brut et une photographie d’un chien dans un fichier image)
Cet article fournit une introduction générale aux vecteurs dans Azure AI Search. Il explique également l'intégration avec d'autres services Azure et couvre la terminologie et les concepts liés au développement de la recherche vectorielle.
Nous vous recommandons cet article pour vous familiariser avec le sujet, mais si vous préférez commencer sans plus attendre, procédez comme suit :
- Fournir des intégrations pour votre index ou générer des intégrations dans un pipeline d’indexeur
- Créer un index vectoriel
- Exécuter des requêtes vectorielles
Vous pouvez également commencer par le démarrage rapide vecteur ou les exemples de code sur GitHub.
Quels scénarios la recherche vectorielle peut-elle prendre en charge ?
Les scénarios de recherche vectorielle sont les suivants :
Recherche de similarité. Encodez du texte à l’aide de modèles incorporés tels que des incorporations OpenAI ou des modèles open source tels que SBERT et récupérez des documents avec des requêtes qui sont également encodées en tant que vecteurs.
Effectuez une recherche dans différents types de contenu (multimodal). Encodez des images et du texte à l’aide d’incorporations modales (par exemple, avec OpenAI CLIP ou GPT-4 Turbo avec Vision dans Azure OpenAI) et interrogez un espace incorporé composé de vecteurs provenant des deux types de contenu.
Recherche hybride. Dans Azure AI Search, la recherche hybride fait référence à l’exécution de requêtes vectorielles et de mots clés dans la même requête. La prise en charge des vecteurs est implémentée au niveau du champ, avec un index contenant à la fois des champs vectoriels et des champs de texte pouvant faire l’objet d’une recherche. Les requêtes s’exécutent en parallèle et les résultats sont fusionnés en une seule réponse. Vous pouvez également ajouter un classement sémantique pour plus de précision avec un reclassement en L2 utilisant les mêmes modèles linguistiques que ceux qui propulsent Bing.
Recherche multilingue. Fournit une expérience de recherche dans la langue des utilisateurs est possible par le biais de modèles incorporés et de modèles de conversation entraînés dans plusieurs langues. Si vous avez besoin de davantage de contrôle sur la traduction, vous pouvez compléter par les fonctionnalités multilingues prises en charge par Recherche Azure AI pour le contenu non-vectoriel, dans les scénarios de recherche hybride.
Recherche vectorielle filtrée . Une demande de requête peut comprendre une requête vectorielle et uneexpression du filtre. Les filtres s'appliquent aux champs textuels et numériques et sont utiles pour filtrer les métadonnées et inclure ou exclure des résultats de la recherche sur la base de critères de filtrage. Bien qu'un champ vectoriel ne soit pas filtrable, vous pouvez créer un champ textuel ou numérique filtrable. Le moteur de recherche peut traiter le filtre avant ou après l'exécution de la requête vectorielle.
Base de données vectorielle. Recherche Azure AI stocke les données que vous interrogez. Utilisez-la comme magasin de vecteurs purs chaque fois que vous avez besoin d’une mémoire à long terme ou d’une base de connaissances, ou de données de base pour l’architecture de génération augmentée de récupération (RAG) ou toute application qui utilise des vecteurs.
Fonctionnement de la recherche vectorielle dans Recherche Azure AI
La prise en charge des vecteurs inclut l’indexation, le stockage et l’interrogation des incorporations vectorielles depuis un index de recherche.
Le diagramme suivant montre les flux de travail d’indexation et de requête pour la recherche vectorielle.
Côté indexation, Recherche Azure AI prend les incorporations de vecteurs et utilise un algorithme de plus proche voisin pour placer les vecteurs similaires à proximité les uns des autres dans un index. En interne, des index vectoriels sont créés pour chaque champ vectoriel.
La façon dont vous obtenez des incorporations à partir de votre contenu source dans Recherche Azure AI dépend de votre choix d’exécuter le travail dans un pipeline d’indexation Recherche Azure AI ou en externe. Recherche Azure AI offre une segmentation et une vectorisation des données intégrées dans un pipeline d’indexeur. Vous fournissez toujours les ressources (points de terminaison et informations de connexion à Azure OpenAI), mais Recherche Azure AI effectue tous les appels et gère les transitions. Cette approche nécessite un indexeur, une source de données prise en charge et un ensemble de compétences qui pilote la segmentation et l’incorporation. Sinon, vous pouvez gérer toutes les vectorisations séparément, puis envoyer (push) du contenu prévectorisé vers des champs vectoriels dans un magasin de vecteurs.
Côté requête, dans votre application cliente, vous collectez l’entrée de requête provenant d’un utilisateur, généralement via un flux de travail d’invite. Vous pouvez ensuite ajouter une étape d’encodage qui convertit l’entrée en vecteur, puis envoie la requête vectorielle à votre index sur Recherche Azure AI pour une recherche de similarité. Comme pour l’indexation, vous pouvez déployer la vectorisation intégrée pour convertir la question en vecteur. Recherche Azure AI retourne des documents avec les plus proches voisins (kNN) k
demandés dans les résultats.
Recherche Azure AI prend en charge les scénarios hybrides qui exécutent la recherche de vecteurs et de mots clés en parallèle, en retournant un jeu de résultats unifié qui fournit souvent de meilleurs résultats que la recherche de vecteurs ou de mots clés seuls. Pour les contenus hybrides, les contenus vectoriels et non-vectoriels sont ingérés dans le même index, pour les requêtes qui s’exécutent côte à côte.
Disponibilité et tarification
La recherche vectorielle est disponible dans le cadre de tous les niveaux Recherche d’Azure AI dans toutes les régions sans frais supplémentaires.
Les services plus récents créés après le 3 avril 2024 prennent en charge quotas plus élevés pour les index vectoriels.
La recherche vectorielle est disponible dans :
- Portail Azure : Assistant Importation et vectorisation des données
- API REST Azure
- SDK Azure pour .NET, Python et JavaScript
- Autres offres Azure, comme Azure AI Studio.
Remarque
Certains services de recherche plus anciens créés avant le 1er janvier 2019 sont déployés sur l’infrastructure qui ne prend pas en charge les charges de travail vectorielles. Si vous essayez d'ajouter un champ vectoriel à un schéma et que vous obtenez une erreur, c'est que les services sont obsolètes. Dans ce cas, vous devez créer un service de recherche pour tester la fonctionnalité vectorielle.
Intégration d'Azure et services connexes
Recherche Azure AI est intégré à la plateforme Azure AI en profondeur. Le tableau suivant répertorie plusieurs éléments utiles dans les charges de travail vectorielles.
Produit | Intégration |
---|---|
Azure AI Studio | Dans la conversation avec votre terrain de jeu de données, Ajouter vos propres données utilise Recherche Azure AI pour obtenir des données de base et pour la recherche conversationnelle. Il s’agit de l’approche la plus simple et la plus rapide pour converser avec vos données. |
Azure OpenAI | Azure OpenAI fournit des modèles d’incorporation et des modèles de conversation. Les démonstrations et exemples ciblent text-embedding-ada-002. Nous recommandons Azure OpenAI pour la génération d'intégration pour le texte. |
Azure AI Services | L’API Récupération d'images Vectorize Image (prévision) prend en charge la vectorisation du contenu des images. Nous recommandons cette API pour générer des intégrations pour les images. |
Plateformes de données Azure : Stockage Blob Azure, Azure Cosmos DB | Vous pouvez utiliser des indexeurs pour automatiser l’ingestion des données, puis utiliser la vectorisation intégrée pour générer des incorporations. Azure AI Search peut indexer automatiquement des données vectorielles à partir de deux sources de données : les indexeurs Azure blob et Azure Cosmos DB for NoSQL. Pour plus d'informations, voir Ajouter des champs vectoriels à un index de recherche. |
Elle est également couramment utilisée dans les infrastructures open source comme LangChain.
Concepts de recherche vectorielle
Si vous débutez avec les vecteurs, cette section décrit certains concepts fondamentaux.
À propos de la recherche vectorielle
La recherche vectorielle est une méthode de récupération d’informations où les documents et les requêtes sont représentés en tant que vecteurs au lieu de texte brut. Dans la recherche vectorielle, les modèles Machine Learning génèrent les représentations vectorielles des entrées de la source, qui peuvent être du texte, des images, ou d’autres types de contenus. Le fait de disposer d'une représentation mathématique du contenu fournit une base commune pour les scénarios de recherche. Si tout est un vecteur, une requête peut trouver une correspondance dans l'espace vectoriel, même si le contenu original associé est un média ou dans une langue différents de ceux de la requête.
Pourquoi utiliser la recherche vectorielle
Lorsque le contenu pouvant faire l’objet d’une recherche est représenté sous forme de vecteurs, une requête peut trouver des correspondances proches dans des contenus similaires. Le modèle d’incorporation utilisé pour la génération de vecteurs sait quels mots et concepts sont similaires, et il place les vecteurs résultants proches les uns des autres dans l’espace d’incorporation. Par exemple, des documents sources vectorisés sur les « nuages » et le « brouillard » sont plus susceptibles d’apparaître dans une requête sur « brume », car ils sont sémantiquement similaires, même s’ils ne sont pas en correspondance lexicale.
Incorporations et vectorisation
les incorporations sont un type spécifique de représentation vectorielle du contenu ou d’une requête, créés par des modèles Machine Learning qui capturent la signification sémantique du texte ou des représentations d’autres contenus tels que des images. Les modèles Machine Learning en langage naturel sont formés sur de grandes quantités de données pour identifier les modèles et les relations entre les mots. Au cours de la formation, ils apprennent à représenter toute entrée sous la forme d'un vecteur de nombres réels lors d'une étape intermédiaire appelée l’encodeur. Une fois la formation terminée, ces modèles de langage peuvent être modifiés afin que la représentation vectorielle intermédiaire devienne la sortie du modèle. Les incorporations résultantes sont des vecteurs à haute dimension, où les mots avec des significations similaires sont plus proches dans l’espace vectoriel, comme expliqué dans Comprendre les incorporations (Azure OpenAI).
L'efficacité de la recherche vectorielle dans la récupération d'informations pertinentes dépend de l'efficacité du modèle d'intégration à distiller le sens des documents et des requêtes dans le vecteur résultant. Les meilleurs modèles sont bien formés sur les types de données qu’ils représentent. Vous pouvez évaluer des modèles existants tels qu’Azure OpenAI text-embedding-ada-002, apporter votre propre modèle entraîné directement sur l’espace du problème ou ajuster un modèle à usage général. Azure AI Search n'impose aucune contrainte quant au modèle que vous choisissez, alors choisissez le meilleur pour vos données.
Pour créer des incorporations efficaces pour la recherche vectorielle, il est important de prendre en compte les limitations de taille d’entrée. Nous vous recommandons de suivre les instructions relatives à la segmentation des données avant de générer des incorporations. Cette bonne pratique garantit que les encastrements capturent avec précision les informations pertinentes et permettent une recherche vectorielle plus efficace.
Qu'est-ce que l'espace d'intégration ?
L'espace d’incorporation est le corpus des requêtes vectorielles. Dans un index de recherche, un espace d’incorporation se compose de tous les champs vectoriels remplis avec des incorporations provenant du même modèle d’incorporation. Les modèles d'apprentissage automatique créent l'espace d'intégration en mettant en correspondance des mots, des phrases ou des documents individuels (pour le traitement du langage naturel), des images ou d'autres formes de données dans une représentation composée d'un vecteur de nombres réels représentant une coordonnée dans un espace à haute dimension. Dans cet espace incorporé, les éléments similaires se trouvent à proximité, et les éléments dissemblables se trouvent plus éloignés.
Par exemple, les documents qui parlent de différentes espèces de chiens seraient regroupés de près dans l’espace incorporé. Les documents sur les chats seraient proches, mais loin du cluster chiens tout en étant toujours dans le voisinage pour les animaux. Des concepts similaires tels que l'informatique en nuage (cloud computing) seraient beaucoup plus éloignés. Dans la pratique, ces espaces d’incorporation sont abstraits et n’ont pas de significations bien définies et interprétables par l’homme, mais l’idée fondamentale reste la même.
Recherche des plus proches voisins
Dans la recherche vectorielle, le moteur de recherche analyse les vecteurs dans l’espace d’incorporation pour identifier les vecteurs les plus proches du vecteur de requête. Cette technique est appelée recherche voisine la plus proche. Les voisins les plus proches aident à quantifier la similarité entre les éléments. Un degré élevé de similarité vectorielle indique que les données d’origine étaient également similaires. Pour faciliter une recherche rapide du plus proche voisin, le moteur de recherche effectue des optimisations ou utilise des structures de données et un partitionnement de données pour réduire l’espace de recherche. Chaque algorithme de recherche vectorielle résout les problèmes de plus proche voisins proche de différentes manières, car ils peuvent améliorer la latence, le débit, le rappel et la mémoire. Pour calculer la similarité, les métriques de similarité fournissent le mécanisme de calcul de distance.
Azure AI Search prend actuellement en charge les algorithmes suivants :
Hiérarchique Navigable Small World (HNSW) : HNSW est un algorithme ANN de premier plan optimisé pour les applications à faible latence et à haute latence où la distribution des données est inconnue ou peut changer fréquemment. Il organise des points de données à haute dimension dans une structure hiérarchique de graphe qui permet une recherche de similarité rapide et évolutive tout en permettant un compromis entre la précision de la recherche et le coût de calcul. Comme l'algorithme exige que tous les points de données résident dans la mémoire pour un accès aléatoire rapide, il consomme un quota de taille d'index vectoriel.
Voisins les plus proches de K exhaustives (KNN) : calcule les distances entre le vecteur de requête et tous les points de données. Il est gourmand en ressources de calcul. Il fonctionne donc mieux pour les jeux de données plus petits. Comme l'algorithme ne nécessite pas d'accès aléatoire rapide aux points de données, il ne consomme pas de quota de taille d'index vectoriel. Toutefois, cet algorithme fournit l’ensemble global des plus proches voisins.
Pour utiliser ces algorithmes, consultez Créer un champ vectoriel pour obtenir des instructions sur la spécification de l’algorithme, les profils vectoriels et l’attribution de profil.
Les paramètres d’algorithme utilisés pour initialiser l’index pendant la création de l’index sont immuables et ne peuvent pas être modifiés une fois l’index généré. Toutefois, les paramètres qui affectent les caractéristiques au moment de la requête (efSearch
) peuvent être modifiés.
En outre, les champs qui spécifient l’algorithme HNSW prennent également en charge une recherche KNN exhaustive à l’aide de la demande de requête paramètre "exhaustive": true
. Toutefois, l’inverse n’est pas vrai. Si un champ est indexé pour exhaustiveKnn
, vous ne pouvez pas utiliser HNSW dans la requête, car les structures de données supplémentaires qui permettent une recherche efficace n’existent pas.
Voisins les plus proches approximatifs
La recherche approximative du plus proche voisin (ANN) est une classe d’algorithmes permettant de rechercher des correspondances dans l’espace vectoriel. Cette classe d’algorithmes utilise différentes structures de données ou méthodes de partitionnement de données pour réduire considérablement l’espace de recherche pour accélérer le traitement des requêtes.
Les algorithmes ANN sacrifient une partie de la précision, mais offrent une récupération évolutive et plus rapide des voisins les plus proches, ce qui les rend idéaux pour équilibrer la précision et l'efficacité dans les applications modernes de recherche d'informations. Vous pouvez ajuster les paramètres de votre algorithme afin d'affiner les exigences de votre application de recherche en matière de rappel, de latence, de mémoire et d'empreinte disque.
Azure AI Search utilise HNSW pour son algorithme ANN.