Segmentation et incorporation de données intégrées dans Recherche Azure AI
La vectorisation intégrée est une extension des pipelines d’indexation et de requête dans Recherche Azure AI. Elle offre les capacités suivantes :
- Segmentation des données pendant l’indexation
- Conversion de texte en vecteur pendant l’indexation
- Conversion de texte en vecteur pendant les requêtes
La segmentation des données n’est pas une exigence difficile, mais elle est nécessaire pour répondre aux exigences d’entrée de jeton des modèles d’incorporation, sauf si vos documents bruts sont petits.
Les conversions de vecteurs sont unidirectionnels : texte à vecteur. Il n’existe aucune conversion de vecteur en texte pour les requêtes ou les résultats (par exemple, vous ne pouvez pas convertir un résultat vectoriel en chaîne lisible par l’homme).
La segmentation et la vectorisation des données intégrées accélère le développement et réduit les tâches de maintenance pendant l’ingestion des données et le temps de requête, car il existe moins de composants externes à configurer et à gérer. Cette fonctionnalité est désormais en disponibilité générale.
Utilisation de la vectorisation intégrée lors de l’indexation
Pour les conversions de segments de données et de texte en vecteur, vous utilisez une dépendance sur les composants suivants :
Un indexeur, qui récupère les données brutes à partir d’une source de données prise en charge et sert de moteur de pipeline.
Un index vectoriel pour recevoir le contenu fractionné et vectorisé.
Un ensemble de compétences configuré pour :
Compétence de fractionnement de texte, utilisée pour segmenter les données.
Compétence d’incorporation, utilisée pour générer des tableaux vectoriels, qui peut être l’une des compétences suivantes :
Compétence AzureOpenAIEmbedding, attachée à text-embedding-ada-002,text-embedding-3-small, text-embedding-3-large sur Azure OpenAI.
Compétence personnalisée, qui pointe vers un autre modèle d’incorporations sur Azure ou sur un autre site.
Compétence Azure AI Vision (préversion) qui pointe vers l’API multimodale pour Azure AI Vision.
Compétence AML pointant vers le catalogue de modèles dans Azure AI Studio qui pointe vers des modèles sélectionnés dans le catalogue de modèles.
Utilisation de la vectorisation intégrée dans les requêtes
Pour la conversion de texte en vecteur pendant les requêtes, vous utilisez une dépendance vis-à-vis de ces composants :
Une requête spécifiant un ou plusieurs champs vectoriels.
Une chaîne de texte convertie en vecteur au moment de l’interrogation.
Un vectoriseur, défini dans le schéma d’index, affecté à un champ vectoriel et utilisé automatiquement au moment de la requête pour convertir une requête de texte en vecteur. Le vectoriseur que vous avez configuré doit correspondre au modèle d’incorporations utilisé pour encoder votre contenu.
Diagramme de composant
Le diagramme suivant montre les composants de la vectorisation intégrée.
Le flux de travail est un pipeline d’indexeur. Les indexeurs récupèrent des données à partir de sources de données prises en charge et initient l’enrichissement des données (ou l’IA appliquée) en appelant des services Azure OpenAI ou Azure AI services, ou du code personnalisé pour les conversions de texte en vecteur ou d’autres traitements.
Ce diagramme se concentre sur la vectorisation intégrée, mais votre solution n’est pas limitée à cette liste. Vous pouvez ajouter d’autres compétences pour l’enrichissement par IA, créer une base de connaissances, ajouter un classement sémantique, ajouter un réglage de pertinence et d’autres fonctionnalités de requête.
Disponibilité et tarification
La vectorisation intégrée est disponible dans toutes les régions et tous les niveaux. Toutefois, si vous utilisez des compétences et des vectoriseurs Azure OpenAI et Azure AI, assurez-vous que votre compte multiservice Azure AI est disponible dans les mêmes régions que Recherche Azure AI.
Si vous utilisez une compétence personnalisée et un mécanisme d’hébergement Azure (par exemple, une application de fonction Azure, une application web Azure et Azure Kubernetes), consultez la page produits Azure par région pour connaître la disponibilité des fonctionnalités.
La segmentation des données (compétence Fractionnement de texte) est gratuite et disponible sur tous les services Azure AI dans toutes les régions.
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.
Quels scénarios peuvent prendre en charge la vectorisation intégrée ?
Subdivisez des documents volumineux en blocs, utiles pour les scénarios vectoriels et non vectoriels. Pour les vecteurs, les segments vous aident à respecter les contraintes d’entrée des modèles incorporés. Pour les scénarios non vectoriels, vous pouvez avoir une application de recherche de style conversation dans laquelle GPT assemble des réponses à partir de blocs indexés. Vous pouvez utiliser des segments vectorisés ou non vectorisés pour la recherche de style conversation.
Créez un magasin de vecteurs où tous les champs sont des champs vectoriels, et l’ID de document (requis pour un index de recherche) est le seul champ de chaîne. Interrogez le magasin vectoriel pour récupérer les ID de document, puis envoyez les champs vectoriels du document à un autre modèle.
Combinez des champs de vecteur et de texte pour la recherche hybride, avec ou sans classement sémantique. La vectorisation intégrée simplifie tous les scénarios pris en charge par la recherche vectorielle.
Quand utiliser la vectorisation intégrée
Nous vous recommandons d’utiliser la prise en charge intégrée de vectorisation d’Azure AI Studio. Si cette approche ne répond pas à vos besoins, vous pouvez créer des indexeurs et des ensembles de compétences qui appellent la vectorisation intégrée à l’aide des interfaces programmatiques de la Recherche Azure AI.
Comment utiliser la vectorisation intégrée
Pour la vectorisation de requête uniquement :
- Ajouter un vectoriseur à un index. Il doit s’agir du même modèle d’incorporation utilisé pour générer des vecteurs dans l’index.
- Affectez le vectoriseur à un profil vectoriel, puis affectez un profil vectoriel au champ vectoriel.
- Formuler une requête vectorielle qui spécifie la chaîne de texte à vectoriser.
Scénario plus courant, la segmentation et la vectorisation des données pendant l’indexation :
- Créer une connexion de source de données à une source de données prise en charge pour l’indexation basée sur l’indexeur.
- Créer un ensemble de compétences qui appelle la compétence Fractionnement de texte pour la segmentation et AzureOpenAIEmbeddingModel ou une autre compétence d’incorporation pour vectoriser les segments.
- Créer un index qui spécifie un vectoriseur pour le temps de requête et l’affecter aux champs vectoriels.
- Créer un indexeur pour tout piloter, de l’extraction de données à l’exécution de l’ensemble de compétences, via l’indexation. Nous vous recommandons d’exécuter l’indexeur selon une planification pour récupérer les documents modifiés ou ceux qui ont été manqués en raison de la limitation.
Si vous le souhaitez, créez des index secondaires pour les scénarios avancés où le contenu segmenté se trouve dans un index et le contenu non segmenté dans un autre index. Les index segmentés (ou les index secondaires) sont utiles pour les applications RAG.
Conseil
Essayez le nouvel Assistant Importer et vectoriser des données dans le portail Azure pour explorer la vectorisation intégrée avant d’écrire du code.
Connexions sécurisées aux vectoriseurs et aux modèles
Si votre architecture nécessite des connexions privées qui contournent Internet, vous pouvez créer une connexion de lien privé partagé vers les modèles d'intégration utilisés par les compétences lors de l'indexation et les vectoriseurs au moment de la requête.
Les liaisons privées partagées fonctionnent uniquement pour les connexions Azure-à-Azure. Si vous vous connectez à OpenAI ou à un autre modèle externe, la connexion doit se trouver sur l’Internet public.
Pour les scénarios de vectorisation, vous devez utiliser :
openai_account
pour incorporer des modèles hébergés sur une ressource Azure OpenAI.sites
pour l’incorporation de modèles accessibles en tant que compétence personnalisée ou vectoriseur personnalisé. L’ID de groupesites
concerne les services d’application et les fonctions Azure, que vous pouvez utiliser pour héberger un modèle d’incorporation qui n’est pas l’un des modèles d’incorporation Azure OpenAI.
Limites
Assurez-vous que vous connaissez les quotas et limites Azure OpenAI pour l’incorporation de modèles. La Recherche Azure AI a des stratégies de nouvelle tentative, mais si le quota est épuisé, les nouvelles tentatives échouent.
Les limites des jetons Par minute Azure OpenAI sont par modèle, par abonnement. Gardez cette information à l’esprit si vous utilisez un modèle d’incorporation pour les charges de travail de requête et d’indexation. Si possible, suivez les meilleures pratiques. Ayez un modèle d’incorporation pour chaque charge de travail et essayez de les déployer dans différents abonnements.
Dans Recherche Azure AI, n’oubliez pas qu’il existe des limites de service par niveau et charges de travail.
Avantages de la vectorisation intégrée
Voici quelques-uns des principaux avantages de la vectorisation intégrée :
Aucun pipeline de segmentation et de vectorisation de données distincts. Le code est plus simple à écrire et à gérer.
Automatisation de l’indexation de bout en bout. Lorsque les données changent dans la source (par exemple dans stockage Azure, Azure SQL ou Cosmos DB), l’indexeur peut déplacer ces mises à jour via l’ensemble du pipeline, de la récupération, au craquage de documents, via l’enrichissement par IA facultatif, l’enrichissement des données, la segmentation des données, la vectorisation et l’indexation.
La logique de traitement par lots et de nouvelle tentative est intégrée (non configurable). Recherche Azure AI a des stratégies de nouvelle tentative internes afin de limiter les erreurs qui s’affichent lorsque le point de terminaison Azure OpenAI atteint les quotas maximum de jetons pour le modèle d’incorporations. Nous vous recommandons d’exécuter l’indexeur selon une planification (par exemple, toutes les cinq minutes) afin qu’il puisse traiter les appels qui ont été limités par le point de terminaison Azure OpenAI malgré les stratégies de nouvelle tentative.
Projection de contenu segmenté vers des index secondaires. Les index secondaires sont créés comme vous le feriez pour n’importe quel index de recherche (schéma avec des champs et d’autres constructions), mais ils sont renseignés en tandem avec un indexeur principal. Le contenu de chaque document source transite vers des champs dans des index principaux et secondaires lors de la même exécution d’indexation.
Les index secondaires sont destinés aux applications de style question et réponse ou de style conversation. L’index secondaire contient des informations granulaires pour des correspondances plus spécifiques, quand l’index parent dispose de plus d’informations et peut souvent produire une réponse plus complète. Lorsqu’une correspondance est trouvée dans l’index secondaire, la requête retourne le document parent à partir de l’index principal. Supposons par exemple un fichier PDF volumineux en tant que document source, l’index principal peut avoir des informations de base (titre, date, auteur, description), tandis qu’un index secondaire contient des blocs de contenu interrogeable.