Ein Open-Source-RAG- und Agent-Anwendungsprojekt, das auf großen Sprachmodellen wie ChatGLM, Qwen, Llama und dem Langchain-Framework basiert und offline bereitgestellt werden kann.
Detaillierte Beschreibung des Langchain-Chatchat-Projekts
Projektübersicht
Langchain-Chatchat (ursprünglich Langchain-ChatGLM) ist ein Open-Source-RAG- (Retrieval Augmented Generation) und Agent-Anwendungsprojekt, das auf großen Sprachmodellen und Anwendungsframeworks wie Langchain basiert und offline bereitgestellt werden kann. Das Projekt zielt darauf ab, eine Wissensdatenbank-Fragen-und-Antwort-Lösung zu erstellen, die chinesische Szenarien und Open-Source-Modelle freundlich unterstützt und offline ausgeführt werden kann.
- GitHub-Adresse: https://github.com/chatchat-space/Langchain-Chatchat
Kernfunktionen
1. Unterstützung mehrerer Modelle
Das Projekt unterstützt die gängigsten Open-Source-Sprachmodelle auf dem Markt:
- GLM-Serie: GLM-4-Chat, ChatGLM usw.
- Qwen-Serie: Qwen2-Instruct, Qwen-VL-Chat usw.
- Llama-Serie: Llama3 usw.
- Online-API: Unterstützung für OpenAI GPT API-Aufrufe
2. Verschiedene Bereitstellungsframeworks
Unterstützt verschiedene Modellbereitstellungsframeworks und bietet flexible Zugriffsmethoden:
Framework | Xinference | LocalAI | Ollama | FastChat |
---|---|---|---|---|
OpenAI API-Schnittstellenangleichung | ✅ | ✅ | ✅ | ✅ |
Beschleunigte Inferenz-Engine | GPTQ, GGML, vLLM, TensorRT, mlx | GPTQ, GGML, vLLM, TensorRT | GGUF, GGML | vLLM |
Zugriff auf Modelltypen | LLM, Embedding, Rerank, Text-to-Image, Vision, Audio | LLM, Embedding, Rerank, Text-to-Image, Vision, Audio | LLM, Text-to-Image, Vision | LLM, Vision |
3. Umfangreiche Dialogfunktionen
Version 0.3.x bietet verschiedene Dialogmodi:
Funktion | 0.2.x | 0.3.x |
---|---|---|
LLM-Dialog | ✅ | ✅ |
Wissensdatenbank-Dialog | ✅ | ✅ |
Suchmaschinen-Dialog | ✅ | ✅ |
Datei-Dialog | ✅ Nur Vektorabruf | ✅ Vereinheitlicht als File-RAG-Funktion, unterstützt BM25+KNN und andere Abrufmethoden |
Datenbank-Dialog | ❌ | ✅ |
Multimodaler Bilddialog | ❌ | ✅ Empfohlen wird die Verwendung von qwen-vl-chat |
ARXIV-Literaturdialog | ❌ | ✅ |
Wolfram-Dialog | ❌ | ✅ |
Text-zu-Bild | ❌ | ✅ |
Agent | ❌ Instabil | ✅ Optimiert für ChatGLM3 und Qwen |
Technische Architektur
RAG-Implementierungsprinzip
Die Kerntechnologie des Projekts basiert auf der RAG-Architektur (Retrieval Augmented Generation):
Dokumentenladen → Textlesen → Textsegmentierung → Textvektorisierung → Fragenvektorisierung →
Ähnlichkeitsabgleich (Top-K) → Kontextaufbau → LLM-Generierung der Antwort
Agent-Funktion
Die Kernfunktionen der Version 0.3.x werden vom Agent implementiert und bieten drei Betriebsmodi:
Betriebsart | Implementierte Funktion | Anwendbare Szenarien |
---|---|---|
Agent + Mehrere Tools aktivieren | LLM automatische Tool-Aufrufe | ChatGLM3/Qwen und andere Modelle mit Agent-Funktionen |
Agent + Einzelnes Tool aktivieren | LLM analysiert nur Tool-Parameter | Modelle mit durchschnittlichen Agent-Fähigkeiten, manuelle Funktionsauswahl |
Agent nicht aktivieren + Einzelnes Tool | Manuelle Parametereingabe | Modelle ohne Agent-Fähigkeiten |
Installation und Bereitstellung
1. Python-Bibliotheksinstallation
pip install langchain-chatchat -U
pip install "langchain-chatchat[xinference]" -U
2. Systemanforderungen
- Python-Version: 3.8-3.11
- Betriebssystem: Windows, macOS, Linux
- Hardware-Unterstützung: CPU, GPU, NPU, MPS
3. Konfigurationsschritte
Festlegen des Stammverzeichnisses (optional)
# Linux/macOS
export CHATCHAT_ROOT=/path/to/chatchat_data
# Windows
set CHATCHAT_ROOT=/path/to/chatchat_data
Projekt initialisieren
chatchat init
Konfigurationsdateien ändern
Die wichtigsten Konfigurationsdateien sind:
model_settings.yaml
: Modellkonfigurationbasic_settings.yaml
: Basispfadkonfigurationkb_settings.yaml
: Wissensdatenbankkonfiguration
Wissensdatenbank initialisieren
chatchat kb -r
Dienst starten
chatchat start -a
4. Docker-Bereitstellung
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
Anwendungsfälle
1. Unternehmenswissensdatenbank-Fragen-und-Antworten
- Dokumentenverwaltung und -abruf
- Interner Wissensaustausch
- Kundendienstautomatisierung
2. Akademische Forschung
- Literaturrecherche und -analyse
- Akademische Paper-Dialoge
- Organisation von Forschungsmaterialien
3. Persönliche Wissensverwaltung
- Organisation persönlicher Dokumente
- Abruf von Lernnotizen
- Verwaltung der Materialarchivierung
Vorteile und Besonderheiten
- Vollständig Open Source: Befolgt das Apache-2.0-Protokoll, der Code ist vollständig offen
- Offline-Bereitstellung: Unterstützt den vollständigen Offline-Betrieb, um die Datensicherheit zu gewährleisten
- Chinesisch-freundlich: Optimiert für chinesische Szenarien, unterstützt chinesische Modelle
- Framework-Flexibilität: Unterstützt verschiedene Modellbereitstellungsframeworks
- Funktionsreich: Bietet RAG, Agent, Multimodalität und andere Funktionen
- Einfache Bereitstellung: Bietet Pip-Installation und Docker-Bereitstellungsmethoden
Technologiestack
- Kernframework: Langchain
- Webframework: FastAPI, Streamlit
- Vektordatenbank: FAISS usw.
- Modellinferenz: Xinference, Ollama, LocalAI, FastChat
- API-Zugriff: One API unterstützt verschiedene Online-APIs
Dieses Projekt bietet eine vollständige Lösung für Benutzer, die ein lokales Wissensdatenbank-Fragen-und-Antwort-System erstellen müssen, und ist besonders geeignet für Unternehmen und private Benutzer mit strengen Anforderungen an den Datenschutz.