Améliorez la recherche sur votre site: réponses contextuelles grâce à l'IA générative

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 modèles et les relations d'un ensemble de données de contenus créés par l'humain.

Cette technologie a démontré des capacités incroyables, grâce à des applications comme 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.

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 et saisit la requête suivante:

What are the features included in Interop 24?

Malheureusement, le résultat sera probablement incorrect 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 la décision de ses fonctionnalités. Il n'est donc pas au courant 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 à davantage de 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 représentent une séquence courante de caractères présents 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. Les LLM peuvent calculer les jetons différemment. La plupart fournissent une API ou un point de terminaison pour 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 être divisée en deux parties:

  1. Ajoutez le contenu des articles les plus populaires en tant que contexte lorsque vous appelez le LLM.
  2. 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 :

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.

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 conduire à des résultats incomplets ou incorrects.
  • Des problèmes peuvent survenir lorsque des mots ont plusieurs significations 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 qui ne correspondent pas à l'objectif de l'utilisateur.

La recherche sémantique est une technique qui permet d'améliorer la précision des recherches 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 ?
  • Signification contextuelle: elle interprète les mots et les expressions par rapport au texte qui les entoure, ainsi qu'à d'autres facteurs tels que la position de l'utilisateur ou l'historique des recherches.
  • Relation entre les concepts: la recherche sémantique utilise des graphes de connaissances (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 général de la requête, et non sur des 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.

Pour le moment, 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 à étendre cette approche d'articles individuels à 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, peut-être, gagner en confiance dans les résultats de ces applications.