Maison  >  Article  >  Périphériques technologiques  >  Créer une application LLM : tirer parti des capacités de recherche vectorielle d'Azure Cognitive Services

Créer une application LLM : tirer parti des capacités de recherche vectorielle d'Azure Cognitive Services

王林
王林avant
2023-08-23 22:49:06759parcourir

Auteur | Simon Bisson

Organisé | Ethan

L'API de recherche cognitive de Microsoft propose désormais la recherche vectorielle en tant que service à utiliser avec de grands modèles de langage dans Azure OpenAI et plus encore.

Des outils comme Semantic Core, TypeChat et LangChain permettent de créer des applications autour de technologies d'IA générative comme Azure OpenAI. En effet, ils permettent d'imposer des contraintes sur le grand modèle de langage (LLM) sous-jacent, qui peut être utilisé comme outil pour créer et exécuter des interfaces en langage naturel.

Essentiellement, un LLM est un outil pour naviguer dans des espaces sémantiques où les neurones profonds Le réseau peut prédire la syllabe suivante dans une chaîne de jetons à partir du signal initial. Si l'invite est ouverte, le LLM peut dépasser sa portée d'entrée et produire quelque chose qui semble raisonnable mais qui est en réalité complètement absurde.

Tout comme nous avons tous tendance à faire confiance aux résultats des moteurs de recherche, nous avons également tendance à faire confiance aux résultats des LLM car nous les considérons comme un autre aspect d'une technologie familière. Mais la formation de grands modèles de langage à l'aide de données fiables provenant de sites tels que Wikipedia, Stack Overflow et Reddit ne permet pas de comprendre le contenu ; elle donne simplement la possibilité de générer du texte qui suit les mêmes modèles que le texte de ces sources. Parfois, le résultat peut être correct, mais d’autres fois, il peut être erroné.

Comment pouvons-nous éviter les erreurs et les résultats dénués de sens des grands modèles linguistiques et garantir que nos utilisateurs obtiennent des réponses précises et raisonnables à leurs requêtes ?

1. Limiter les grands modèles avec des contraintes de mémoire sémantique

Ce que nous devons faire est de limiter LLM pour garantir qu'il génère uniquement du texte à partir d'ensembles de données plus petits. C'est là qu'intervient la nouvelle pile de développement basée sur LLM de Microsoft. Il fournit les outils nécessaires pour contrôler votre modèle et l'empêcher de générer des erreurs.

Vous pouvez forcer un format de sortie spécifique en utilisant des outils comme TypeChat, ou utiliser des pipelines d'orchestration comme Semantic Kernel pour traiter d'autres sources d'informations fiables, ce qui « enracine » efficacement le modèle dans un espace sémantique connu, contraignant ainsi le LLM. Ici, LLM peut faire ce qu'il fait bien, résumer l'invite construite et générer du texte basé sur cette invite, sans dépasser (ou au moins réduire considérablement la probabilité de dépassement).

Ce que Microsoft appelle « mémoire sémantique » est à la base de cette dernière méthode. La mémoire sémantique utilise la recherche vectorielle pour fournir des indices qui peuvent être utilisés pour fournir le résultat factuel du LLM. La base de données vectorielles gère le contexte de l'invite initiale, la recherche vectorielle recherche les données stockées qui correspondent à la requête initiale de l'utilisateur et le LLM génère le texte sur la base de ces données. Découvrez cette approche en action dans Bing Chat, qui utilise les outils de recherche vectorielle natifs de Bing pour créer des réponses dérivées de sa base de données de recherche.

La mémoire sémantique permet aux bases de données vectorielles et aux recherches vectorielles de fournir des moyens d'application basés sur LLM. Vous pouvez choisir d'utiliser l'une des bases de données vectorielles open source, de plus en plus nombreuses, ou d'ajouter des index vectoriels à vos bases de données SQL et NoSQL familières. Un nouveau produit qui semble particulièrement utile étend la recherche cognitive Azure, en ajoutant un index vectoriel à vos données et en fournissant une nouvelle API pour interroger cet index

2. Ajouter un index vectoriel à la recherche cognitive Azure

La recherche cognitive Azure est basée sur la recherche propre de Microsoft outils. Il fournit une combinaison de requêtes Lucene familières et de ses propres outils de requête en langage naturel. Azure Cognitive Search est une plateforme Software-as-a-Service qui peut héberger des données privées et accéder au contenu à l'aide des API Cognitive Services. Récemment, Microsoft a également ajouté la prise en charge de la création et de l'utilisation d'index vectoriels, ce qui vous permet d'utiliser des recherches de similarité pour classer les résultats pertinents dans vos données et les utiliser dans des applications basées sur l'IA. Cela fait d'Azure Cognitive Search un outil idéal pour les applications LLM hébergées par Azure et construites avec Semantic Kernel et Azure OpenAI, et les plugins Semantic Kernel pour Cognitive Search pour C# et Python sont également disponibles

