Projet open source d'application RAG et Agent, basé sur de grands modèles de langage tels que ChatGLM, Qwen, Llama et le framework Langchain, déployable hors ligne.
Présentation détaillée du projet Langchain-Chatchat
Aperçu du projet
Langchain-Chatchat (anciennement Langchain-ChatGLM) est un projet open source, déployable hors ligne, d'application RAG (Retrieval-Augmented Generation) et Agent, basé sur des modèles de langage de grande taille et des frameworks d'application tels que Langchain. Ce projet vise à établir une solution de questions-réponses sur une base de connaissances, conviviale pour les scénarios chinois et les modèles open source, et pouvant fonctionner hors ligne.
- Adresse GitHub: https://github.com/chatchat-space/Langchain-Chatchat
Caractéristiques principales
1. Prise en charge de plusieurs modèles
Le projet prend en charge les principaux modèles de langage de grande taille open source du marché :
- Série GLM: GLM-4-Chat, ChatGLM, etc.
- Série Qwen: Qwen2-Instruct, Qwen-VL-Chat, etc.
- Série Llama: Llama3, etc.
- API en ligne: Prise en charge des appels à l'API OpenAI GPT
2. Divers frameworks de déploiement
Prise en charge de divers frameworks de déploiement de modèles, offrant des méthodes d'accès flexibles :
Framework | Xinference | LocalAI | Ollama | FastChat |
---|---|---|---|---|
Alignement avec l'interface API OpenAI | ✅ | ✅ | ✅ | ✅ |
Moteur d'inférence accélérée | GPTQ, GGML, vLLM, TensorRT, mlx | GPTQ, GGML, vLLM, TensorRT | GGUF, GGML | vLLM |
Types de modèles pris en charge | LLM, Embedding, Rerank, Text-to-Image, Vision, Audio | LLM, Embedding, Rerank, Text-to-Image, Vision, Audio | LLM, Text-to-Image, Vision | LLM, Vision |
3. Fonctions de conversation riches
La version 0.3.x offre plusieurs modes de conversation :
Fonction | 0.2.x | 0.3.x |
---|---|---|
Conversation LLM | ✅ | ✅ |
Conversation avec base de connaissances | ✅ | ✅ |
Conversation avec moteur de recherche | ✅ | ✅ |
Conversation avec fichiers | ✅ Recherche vectorielle uniquement | ✅ Unifiée en fonctionnalité File RAG, prend en charge diverses méthodes de recherche telles que BM25+KNN |
Conversation avec base de données | ❌ | ✅ |
Conversation multimodale avec images | ❌ | ✅ Recommandé d'utiliser qwen-vl-chat |
Conversation avec la littérature ARXIV | ❌ | ✅ |
Conversation Wolfram | ❌ | ✅ |
Génération d'images à partir de texte | ❌ | ✅ |
Agent | ❌ Instable | ✅ Optimisé pour ChatGLM3 et Qwen |
Architecture technique
Principe de mise en œuvre de RAG
La technologie de base du projet est basée sur l'architecture RAG (Retrieval-Augmented Generation) :
Chargement du document → Lecture du texte → Segmentation du texte → Vectorisation du texte → Vectorisation de la question →
Correspondance de similarité (Top-K) → Construction du contexte → Génération de la réponse par LLM
Fonctionnalité Agent
La fonctionnalité principale de la version 0.3.x est implémentée par Agent, offrant trois modes de fonctionnement :
Mode de fonctionnement | Fonctionnalité implémentée | Scénarios applicables |
---|---|---|
Activer Agent + Multi-outils | Appel automatique d'outils par LLM | Modèles dotés de capacités Agent tels que ChatGLM3/Qwen |
Activer Agent + Outil unique | LLM analyse uniquement les paramètres de l'outil | Modèles avec des capacités Agent moyennes, sélection manuelle des fonctionnalités |
Ne pas activer Agent + Outil unique | Saisie manuelle des paramètres | Modèles sans capacités Agent |
Installation et déploiement
1. Installation de la bibliothèque Python
pip install langchain-chatchat -U
pip install "langchain-chatchat[xinference]" -U
2. Exigences environnementales
- Version Python: 3.8-3.11
- Système d'exploitation: Windows, macOS, Linux
- Prise en charge matérielle: CPU, GPU, NPU, MPS
3. Étapes de configuration
Définir le répertoire racine (facultatif)
# Linux/macOS
export CHATCHAT_ROOT=/path/to/chatchat_data
# Windows
set CHATCHAT_ROOT=/path/to/chatchat_data
Initialiser le projet
chatchat init
Modification du fichier de configuration
Les principaux fichiers de configuration incluent :
model_settings.yaml
: Configuration du modèlebasic_settings.yaml
: Configuration du chemin de basekb_settings.yaml
: Configuration de la base de connaissances
Initialisation de la base de connaissances
chatchat kb -r
Démarrer le service
chatchat start -a
4. Déploiement Docker
docker pull chatimage/chatchat:0.3.1.3-93e2c87-20240829
docker pull ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:0.3.1.3-93e2c87-20240829
Scénarios d'utilisation
1. Questions-réponses sur la base de connaissances de l'entreprise
- Gestion et recherche de documents
- Partage interne des connaissances
- Automatisation du service client
2. Recherche académique
- Recherche et analyse de la littérature
- Conversation sur les articles académiques
- Organisation des documents de recherche
3. Gestion des connaissances personnelles
- Organisation des documents personnels
- Recherche de notes d'étude
- Gestion de l'archivage des documents
Avantages et caractéristiques
- Entièrement open source: Suit le protocole Apache-2.0, code entièrement ouvert
- Déploiement hors ligne: Prend en charge le fonctionnement entièrement hors ligne, protégeant la confidentialité des données
- Convivialité chinoise: Optimisé pour les scénarios chinois, prend en charge les modèles chinois
- Framework flexible: Prend en charge divers frameworks de déploiement de modèles
- Fonctionnalités riches: Fournit diverses fonctionnalités telles que RAG, Agent, multimodalité, etc.
- Facile à déployer: Fournit des méthodes d'installation pip et de déploiement Docker
Pile technologique
- Framework principal: Langchain
- Framework Web: FastAPI, Streamlit
- Base de données vectorielle: FAISS, etc.
- Inférence de modèle: Xinference, Ollama, LocalAI, FastChat
- Accès API: One API prend en charge diverses API en ligne
Ce projet fournit une solution complète pour les utilisateurs qui ont besoin de construire un système de questions-réponses sur une base de connaissances locale, particulièrement adapté aux entreprises et aux utilisateurs individuels qui ont des exigences strictes en matière de confidentialité des données.