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 des 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 contenu créé par l'homme.

Cette technologie a fait preuve de capacités incroyables, 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 interface plus conviviale pour poser des questions sur le contenu d'un site Web. Le machine learning vous permet d'améliorer considérablement les résultats de recherche des 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 présenter les réponses aux 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, ce résultat sera probablement incorrect, pour plusieurs raisons:

  • L'utilisateur a donné au LLM peu de contexte pour sa 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 n'a pas défini ses fonctionnalités. Il n'est donc pas au courant de ces informations.

Bien que les LLM puissent trouver des informations plus récentes, les ensembles de données d'entraînement des LLM sont intrinsèquement obsolètes. L'actualisation des résultats peut s'avérer extrêmement chronophage et coûteuse.

Utiliser l'ingénierie des requêtes

L'ingénierie des requêtes est un ensemble de techniques permettant d'optimiser les résultats d'un LLM.

Une technique consiste à fournir du contexte supplémentaire dans la requête, afin que le LLM soit plus susceptible de générer du contenu lié au contexte.

Pour reprendre notre exemple de l'interopérabilité, la première étape consiste à fournir le contexte complet de l'article. Ajoutez ensuite la question en tant qu'entrée pour que le LLM 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 génère 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 beaucoup mieux qu'une requête sans contexte, car elle est basée sur le contexte fourni.

Effectuer un scaling à la hausse avec le rapport 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 d'un million de jetons de Genmini 1.5, les invites plus volumineuses 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, ce qui permet de représenter une séquence de caractères courante 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. Chaque LLM peut calculer les jetons différemment. 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 des articles pertinents pour les invites LLM. Cette tâche doit comporter deux parties:

  1. Ajoutez le contenu des meilleurs articles en tant que contexte lorsque vous interrogez le LLM.
  2. Recherchez dans le contenu des articles portant sur les fonctionnalités incluses dans Interop 2024.

Nous souhaitons que les résultats de 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 ceux qui connaissent les techniques d'IA, cette approche utilise le rapport RAG, une pratique courante permettant d'améliorer la probabilité d'obtenir des réponses réelles des outils d'IA générative.

Bien que la technique RAG puisse fonctionner avec la recherche standard en texte intégral, elle présente des lacunes.

  • La recherche en texte intégral aide l'IA à trouver des correspondances exactes de mots clés. Toutefois, les LLM ne sont pas en mesure de déterminer la signification prévue de la requête d'un utilisateur. Cela peut entraîner des résultats incomplètes ou incorrects.
  • Des problèmes peuvent survenir lorsque les mots ont plusieurs significations ou que les requêtes utilisent des synonymes. Par exemple, le terme "banque" (institution financière ou berges de rivière) peut entraîner des résultats non pertinents.
  • La recherche en texte intégral peut produire 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 de la recherche en se concentrant sur les aspects clés suivants:

  • Intention de l'internaute: tente de comprendre la raison pour laquelle un utilisateur recherche quelque chose. Que essaie-t-il de trouver ou d'accomplir ?
  • Contexte: il interprète les mots et les expressions par rapport au texte environnant, ainsi qu'à d'autres facteurs tels que la position de l'utilisateur ou l'historique de ses recherches.
  • Relation entre les concepts: la recherche sémantique utilise des Knowledge Graphs (grands réseaux d'entités connexes) 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 dépend de l'objectif général de la requête, et non des mots clés. Cela signifie qu'un outil peut identifier les documents pertinents, même en l'absence du mot clé exact. Il peut également éviter les résultats où le mot est présent, mais a un sens différent.

Pour le moment, vous pouvez implémenter deux outils de recherche qui utilisent la recherche sémantique : Vertex AI Search et Algolia AI Search.

Dessiner des réponses à partir d'un contenu publié

Vous avez appris à utiliser l'ingénierie des requêtes pour permettre à un LLM de fournir des réponses liées à des contenus qu'il n'a jamais vus, en ajoutant du contexte à la requête. Vous avez également appris à faire évoluer cette approche pour passer d'articles individuels à un corpus complet 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 améliorant l'implémentation du RAG dans votre produit.

Les outils d'IA générative peuvent "halluciner" un problème connu, ce qui les rend au mieux, parfois peu fiables ou au pire, nuisibles activement à une entreprise. Grâce à ces techniques, les utilisateurs et les développeurs peuvent améliorer la fiabilité et, éventuellement, renforcer la confiance dans le résultat de ces applications.