Comme pour les autres services Azure, Azure Cognitive Search est un outil géré. service qui fonctionne avec d’autres services Azure. Il vous permet d'indexer et de rechercher dans divers services de stockage Azure, hébergeant du texte, des images, de l'audio et de la vidéo. Les données sont stockées dans plusieurs régions, offrant une haute disponibilité et réduisant la latence et les temps de réponse. De plus, pour les applications d'entreprise, vous pouvez utiliser Microsoft Entra ID (le nouveau nom d'Azure Active Directory) pour contrôler l'accès aux données privées

3 Générer et stocker des vecteurs d'intégration pour le contenu

Il convient de noter qu'Azure Cognitive Search est. un service "apportez votre propre vecteur d'intégration". La recherche cognitive ne génère pas les intégrations vectorielles dont vous avez besoin. Vous devez donc utiliser Azure OpenAI ou l'API d'intégration OpenAI pour créer des intégrations pour votre contenu. Cela peut nécessiter le regroupement de fichiers volumineux pour garantir que vous restez dans les limites des jetons du service. Soyez prêt à créer de nouvelles tables pour indexer les données vectorielles si nécessaire

Dans la Recherche cognitive Azure, la recherche vectorielle utilise un modèle du voisin le plus proche pour renvoyer un nombre sélectionné par l'utilisateur de documents similaires à la requête d'origine. Ce processus appelle l'indexation vectorielle en utilisant l'intégration vectorielle de la requête d'origine et renvoie un contenu vectoriel et d'index similaire à partir de la base de données, prêt à être utilisé par l'invite LLM

Microsoft utilise ce magasin de vecteurs dans le cadre du modèle de conception Retrieval Augmented Generation (RAG) d'Azure Machine Learning et en conjonction avec son outil de flux d'invite. RAG exploite l'indexation vectorielle dans la recherche cognitive pour créer le contexte qui constitue la base des invites LLM. Cela vous donne un moyen low-code de créer et d'utiliser des index vectoriels, par exemple en définissant le nombre de documents similaires renvoyés par une requête Simple. Commencez par créer des ressources pour Azure OpenAI et Cognitive Search dans la même région. Cela vous permettra de charger l'index de recherche avec des intégrations avec une latence minimale. Vous devez appeler l’API Azure OpenAI et l’API Cognitive Search pour charger l’index. C’est donc une bonne idée de vous assurer que votre code peut répondre à toutes les limites de débit possibles dans le service en ajoutant du code qui gère les tentatives. Lorsque vous utilisez l'API de service, vous devez utiliser des appels asynchrones pour générer des intégrations et charger des index.

Les vecteurs sont stockés dans les index de recherche sous forme de champs vectoriels, où les vecteurs sont des nombres à virgule flottante avec des dimensions. Ces vecteurs sont cartographiés via un graphe de voisinage hiérarchique navigable de petit monde qui trie les vecteurs en voisinages de vecteurs similaires, accélérant ainsi le processus réel de recherche d'index vectoriels.

Après avoir défini le schéma d'index pour la recherche vectorielle, vous pouvez charger des données dans l'index pour la recherche cognitive. Notez que les données peuvent être associées à plusieurs vecteurs. Par exemple, si vous utilisez la recherche cognitive pour héberger les documents de l'entreprise, vous pouvez disposer d'un vecteur distinct pour les termes de métadonnées clés et le contenu du document. L'ensemble de données doit être stocké sous forme de document JSON, ce qui simplifie le processus d'utilisation des résultats pour assembler le contexte d'invite. L'index n'a pas besoin de contenir le document source car il prend en charge l'utilisation des options de stockage Azure les plus courantes

Avant d'exécuter la requête, vous devez d'abord appeler le modèle d'intégration de votre choix avec le corps de la requête. Cela renvoie un vecteur multidimensionnel que vous pouvez utiliser pour rechercher l'index de votre choix. Lorsque vous appelez l'API de recherche vectorielle, spécifiez l'index vectoriel cible, le nombre de correspondances souhaité et les champs de texte pertinents dans l'index. Choisir la mesure de similarité appropriée peut être très utile pour les requêtes, dont la plus couramment utilisée est la métrique du cosinus

5 Au-delà des simples vecteurs de texte

Les capacités vectorielles d'Azure Cognitive Search vont au-delà de la simple correspondance de texte. La recherche cognitive peut être utilisée avec des intégrations multilingues pour prendre en charge les recherches de documents dans plusieurs langues. Vous pouvez également utiliser des API plus complexes. Par exemple, vous pouvez combiner les outils de recherche sémantique Bing dans la recherche hybride pour fournir des résultats plus précis, améliorant ainsi la qualité des résultats des applications basées sur LLM.

Microsoft produit rapidement les outils et la technologie qu'il a utilisés pour créer son propre moteur de recherche Bing basé sur GPT-4, ainsi que divers Copilots. Les moteurs d’orchestration tels que Semantic Kernel et le flux d’invites d’Azure AI Studio sont au cœur de l’approche de Microsoft en matière de travail avec de grands modèles de langage. Maintenant que ces bases ont été posées, nous voyons l’entreprise déployer davantage de technologies habilitantes nécessaires. La recherche de vecteurs et l'indexation de vecteurs sont essentielles pour fournir des réponses précises. En créant des outils familiers pour fournir ces services, Microsoft nous aidera à minimiser les coûts et les courbes d'apprentissage

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer