tags:
- RAG
- Open_Source
- local
- gpt4all
- bibliography
- LLM
- tutoRAG simple, local et Open-Source avec GPT4All
Ce guide fait suite à Installer une LLM en local pour un humain local . Au moment de l'écriture de ce tuto, les fonctionnalités de Retrieval-Augmented Generation de Jan sont moins développées que GPT4All , que l'on va donc utiliser.
En bref, le RAG est une méthode pour améliorer le résultat d'une requête à un Large Language Model à l'aide de documents complémentaires stockés dans une base, par exemple une bibliographie scientifique, sans avoir à fine-tune le modèle.

Si vous n'avez pas de GPU Nvidia, ignorer cette étape. On peut faire tourner le modèle uniquement sur processeur sans problème.
Sinon,
Installer l'outil CUDA Toolkit pour pouvoir exploiter la GPU avec CUDA en suivant les étapes suivantes :


Aller sur la page : https://www.nomic.ai/gpt4all et télécharger l'installeur adapté à votre système d'exploitation.
Lors de l'affichage de la première fenêtre, cliquer sur Reglages en bas à gauche :

afin de configurer le proxy HTTP : cache.univ-st-etienne.fr.
Remplacer le port 0 par le port effectif utilisé dans votre réseau.

Dossier d'installation par défaut dans votre dossier User :
C:\Users\username\gpt4all , modifier si vous voulez l'installer ailleurs que dans C:\
Suivez les étapes jusqu'à la fin :
Si le proxy est correctement configuré, le téléchargement des données se fait par internet.
Sinon, l'installation peut se faire entièrement en local également.
Fin de l'installation, vous allez pouvoir commencer à utiliser GPT4All ! 🎉
L'interface de l'accueil se présente comme ceci :

L'onglet Chats permet de discuter avec des LLM installées localement, ou des modèles distants en spécifiant une clé d'API.
LocalDocs permet de réaliser l'embedding vectoriel de documents textuels pour faire du RAG.
Find Models permet d'accéder à des repository HuggingFace pour télécharger de nouveaux modèles.
Lors d'une première utilisation, aucun modèle n'est installé, il est donc nécessaire d'en installer un en cliquant sur Install a Model :

Il est recommandé d'installer par défaut LLama 3 de Meta ou Nous Hermes 2, qui fonctionnent bien en anglais.
Cette interface avec HuggingFace de téléchargement a tendance à s'arrêter en plein milieu, dans ce cas, il faut relancer gpt4All. Je ne sais pas exactement d'où vient le problème, vu que le proxy est correctement configuré.
L'installation d'un modèle à partir d'HuggingFace pour télécharger d'autres modèles (multilingues par ex.) directement à la source sera traité ultérieurement, mais est plus fiable en terme de stabilité du téléchargement.

Une fois un modèle de LLM installé, on peut commencer à converser avec dans l'onglet Chat.
L'interface de chat se présente comme ceci :

Sur la gauche, nous avons l'historique de conversations enregistré localement sur votre machine dans le dossier spécifié lors de l'installation (modifiable dans les paramètres), ici par défaut : C:\Users\username\AppData\Local\nomic.ai\GPT4All
dans les fichiers .chat
On peut modifier le titre, supprimer les conversations à notre guise.
Le bouton New Chat permet de commencer une nouvelle conversation.
A sa droite, un bouton permet de masquer l'historique de chat ou non.
Le plus important ici étant le bouton permettant le choix de modèle, qui est une liste déroulante permettant de changer avec quel modèle on converse :

Les deux boutons à gauche du nom du modèle permettent de recharger le modèle, par exemple lors de modification de paramètres spécifiques de modèles, et d'éjecter le modèle de la mémoire GPU ou CPU.
Mais ce qui va nous intérésser ici c'est surtout la fonctionnalité de Retrieval-Augmented Generation , implémentée dans le plugin interne LocalDocs, qui permet facilement de transformer une base de connaissance texte en base de donnée vectorielle sémantique.
L'interface simple permet d'ajouter de nouveaux dossiers contenant des fichiers textes pour réaliser un embedding automatique avec le modèle nomic-embed-text-v1.5 fourni avec le logiciel.

En cliquant sur Add Collection :

Vous pouvez ajouter un dossier avec des fichiers .txt, .pdf, ou markdown .md. L'arboresence de dossier est parcourue de manière récursive en entier donc vous pouvez mettre autant de sous-dossiers que vous voulez.
Une fois la collection chargée, le modèle d'embedding commencera à générer la base de données vectorielles, qui se mettra à jour automatiquement à chaque modification du dossier.
Le processus d'embedding est nettement plus rapide avec une carte graphique, mais est possible avec un CPU. On verra dans la suite comment paramétrer le GPU.
Et voilà ! Une fois l'embedding terminé, vous pourrez discuter avec votre base de texte dans le chat, en selectionnant le dossier qui vous intéresse, et poser des questions relatives aux documents, ici ma bibliographie scientifique locale :

