L'IA générative fait référence à l'utilisation de l'intelligence artificielle pour créer de nouveaux contenus, comme du texte, des images, de la musique, de l'audio et des vidéos. L'IA générative s'appuie sur un modèle de machine learning (ML) pour apprendre les schémas et les relations dans un ensemble de données de contenus créés manuellement.
Cette technologie a fait preuve d'incroyables capacités grâce à des applications telles que Gemini. Vous vous demandez peut-être comment implémenter des outils d'IA générative dans vos produits Web.
Un cas d'utilisation courant consiste à fournir aux utilisateurs une meilleure interface pour poser des questions sur le contenu d'un site Web. Grâce au machine learning, vous pouvez considérablement améliorer les résultats de recherche de vos utilisateurs.
Créer une meilleure recherche spécifique au site
Vous pouvez créer une interface dans laquelle les utilisateurs rédigent leur question, qui est ensuite envoyée à un grand modèle de langage (LLM), tel que Gemini, puis affiche les réponses à vos utilisateurs.
Supposons qu'une telle fonctionnalité existe sur ce site. Un utilisateur souhaite savoir quelles API sont incluses dans Interop 2024. Il saisit la requête suivante :
What are the features included in Interop 24?
Malheureusement, la sortie est probablement incorrecte pour plusieurs raisons :
- L'utilisateur a fourni peu de contexte au LLM pour la question. Par conséquent, le LLM est plus susceptible de renvoyer de mauvaises réponses ou des hallucinations.
- Le LLM a probablement été entraîné avant la création d'Interop 2024 ou avant la décision de ses fonctionnalités. Il n'a donc pas connaissance de ces informations.
Bien qu'il soit possible que les LLM trouvent des informations plus récentes, les ensembles de données d'entraînement des LLM sont intrinsèquement obsolètes. Maintenir des résultats à jour peut s'avérer incroyablement long et coûteux.
Utiliser l'ingénierie des requêtes
L'ingénierie des requêtes est un ensemble de techniques permettant d'obtenir le meilleur résultat possible d'un LLM.
Une technique consiste à fournir du contexte supplémentaire dans l'invite, ce qui rend le LLM plus susceptible de générer du contenu en rapport avec le contexte.
Pour reprendre notre exemple d'interopérabilité, la première étape consiste à fournir le contenu complet de l'article en tant que contexte. Ajoutez ensuite la question comme entrée pour que le LLM y réponde. Exemple :
Context:
Following on from the success of Interop 2022 and Interop 2023, we
are excited about the opportunity to collaborate once again with
all key browser vendors and other relevant stakeholders...
(trimmed to fit in this article)
Input:
What are the features included in Interop 2024?
Vous pouvez vous attendre à ce que Gemini affiche un résultat semblable à celui-ci :
The features included in Interop 24 are Accessibility, CSS Nesting, Custom
Properties, Declarative Shadow DOM, font-size-adjust, HTTPS URLs for
WebSocket, IndexedDB, Layout, Pointer and Mouse Events, Popover, Relative
Color Syntax, requestVideoFrameCallback, Scrollbar Styling, @starting-style
and, transition-behavior, Text Directionality, text-wrap: balance,URL
Cette réponse est probablement bien meilleure qu'avec une requête sans contexte, car elle est basée sur le contexte fourni.
Évoluer à la hausse avec RAG
Par exemple, au lieu de répondre à une question sur un seul article, nous voulons que le LLM réponde à d'autres questions sur web.dev, en utilisant n'importe quel article comme contexte supplémentaire. Bien que cela puisse être possible pour les sites de petite taille, étant donné la fenêtre de contexte de 1 million de jetons de Gemini 1.5, les requêtes plus importantes sont plus lentes et plus coûteuses à exécuter.
Les longueurs d'entrée et de sortie des LLM sont mesurées et facturées en jetons, qui permettent de représenter une séquence courante de caractères présente dans une entrée de texte. Le nombre de jetons est généralement supérieur au nombre de mots. Par exemple, l'entrée du premier exemple comportait 775 mots, représentés par 1 097 jetons. Différents LLM peuvent calculer les jetons différemment et la plupart fournissent une API ou un point de terminaison permettant de calculer le nombre de jetons pour la saisie de texte.
Une solution consiste à fournir les articles pertinents pour la requête LLM. Cette tâche doit se dérouler en deux parties:
- Ajoutez le contenu des articles les plus populaires en tant que contexte lorsque vous appelez le LLM.
- Recherchez les articles associés à la question "Quelles sont les fonctionnalités incluses dans Interop 2024 ?".
Nous souhaitons que les résultats Gemini renvoient du contenu basé sur les articles suivants :
- Article 1 : web.dev/blog/submit-your-proposals-for-interop-2024
- Article 2 : web.dev/blog/interop-2023-wrapup
- Article 3: web.dev/blog/interop-2024
L'entrée doit se présenter comme suit:
Context:
Article 1:
Over the past two years... (trimmed)
Article 2:
At the end of last year Interop 2023 wrapped up. This effort... (trimmed)
Article 3:
Following on from the success of Interop 2022... (trimmed)
Input:
What are the features included in Interop 2024?
Ce contexte produit le résultat attendu.
* Accessibility * CSS Nesting * Custom Properties
* Declarative Shadow DOM * font-size-adjust
* HTTPS URLs for WebSocket * IndexedDB * Layout
* Pointer and Mouse Events * Popover * Relative Color Syntax
* requestVideoFrameCallback * Scrollbar Styling
* @starting-style and transition-behavior * Text Directionality
* text-wrap: balance * URL
Pour les personnes familières avec les techniques d'IA, cette approche utilise la méthode RAG, une pratique courante pour améliorer la probabilité d'obtenir des réponses réelles à partir d'outils d'IA générative.
Améliorer les résultats grâce à la recherche sémantique
Bien que la technique RAG puisse fonctionner avec une recherche en texte intégral standard, cette approche présente des inconvénients.
- La recherche en texte intégral aide l'IA à trouver des correspondances exactes avec les mots clés. Toutefois, les LLM ne peuvent pas déterminer la signification réelle de la requête d'un utilisateur. Cela peut entraîner des sorties incomplètes ou incorrectes.
- Il peut y avoir des problèmes lorsque les mots ont plusieurs sens ou que les requêtes utilisent des synonymes. Par exemple, "banque" (institution financière par rapport à la rive) peut entraîner des résultats non pertinents.
- La recherche en texte intégral peut générer des résultats qui contiennent les mots clés, mais ne correspondent pas à l'objectif de l'utilisateur.
La recherche sémantique est une technique qui permet d'améliorer la précision de la recherche en se concentrant sur les aspects clés suivants:
- Intention de l'utilisateur : essaie de comprendre pourquoi un utilisateur recherche quelque chose. Que cherche-t-il à trouver ou à accomplir ?
- Sens contextuel : interprétation des mots et des expressions en fonction du texte environnant, ainsi que d'autres facteurs tels que la position ou l'historique de recherche de l'utilisateur.
- Relation entre les concepts: la recherche sémantique utilise des Knowledge Graphs (grands réseaux d'entités associées) et le traitement du langage naturel pour comprendre comment les mots et les idées sont liés.
Par conséquent, lorsque vous créez des outils avec la recherche sémantique, le résultat de la recherche repose sur l'objectif global de la requête, et non sur les mots clés. Cela signifie qu'un outil peut déterminer les documents pertinents, même lorsque le mot clé exact n'est pas présent. Il peut également éviter les résultats dans lesquels le mot est présent, mais a une signification différente.
À l'heure actuelle, vous pouvez implémenter deux outils de recherche qui utilisent la recherche sémantique : Vertex AI Search et Algolia AI Search.
Extraire des réponses à partir de contenus publiés
Vous avez appris à utiliser l'ingénierie des requêtes pour permettre à un LLM de fournir des réponses liées à du contenu qu'il n'a jamais vu en ajoutant du contexte à la requête. Vous avez également appris à appliquer cette approche à des articles individuels et à un corpus entier de contenus à l'aide de la technique de génération augmentée de récupération (RAG). Vous avez appris comment la recherche sémantique peut améliorer davantage les résultats des requêtes de recherche des utilisateurs, en implémentant mieux la RAG dans votre produit.
Il est connu que les outils d'IA générative peuvent "halluciner", ce qui les rend parfois peu fiables au mieux, et au pire, activement nuisibles pour une entreprise. Grâce à ces techniques, les utilisateurs et les développeurs peuvent améliorer la fiabilité et, éventuellement, établir une confiance dans les résultats de ces applications.