Magic Scroll Icon

Le grimoire informatique

Magic Scroll Icon

Moteur de recherche, moteur de requête et modèle de langage

Dans cet article, je vais t'expliquer ce que sont les moteur de recherche, moteur de requête et modèle de langage, et pourquoi ils sont complémentaires (et non substituables).

Mise en contexte

De plus en plus d'apprentis-experts en intelligence artificielle (les copywriters déchus de la mode crypto-NFT qui ont du se réinventer en décembre 2022) inondent les réseaux sociaux de propos les plus désinformés les uns les autres.

À coup de grands superlatifs et de discours décousus aux yeux des plus attentifs, ils vantent les nouveaux jouets d'OpenAI comme s'ils en était des porte-paroles payés à coup de millions:

À ces influenceurs, je leur dis: Wô minute mon p'tit clown.

Démêlons tout ça !

Ce sont trois outils utilisés dans le domaine de l'analyse du langage naturel (NLP en anglais) à ne pas confondre avec la pratique de mieux-être "Programmation Neuro-Linguistique".

Prenons un exemple tout simple pour illustrer le fonctionnement et l'utilisation de ces trois outils bien différents:

1. Je mange une pomme2. Il mange des fraises

Moteur de recherche

Un moteur de recherche, aussi appelé index inversé, va prendre un contenu, généralement du texte ou un document, et indexer toutes les valeurs qu'il contient en faisant une tokenisation, puis en l'associant au document.
La tokenisation est une opération où on crée des jetons, formés souvent de syllabes, de mots ou de phrases, selon nos besoins. On peut ensuite leur associer un identifiant unique dans une base de données. À des fins de simplification, je vais assumer ici qu'un jeton équivaut à un mot.

Notre exemple devient ceci sous la forme d'un index inversé. Comme tu remarques, c'est la même forme que ce qu'on retrouve à la fin de certains livres de référence. Contrairement à la table des matières qui est chronologiques, on associe ici les différents positions de chacun des jetons.

Je:1 mange:1,2 une:1 pomme:1 Il:2 des:2 fraises:2

Ensuite, si je cherche pomme, il me retourne le document 1. Si je cherche mange, il me retourne les documents 1 et 2.

L'ordre des documents 1 et 2 peut changer si je mets d'autres mots clés. S'il y a trop de documents, il va retourner les "meilleurs". Et c'est là la force des moteurs basés sur la sémantique (synonymes, contextes ...) qui calculent la pertinence des pages. PageRank, par exemple, développé par Larry Page, le co-fondateur de Google, est un algorithme de pertinence basé sur le contexte qui utilise les liens entrants.
Les algorithmes recherche sont variés et peuvent être optimisés sur plusieurs critères différents, dont certains à des fins commerciales. Mais dans tous les cas, un moteur de recherche va retourner des documents basé sur leur index et une mesure de pertinence.

Quelques exemples

Voici des moteurs de recherche en logiciel libre:

Quelques moteurs privatifs

Moteur de requête

Un moteur de requête, c'est pour interroger une base de données. Il va te retourner tous les documents qui correspondent exactement à ta requête, sans opinion ni priorisation a priori, dans l'ordre qu'il les croise. Sur certains sites web, les moteurs de recherchent se confondent avec les moteurs de requêtes de par leur interface.
Le langage le plus fréquent pour faire des requêtes est le SQL, pour Structured Query Language. Supposons ici que nous avons mis nos deux exemples dans une table nommée documents, dans une base de données relationnelle. Pour trouver les documents qui contiennent le mot pomme, on utilise cette requêtes. Ici, ce sont les caractères dans le texte qui sont recherchés et non un jeton. Lorsque tu utilises la fonction "rechercher" dans un traitement de texte (ou avec les touches Control+F), tu fais un peu la même chose.

select * from documents where content like %pomme%

Cette requête va me retourner l'entrée de la base de données suivante, si on utilise le format de sortie en JSON.

{"index":1, "content": "Je mange une pomme"}

Sinon, ce sera un tableau

index content
1 Je mange une pomme

Un moteur de requêtes va fournir des résultats similaires à ceux d'un moteur de recherche, mais avec un fonctionnement et des objectifs différent et complémentaires.

Quelques exemples

Je te mentionne quelques bases de données libres avec leur langage de requêtes:

D'autres alternatives privatives populaires (entrepôts de données):

Le modèle de langage

Un modèle de langage est un algorithme qui a été construit en observant l'alignement de jetons dans des textes. Il est entraîné pour donner le mot qui suit dans un énoncé, ou encore pour donner le mot manquant dans un contexte de dictée trouée. Les premiers modèles de langage ont été développés dans les années 1960, et la science de la linguistique informatique a progressé jusqu'à nous.

Dernièrement, l'apparition de modèles GPT (Generalized Pretrained Transformers) a rendu populaire plusieurs applications tels que les modèles génératifs. Ils écrivent du texte basé sur leur apprentissage des structures de phrases et des proximités de mots, combiné à des instructions données dans un "prompt". On peut le "personnaliser" avec notre contenu pour augmenter la probabilité que certains mots soient utilisés.

Si on limite la portée d'un modèle de langage à nos deux exemples, le prompt "Il mange des" va probablement retourner "fraises", parce que c'est associé à "il" et non à "je".
On s'entend ici que ça n'a aucun sens, mais un modèle de langage, ça construit des phrases, ça n'analyse pas le contexte ni la sémantique.

Le prompt "Je bois des" va probablement retourner "pommes". Même si on sait que des pommes ne se boivent pas, il va faire cette proposition parmi les deux phrases du contexte. C'est probablement parce qu'il a déjà vu "pomme" avec "jus" et "jus" avec "boire" souvent dans son entraînement.

À faire attention

Le modèle de langage n'est pas conscient de l'existence des documents "Je mange une pomme" et "Il mange des fraises" et ne peux donc pas expliquer d'où viennent ses réponses. C'est pourquoi il est possible qu'il invente des réponses qui ne font aucun sens !

Il peut seulement inférer la proximité ou non de certains mots ou contextes en se basant sur sa structure interne, appelée un plongement (embedding en anglais). Mais, il est possible de le combiner à un moteur de requêtes pour lui fournir de l'information factuelle et un moteur de recherche pour lui fournir de nouvelles sources d'information.

Quelques exemples

Voici des logiciels libres pour utiliser des modèles de langage:

Quelques modèles de langage larges et "ouverts" (il y a de nombreux enjeux éthiques non-adressés avec ces modèles):

Pour utiliser ces modèles des langage, tu peux:

Ces modèles peuvent utiliser un nouveau type de bases de données, appelées bases vectorielles, pour améliorer la création de prompts et fournir un contexte.

Pour résumer

Un moteur de recherche retourne les meilleurs documents correspondant aux mots mentionnés dans la requête. Il se base sur un index contenant tous les jetons provenant des documents. Ça permet d'associer les jetons aux documents où chacun se trouve. Son objectif, c'est d'offrir des choix pertinents à explorer.

Un moteur de requêtes va extraire toutes les informations d'une base de données qui correspondent exactement à la requête en entrée. Il sert à faire un inventaire de tout ce qui est disponible.
Un modèle de langage va compléter des phrases ou des textes en se basant sur un apprentissage de la structure de la langue. Il peut aussi utiliser des informations complémentaires en entrée sous la forme de prompt. Il sert surtout à trouver de nouvelles idées.

En savoir plus

Étiquettes

post base-de-donnees langage-naturel llm modele-de-langage moteur-de-recherche moteur-de-requetes nlp sql