Nous allons voir ici les éléments de configuration importants :
⚡ Onglet Application :

Dans Device, selectionner votre carte graphique CUDA si vous en avez une, sinon laissez sur auto.
Vous pouvez aussi contribuer au Datalake Open-Source de Nomic.ai qui a développé GPT4All. Ce Datalake permet d'entraîner de futurs modèles et est accessible à tous pour des usages personnels.
C'est ici également que vous pouvez modifier le dossier racine de GPT4All.
C'est aussi dans ce dossier que vous pouvez copier n'importe quel modèle au format .GGUF téléchargé depuis HuggingFace pour l'importer dans GPT4All.
🛠Dans l'onglet Model :
vous pouvez modifier les paramètres spécifiques de chaque modèle. Les modifications peuvent entraîner une instabilité des réponses du modèle, à modifier avec précaution.
📄 Dans l'onglet LocalDocs :

Allowed File Extensions permet d'ajouter des extensions lisibles par le modèle d'embedding. (J'ignore quels autres formats sont acceptés)
L'embedding peut se faire en ligne avec un modèle Nomic AI à travers leur API plutôt qu'avec le modèle local, pour être sauvegardé sur le cloud de votre compte utilisateur Nomic.
Embeddings Device -> Choisir votre GPU CUDA pour réaliser les embeddings avec la GPU plutôt que le CPU. Par défaut, c'est avec le CPU.
📄Cochez Show Sources si ce n'est pas déjà fait, ce qui permet au modèle de citer dans quel document est pioché le fragment (snippet) de document.
Pour plus d'informations, la documentation GPT4All sera plus exhaustive.
Step 0 : Aller sur https://huggingface.co/
Step 1 : écrire le nom de votre modèle (+ gguf si ça n'apparait pas)
, par exemple pour un modèle multilingue comme Aya-23 :

Choisir la taille souhaitée, ici 8B est adapté à ma GPU, avec le suffixe GGUF de l'utilisateur bartowski.
Sur la page il y a un tableau récapitulatif de la qualité du modèle selon son niveau de compression par quantification des poids (Quantization) . Vous pouvez télécharger le modèle qui vous semble approprié selon votre mémoire GPU disponible.
La taille du modèle ne correspond pas forcément à l'espace utilisé en VRAM GPU, cela varie selon le nombre de couches chargées en mémoire et du kernel python utilisé pour l'inférence. En général, la quantification sur 4 bit Q4_K_M est la plus répandue.
Download a file (not the whole branch) from below:
| Filename | Quant type | File Size | Description |
|---|---|---|---|
| aya-23-8B-Q8_0.gguf | Q8_0 | 8.54GB | Extremely high quality, generally unneeded but max available quant. |
| aya-23-8B-Q6_K.gguf | Q6_K | 6.59GB | Very high quality, near perfect, recommended. |
| aya-23-8B-Q5_K_M.gguf | Q5_K_M | 5.80GB | High quality, recommended. |
| aya-23-8B-Q5_K_S.gguf | Q5_K_S | 5.66GB | High quality, recommended. |
| aya-23-8B-Q4_K_M.gguf | Q4_K_M | 5.05GB | Good quality, uses about 4.83 bits per weight, recommended. |
| aya-23-8B-Q4_K_S.gguf | Q4_K_S | 4.82GB | Slightly lower quality with more space savings, recommended. |
| aya-23-8B-IQ4_NL.gguf | IQ4_NL | 4.81GB | Decent quality, slightly smaller than Q4K_S with similar performance _recommended. |
| aya-23-8B-IQ4_XS.gguf | IQ4_XS | 4.60GB | Decent quality, smaller than Q4K_S with similar performance, _recommended. |
| aya-23-8B-Q3_K_L.gguf | Q3_K_L | 4.52GB | Lower quality but usable, good for low RAM availability. |
Cliquer sur le lien du modèle et puis cliquer sur download :

Une fois le téléchargement fini, copier le fichier dans le dossier source de GPT4ALL :
C:/Users/<username>/AppData/Local/nomic.ai/GPT4All/
Il suffit alors de redémarrer l'application pour pouvoir utiliser ce nouveau modèle !
On peut le voir dans les modèles (ici ma version est différente de celle au dessus) :


On peut voir que le modèle quantifié sur 6 bits ici qui pèse 6.14 Go, occupe lors de l'execution d'inférence en réalité 9,3 Go. C'est la raison pour laquelle on utilise souvent des modèles plus légers pour qu'ils aient une taille inférieure à 8 Go, qui est la capacité mémoire GPU usuelle pour un consommateur lambda.
On peut alors tester la capacité multilinguistique du modèle :


Vous êtes arrivés à la fin de ce guide ! Bravo, vous pouvez à présent exploiter pleinement les capacités de votre LLM Open-Source en local pour discuter avec vos documents !
Les fonctionnalités de GPT4All ne sont pas limités à ça, pour plus d'information, se référer à leur documentation officielle.