Obtenez des réponses à vos questions sans Internet et dans le respect de votre vie privée.
Les chatbots IA comme ChatGPT sont critiquables pour tout un tas de raison, mais ce qui revient le plus, c’est le respect de la vie privée de l’utilisateur. Puis comme ce sont des services en ligne, il faut forcément une connexion internet.
Alors que diriez vous si aujourd’hui je vous présentais un outil qui est capable de répondre à toutes vos questions en interrogeant simplement un document, tout ça en local, sans avoir besoin de connexion internet et en protégeant votre vite privée ?
Et bien cela existe et s’appelle privateGPT. C’est super pratique surtout pour les gens qui ont la flemme comme moi de lire des gros pavés en PDF.
Ce bijou utilise la puissance des LLMs sur des documents locaux, ce qui vous assure qu’aucun donnée ne quitte l’environnement d’exécution. Il est conçu avec plusieurs composants, tels que LangChain, GPT4All, LlamaCpp, Chroma, et SentenceTransformers et une fois le document uploadé, vous pouvez lui poser des questions ou lui demander de vous faire des résumés. Voici les formats supportés :
.csv: CSV, .docx: Word Document, .doc: Word Document, .enex: EverNote, .eml: Email, .epub: EPub, .html: HTML File, .md: Markdown, .msg: Outlook Message, .odt: Open Document Text, .pdf: Portable Document Format (PDF), .pptx : PowerPoint Document, .ppt : PowerPoint Document, .txt: Text file (UTF-8),
Parfait donc pour les gens qui font des recherches ou du travail de synthèse à partir du contenu de leurs pairs.
Pour l’installer, il faudra cloner le dépôt et installer les dépendances comme ceci :
git clone https://github.com/imartinez/privateGPT.git cd privateGPT pip3 install -r requirements.txt
Ensuite, téléchargez le modèle LLM de votre choix et placez-le dans un répertoire. Par défaut, c’est ggml-gpt4all-j-v1.3-groovy.bin qui est proposé, mais si vous préférez un modèle compatible GPT4All-J différent, il suffit de le télécharger et de le référencer dans votre fichier .env.
Evidemment, renommez example.env en .env et modifiez les variables :
MODEL_TYPE : prend en charge LlamaCpp ou GPT4All PERSIST_DIRECTORY : c'est le dossier où vous souhaitez que votre vectorstore soit MODEL_PATH : Chemin vers votre GPT4All ou LlamaCpp supporté LLM MODEL_N_CTX : Limite maximale de tokens pour le modèle LLM EMBEDDINGS_MODEL_NAME : Nom du modèle d'incrustations [SentenceTransformers](https://www.sbert.net/docs/pretrained_models.html) TARGET_SOURCE_CHUNKS : Le nombre de morceaux (sources) qui seront utilisés pour répondre à une question
Notez que la première fois que vous exécuterez le script, une connexion internet sera nécessaire pour télécharger le modèle d’incrustations.
Une fois que le ou les documents sont en place et que le fichier de config est OK, vous pouvez commencer la “digestion” de la donnée avec le script suivant :
python ingest.py
Le fichier ingest.py utilise des outils LangChain et HuggingFaceEmbeddings (SentenceTransformers) pour analyser le document, créer des embeddings et stocker les résultats localement avec Chromavector store.
Dès que ce sera terminé, lancez l’interface du chatbot comme ceci et posez-lui toutes vos questions.
python privateGPT.py
Le fichier privateGPT.py utilise un LLM local basé sur GPT4All-Jor et LlamaCpp pour comprendre les questions, extraire des réponses dans leur contexte et vous les fournir en s’appuyant sur les embeddings stockés localement.
C’est chouette non ? Alors oui, je sais, c’est un peu technique alors si vous voulez faire tout pareil, mais l’installation en moins, il existe également un service nommé ChatPDF qui vous permettra en uploadant un document de l’interroger comme si c’était votre meilleur pote, mais en perdant le bénéfice de la vie privée évidemment.
À découvrir ici : privateGPT sur GitHub