Système Local Intelligent de Questions-Réponses

Dans le domaine de l'IA d'aujourd'hui, les grands modèles de langage généraux (tels que GPT-3, GPT-4, etc.) sont largement utilisés pour construire des chatbots. Ces modèles possèdent de puissantes capacités de traitement du langage naturel et peuvent gérer une variété de questions, générant des réponses ressemblant au langage humain. Cependant, malgré leurs excellentes performances dans des scénarios généraux, ces modèles manquent souvent de précision dans les scénarios de questions-réponses liés à des domaines spécifiques. Cela est dû au fait que les grands modèles de langage généraux manquent d'une compréhension approfondie du savoir spécifique à un domaine ; leurs données d'entraînement sont vastes mais pas ciblées, ce qui conduit à des réponses inexactes, verbeuses ou non pertinentes lors du traitement de scénarios spécifiques.

Pour résoudre ce problème, l'industrie a proposé une série de solutions adaptées à des scénarios spécifiques afin d'améliorer le professionnalisme et la précision des chatbots. Cet article présentera ces solutions en détail et les démontrera avec un exemple simple.

Pourquoi Déployer un LLM Localement ?

Le déploiement local des grands modèles de langage (déploiement localisé) est un choix basé sur différents besoins métier et scénarios techniques. Voici quelques-unes des principales raisons :

Confidentialité et Sécurité des Données

Dans les scénarios avec des exigences strictes en matière de confidentialité et de sécurité des données, tels que la santé, la finance et le gouvernement, le déploiement localisé est le choix inévitable. Les données sensibles dans ces domaines peuvent ne pas convenir à un téléchargement vers le cloud pour traitement en raison d'exigences légales et de conformité strictes. Le déploiement local des grands modèles de langage garantit que les données ne quittent pas l'environnement réseau local, évitant ainsi les fuites de données ou les risques externes.

Réduction de la Dépendance au Réseau

Le déploiement dans le cloud dépend généralement de la connectivité Internet. Dans les situations avec des conditions de réseau instables ou une bande passante limitée, les performances d'accès aux services cloud peuvent en pâtir. Le déploiement localisé évite la dépendance à des réseaux externes, garantissant que le système fonctionne efficacement à tout moment, en particulier dans les scénarios nécessitant des réponses en temps réel.

Personnalisation et Contrôle

Le déploiement local des grands modèles de langage permet aux développeurs de personnaliser et d'optimiser les modèles pour mieux répondre aux besoins métier spécifiques. Avec les services cloud, les utilisateurs ne peuvent accéder qu'à des APIs génériques, alors que le déploiement local permet aux développeurs de fine-tuner, d'étendre et d'avoir une plus grande flexibilité dans l'ajustement du comportement du modèle.

Optimisation des Coûts

Bien que le cloud offre des services pratiques d'évolutivité et de maintenance, l'utilisation à long terme de grands modèles dans le cloud peut entraîner des coûts importants, en particulier pour les entreprises nécessitant des invocations continues du modèle. Le déploiement local des modèles peut permettre d'économiser sur les dépenses des services cloud, en particulier pour les entreprises ayant une utilisation à grande échelle.

Solutions aux Limitations des Modèles Généraux

Face au problème de la performance insuffisante des modèles généraux dans des scénarios spécifiques, les solutions suivantes ont été largement appliquées et reconnues :

Modèles Améliorés par la Connaissance (Retrieval-Augmented Generation, RAG)

RAG est un cadre technique qui combine la récupération avec la génération, abordant les lacunes de connaissance des grands modèles de langage en introduisant des bases de connaissances externes. Dans l'architecture RAG, la requête de l'utilisateur est d'abord envoyée à un module de récupération, qui extrait des documents ou des informations pertinents d'une base de connaissances préconstruite. Ces informations sont ensuite combinées avec le modèle de génération pour produire des réponses plus précises. Cette méthode tire parti des capacités linguistiques du modèle de génération tout en garantissant le professionnalisme et la précision des réponses. Cette approche est particulièrement adaptée aux scénarios de Q&R spécifiques à un domaine, tels que la santé, le droit ou les Q&R de connaissances internes d'entreprise.

RAG

Source de l'image : https://transformers.run/c1/transformer/

Fine-Tuning de Modèles

Le fine-tuning est une autre méthode courante utilisée pour optimiser les modèles généraux pour des scénarios spécifiques. En fine-tunant les modèles de langage préentraînés, les modèles peuvent devenir plus adaptés aux données et aux tâches spécifiques à un domaine. Par exemple, on peut réentraîner de grands modèles de langage en utilisant des documents internes de l'entreprise, des manuels techniques ou des données de Q&R spécifiques à l'industrie. Cette approche peut améliorer significativement les performances du modèle dans des domaines spécifiques.

L'inconvénient du fine-tuning est qu'il nécessite une quantité substantielle de données spécifiques au domaine, et le processus d'entraînement peut exiger des ressources computationnelles considérables. Cependant, une fois le fine-tuning terminé, le modèle devient plus professionnel et précis dans la gestion des problèmes spécifiques au domaine.

De plus, il existe de nombreuses autres solutions telles que les Graphes de Connaissances, les Systèmes Basés sur des Règles, les Systèmes Hybrides, et plus encore. La méthode appropriée peut être choisie en fonction de la situation réelle.

Construire un Système de Q&R Spécifique à un Domaine en Utilisant RAG

Nous allons démontrer comment construire un chatbot piloté par une base de connaissances en utilisant RAG à travers un exemple simple. À des fins de démonstration, nous utiliserons Ollama comme moteur d'inférence pour charger le grand modèle de langage, Anything LLM pour construire la base de connaissances RAG, et déploierons tous les services sur un appareil Jetson local.

  • Ollama : Moteur d'inférence pour les grands modèles de langage
  • Anything LLM : Outil de construction d'applications IA
  • Jetson : Appareil d'edge computing à hautes performances

RAG

Étape 1. Installer et Exécuter Ollama

Ici, nous utilisons jetson-examples pour déployer rapidement le grand modèle de langage sur l'appareil Jetson.

bash
sudo apt install python3-pip
pip3 install jetson-examples
reComputer run ollama
ollama run llama3

Veuillez garder ce terminal actif.

Étape 2. Installer et Exécuter AnythingLLM

Nous pouvons déployer AnythingLLM directement en utilisant Docker :

bash
docker pull mintplexlabs/anythingllm

export STORAGE_LOCATION=$HOME/anythingllm 
mkdir -p $STORAGE_LOCATION 
touch "$STORAGE_LOCATION/.env" 
docker run -d -p 3001:3001 --cap-add SYS_ADMIN \
    -v ${STORAGE_LOCATION}:/app/server/storage \
    -v ${STORAGE_LOCATION}/.env:/app/server/.env \
    -e STORAGE_DIR="/app/server/storage" \
    mintplexlabs/anythingllm

Étape 3. Configurer la Base de Connaissances Locale

Une fois qu'AnythingLLM est démarré avec succès, nous pouvons utiliser un navigateur pour ouvrir http://<ip-jetson>:3001 afin d'accéder à son interface WebUI et télécharger le fichier de base de connaissances dans la WebUI.

Ici, j'ai utilisé ChatGPT pour générer quelques histoires courtes et j'ai téléchargé ces histoires sur AnythingLLM.

upload

Étape 4. Test d'Efficacité

test

Plus de Contenu