De La Base De Connaissances D'IA À RAG
Lors de la création d’applications d’IA, on rencontre le problème de “l’IA n’a pas vu les données de la tâche”. Par exemple, pour les entreprises, l’IA ne peut pas maîtriser les informations de chaque client ; pour les particuliers, l’IA ne connaît pas bien certaines informations personnelles ou privées. Même si l’IA est très performante (même dans un modèle de monde idéal), elle perd la capacité d’“analyser des problèmes spécifiques” en l’absence de données spécifiques à la tâche.
1 Qu’est-ce que RAG
Améliorer la précision et la fiabilité des modèles d’IA génératifs en récupérant des informations externes est ce qu’on appelle la technologie de génération augmentée par la récupération (Retrieval-Augmented Generation). Si l’on compare le processus de réalisation de tâches par les grands modèles de langage (LLM) à un examen, alors un grand modèle avec RAG équivaut à un examen à livre ouvert, tandis que sans RAG, c’est comme un examen à livre fermé. RAG est une technologie qui aide les LLM à récupérer des informations pour améliorer l’effet de génération.
RAG a été proposé pour la première fois par Patrick Lewis et al. dans cet article, et leur entreprise est Cohere, qui propose actuellement des services API incluant des modèles d’Embedding et de Rerank, avec de bonnes performances.
2 Pourquoi avons-nous besoin de RAG
L’apparition de RAG vise à résoudre certains problèmes et insuffisances des grands modèles de langage lors de leur application. Le point le plus notable est le problème des hallucinations des grands modèles, c’est-à-dire que la sortie des grands modèles peut ne pas correspondre aux faits ou inventer des réponses. De plus, les données utilisées pour entraîner les LLM peuvent être obsolètes, et les LLM ne connaissent rien des informations récentes.
RAG permet aux LLM d’accéder à des informations récentes ou personnalisées et permet aux utilisateurs de vérifier les sources d’information des LLM pour garantir leur exactitude. Les données récupérées par RAG peuvent être publiques (comme les moteurs de recherche) ou privées (comme les informations d’entreprise, les données personnelles sensibles), ce qui offre un large éventail d’applications pour RAG. RAG est déjà largement utilisé, par exemple, le NeMo Retriever de Nvidia lit les informations internes de l’entreprise, et Kimi Chat de Dark Side of the Moon utilise des moteurs de recherche pour répondre.
Jensen Huang présentant le NeMo Retriever à GTC20243 Base de connaissances construite autour de RAG
La base de connaissances d’IA est un outil important pour permettre à l’IA de “s’adapter aux besoins”. En aidant l’IA à mieux accomplir les tâches grâce à la base de connaissances, la construction de bases de connaissances d’IA peut actuellement se faire de trois manières :
- Ingénierie des invites (Prompt Engineering)
- Réglage fin (Fine Tuning)
- Embedding (Embedding)
L’ingénierie des invites consiste à construire directement une base de connaissances dans les invites, en plaçant toutes les informations dans les invites. Cette méthode convient à une utilisation à petite échelle, mais le nombre de tokens d’entrée des modèles d’IA actuels ne peut généralement pas répondre à cette méthode. En fait, même avec le développement de l’IA, le jour où la fenêtre d’entrée de l’IA sera suffisamment grande pour contenir une base de connaissances générale, la construction de bases de connaissances aura toujours sa valeur. Car la longueur du contenu d’entrée affecte les performances de l’IA (du moins pour les modèles actuels), comme le montre Needle In A Haystack - Pressure Testing LLMs.
Le réglage fin est une forme populaire dans le milieu académique, utilisant des données de tâches spécifiques pour ajuster un modèle pré-entraîné. Cette méthode est en fait adaptée pour créer un grand modèle générique pour un secteur, comme un grand modèle pour le secteur juridique, un grand modèle pour le secteur médical, etc. D’une part, les données d’entraînement nécessaires pour le réglage fin ne sont pas peu nombreuses, et le coût est élevé ; d’autre part, le réglage fin n’est pas assez flexible, par exemple pour s’ajuster rapidement en fonction d’un ou deux documents. Le processus de réglage fin consiste en fait à apprendre et généraliser les données d’entraînement, plutôt qu’à mémoriser le contenu, il s’agit plutôt d’améliorer les capacités dans un domaine particulier.
Ainsi, la méthode la plus courante pour construire une base de connaissances est actuellement l’Embedding. Et ce type de base de connaissances nécessite également une combinaison avec RAG pour être efficace.
4 Composants de base de RAG
Une composition classique et basique de RAG est illustrée ci-dessous.
Le système RAG comprend principalement trois étapes : indexation, récupération et génération.4.1 Embedding
Dans ce processus, l’utilisateur doit d’abord télécharger des documents, que le système stocke dans une base de données vectorielle après les avoir passés par l’Embedding. L’Embedding consiste à convertir des textes sémantiquement similaires en vecteurs proches, ce qui est communément appelé vectorisation.
4.2 Récupération
Lorsque l’utilisateur pose une question au LLM, le contenu de la question est converti en vecteur et correspond dans la base de données vectorielle, récupérant une série de contenus. C’est la première étape de la récupération.
4.3 Rerank
Le contenu récupéré directement dans la base de données vectorielle peut ne pas être parfait, et les résultats ne correspondent souvent pas au contenu de la requête, nécessitant une deuxième étape de récupération, appelée Rerank. À cette étape, le modèle Rerank réorganise le contenu récupéré lors de l’étape précédente, en produisant un classement des résultats selon leur pertinence. Une fois le Rerank terminé, on peut appliquer le Top K dans la phase de génération suivante.
5 Implémentation de RAG en 5 lignes de code
Une instruction d’affectation compte pour une ligne
|
|
RagTokenizer
est utilisé pour le tokenisation du texte, RagTokenForGeneration
est la partie génératrice du modèle RAG, et RagRetriever
est responsable de la récupération. RagTokenizer.from_pretrained("facebook/rag-token-nq")
charge un tokenizer pré-entraîné pour convertir le texte en un format compréhensible par le modèle (c’est-à-dire le tokenisation). RagTokenForGeneration.from_pretrained("facebook/rag-token-nq", retriever=retriever)
charge le modèle RAG pré-entraîné. facebook/rag-token-nq
est le nom du modèle et du tokenizer, qui sont pré-entraînés sur le jeu de données Natural Questions.
6 Implémentations open-source de RAG
Dify est une plateforme de développement d’applications LLM, avec plus de 100 000 applications construites sur Dify.AI. Elle intègre les concepts de Backend as Service et LLMOps, couvrant la pile technologique de base nécessaire pour construire des applications natives d’IA générative, y compris un moteur RAG intégré. Avec Dify, vous pouvez déployer des capacités similaires à Assistants API et GPTs sur n’importe quel modèle. Ce projet est dirigé par une entreprise de Suzhou et propose des services SaaS.
Langchain-Chatchat est un projet de base de connaissances RAG de grands modèles de langage, open-source et déployable hors ligne, basé sur des modèles de langage tels que ChatGLM et des cadres d’application tels que Langchain. Initialement, il ne supportait que le modèle ChatGLM, mais il a ensuite ajouté le support de nombreux modèles open-source et en ligne.
Le tableau comparatif des fonctionnalités des deux projets est le suivant :
Dify-api | ChatChat | |
---|---|---|
Capacités périphériques | Lecture de documents ordinaires | Documents ordinaires OCR d’image |
Source de données | Contenu textuel des documents Base de données vectorielle |
Moteur de recherche Base de données vectorielle |
Support des modèles | Modèle d’Embedding en ligne Modèle de Rerank en ligne LLM en ligne |
Modèle d’Embedding en ligne Modèle d’Embedding hors ligne LLM hors ligne |
Fonctionnalités avancées | Récupération hybride ES | Aucune |
RAG avancé | Non supporté | Non supporté |
En fait, il existe encore certaines fonctionnalités que les projets open-source actuels ne couvrent pas complètement, telles que :
- Capacités multimodales
- Support des bases de données relationnelles traditionnelles
- Récupération multi-bases/unifiée
- Fonction de citation
- RAG avancé
- Indicateurs d’évaluation