LESEN SIE DIES AUF ENGLISCH
LangChain-Chatchat (ehemals Langchain-ChatGLM)
Basierend auf großen Sprachmodellen wie ChatGLM und Anwendungsframeworks wie Langchain handelt es sich um ein Open-Source-RAG- und Agent-Anwendungsprojekt, das offline bereitgestellt werden kann.
Überblick
Funktionseinführung
0.3.x-Funktionsübersicht
Unterstützte Modellinferenz-Frameworks und -Modelle
Legen Sie schnell los
Pip-Installation und -Bereitstellung
Installation des Quellcodes und Bereitstellung/Entwicklungsbereitstellung
Docker-Bereitstellung
Projektmeilensteine
Kontaktieren Sie uns
?️ Eine Frage-und-Antwort-Anwendung, die auf einer lokalen Wissensdatenbank basiert und mithilfe von Langchain-Ideen implementiert wird. Ziel ist der Aufbau einer Wissensdatenbank-Frage-und-Antwort-Lösung, die für chinesische Szenarien und Open-Source-Modelle geeignet ist und offline ausgeführt werden kann.
?Inspiriert durch GanymedeNils Projekt document.ai und den von Alex Zhangji erstellten ChatGLM-6B Pull Request wurde eine lokale Wissensdatenbank-Q&A-Anwendung erstellt, die mithilfe von Open-Source-Modellen während des gesamten Prozesses implementiert werden kann. In der neuesten Version dieses Projekts können Frameworks wie Xinference und Ollama verwendet werden, um auf Modelle wie GLM-4-Chat, Qwen2-Instruct, Llama3 usw. zuzugreifen. Dabei wird auf das Langchain-Framework zurückgegriffen, um Aufrufdienste über bereitgestellte APIs zu unterstützen über FastAPI oder über die auf Streamlit basierende WebUI.
✅ Dieses Projekt unterstützt das gängige Open-Source-LLM, Einbettungsmodelle und Vektordatenbanken auf dem Markt und kann eine private Offline-Bereitstellung aller Open -Source -Modelle realisieren. Gleichzeitig unterstützt dieses Projekt auch den Aufruf der OpenAI GPT API und wird den Zugriff auf verschiedene Modelle und Modell-APIs in Zukunft weiter ausbauen.
⛓️ Das Implementierungsprinzip dieses Projekts ist in der folgenden Abbildung dargestellt. Der Prozess umfasst das Laden von Dateien -> Lesen von Text -> Textsegmentierung -> Textvektorisierung -> Fragenvektorisierung -> Anpassen top k
im Textvektor, der dem am ähnlichsten ist Fragevektor top k
-> Der übereinstimmende Text wird prompt
als Kontext und Frage hinzugefügt -> An LLM
übermittelt, um eine Antwort zu generieren.
? Prinzip-Einführungsvideo
Aus Sicht der Dokumentenverarbeitung sieht der Implementierungsprozess wie folgt aus:
? Dieses Projekt beinhaltet keine Feinabstimmung oder Schulungsprozesse, aber Feinabstimmung oder Schulung können verwendet werden, um die Wirkung dieses Projekts zu optimieren.
? Der in Version 0.3.0
des AutoDL-Images verwendete Code wurde auf Version v0.3.0
dieses Projekts aktualisiert.
? Das Docker-Image wird in naher Zukunft aktualisiert.
?? Wenn Sie zu diesem Projekt beitragen möchten, besuchen Sie bitte den Entwicklungsleitfaden, um weitere Informationen zur Entwicklung und Bereitstellung zu erhalten.
Funktion | 0,2.x | 0,3.x |
---|---|---|
Modellzugriff | Lokal: Fastchat Online: XXXModelWorker | Lokal: model_provider, unterstützt die meisten Mainstream-Frameworks zum Laden von Modellen. Online: oneapi Alle Modellzugriffe sind mit OpenAI SDK kompatibel |
Agent | ❌Instabil | ✅Optimiert für ChatGLM3 und Qwen, die Agentenfunktionen werden deutlich verbessert |
LLM-Gespräch | ✅ | ✅ |
Wissensdatenbank-Gespräch | ✅ | ✅ |
Suchmaschinengespräch | ✅ | ✅ |
Dateikonversation | ✅Nur Vektorabruf | ✅In der Datei-RAG-Funktion vereint, unterstützt mehrere Suchmethoden wie BM25+KNN |
Datenbankdialog | ❌ | ✅ |
Multimodaler Bilddialog | ❌ | ✅ Es wird empfohlen, qwen-vl-chat zu verwenden |
ARXIV Literaturdialog | ❌ | ✅ |
Wolfram-Gespräch | ❌ | ✅ |
Vinzentinisches Bild | ❌ | ✅ |
Verwaltung lokaler Wissensdatenbanken | ✅ | ✅ |
WEBUI | ✅ | ✅Bessere Unterstützung für mehrere Sitzungen, angepasste Systemaufforderungswörter ... |
Die Kernfunktionen der Version 0.3.x werden vom Agent implementiert, Benutzer können jedoch auch manuell Toolaufrufe implementieren:
Betriebsmodus | Implementierte Funktionen | Anwendbare Szenarien |
---|---|---|
Aktivieren Sie „Agent aktivieren“ und wählen Sie mehrere Tools aus | Automatischer Werkzeugaufruf durch LLM | Verwenden Sie Modelle mit Agent-Funktionen wie ChatGLM3/Qwen oder Online-API |
Aktivieren Sie „Agent aktivieren“ und wählen Sie ein einzelnes Tool aus | LLM analysiert nur Werkzeugparameter | Der verwendete Modellagent verfügt über durchschnittliche Fähigkeiten und kann Werkzeuge nicht sehr gut auswählen. Ich möchte Funktionen manuell auswählen. |
Deaktivieren Sie „Agent aktivieren“ und wählen Sie ein einzelnes Tool aus | Geben Sie die Parameter zum Aufrufen des Tools manuell ein, ohne die Agent-Funktion zu verwenden. | Das verwendete Modell verfügt nicht über Agentenfunktionen |
Deaktivieren Sie alle Tools und laden Sie ein Bild hoch | Bildgespräch | Verwenden Sie multimodale Modelle wie qwen-vl-chat |
Weitere Funktionen und Updates finden Sie in der tatsächlichen Bereitstellung.
Dieses Projekt unterstützt bereits aktuelle Open-Source-Modelle für große Sprachen und Einbettungsmodelle, die auf dem Markt weit verbreitet sind, wie GLM-4-Chat und Qwen2-Instruct. Bei diesen Modellen müssen Benutzer das Modellbereitstellungsframework selbst starten und auf das Projekt zugreifen, indem sie es ändern Konfigurationsinformationen Dieses Projekt Die unterstützten lokalen Modellbereitstellungsframeworks sind wie folgt:
Modellbereitstellungsframework | Xinferenz | LocalAI | Ollama | FastChat |
---|---|---|---|---|
Ausrichtung der OpenAI-API-Schnittstelle | ✅ | ✅ | ✅ | ✅ |
Beschleunigen Sie Inferenz-Engines | GPTQ, GGML, vLLM, TensorRT, mlx | GPTQ, GGML, vLLM, TensorRT | GGUF, GGML | vLLM |
Zugriffsmodelltyp | LLM, Einbettung, Reranking, Text-to-Image, Vision, Audio | LLM, Einbettung, Reranking, Text-to-Image, Vision, Audio | LLM, Text-to-Image, Vision | LLM, Vision |
Funktionsaufruf | ✅ | ✅ | ✅ | / |
Mehr Plattformunterstützung (CPU, Metal) | ✅ | ✅ | ✅ | ✅ |
Heterogen | ✅ | ✅ | / | / |
Cluster | ✅ | ✅ | / | / |
Link zum Betriebsdokument | Dokumentation | LocalAI-Dokumentation | Ollama-Dokumentation | FastChat-Dokumentation |
Verfügbare Modelle | Xinference unterstützt bereits Modelle | LocalAI unterstützt bereits Modelle | Ollama unterstützt bereits Modelle | FastChat unterstützt bereits Modelle |
Zusätzlich zum oben genannten lokalen Modelllade-Framework bietet das Projekt auch Unterstützung für den One-API-Framework-Zugriff auf Online-APIs, einschließlich OpenAI ChatGPT, Azure OpenAI API, Anthropic Claude, Zhipu Qingyan, Baichuan und anderen häufig verwendeten Online-APIs verwenden.
Notiz
Informationen zum Laden lokaler Modelle durch Xinference: Wenn Sie möchten, dass das lokal heruntergeladene Modell geladen wird, können Sie nach dem Starten des Xinference-Dienstes streamlit run xinference_manager.py
ausführen Seitenaufforderungen: Geben Sie einfach das Modell an, um den lokalen Pfad festzulegen.
Was die Software betrifft, so unterstützt dieses Projekt die Verwendung in der Python 3.8-3.11-Umgebung und wurde in den Betriebssystemen Windows, macOS und Linux getestet.
?In Bezug auf die Hardware kann Version 0.3.0, da sie den Zugriff auf verschiedene Modellbereitstellungsframeworks unterstützt, unter verschiedenen Hardwarebedingungen wie CPU, GPU, NPU, MPS usw. verwendet werden.
Ab Version 0.3.0 bietet Langchain-Chachat eine Installationsmethode in Form einer Python-Bibliothek. Für eine spezifische Installation führen Sie bitte Folgendes aus:
pip install langchain-chatchat -U
Wichtig
Um sicherzustellen, dass die verwendete Python-Bibliothek die neueste Version ist, wird empfohlen, die offizielle Pypi-Quelle oder Tsinghua-Quelle zu verwenden.
Notiz
Da das Modellbereitstellungsframework Xinference beim Herstellen einer Verbindung mit Langchain-Chachat eine zusätzliche Installation der entsprechenden Python-Abhängigkeitsbibliothek erfordert, wird empfohlen, bei Verwendung mit dem Xinference-Framework die folgende Installationsmethode zu verwenden:
pip install „langchain-chatchat[xinference]“ -U
Ab Version 0.3.0 lädt Langchain-Chatchat Modelle nicht mehr direkt basierend auf der lokalen Modellpfadeingabe des Benutzers. Zu den beteiligten Modelltypen gehören LLM-, Embedding-, Reranker- und multimodale Modelle, die in Zukunft unterstützt werden. usw. wurden geändert, um den Zugriff auf die wichtigsten Modellinferenz-Frameworks zu unterstützen, die üblicherweise auf dem Markt verfügbar sind, wie z. B. Xinference, Ollama, LocalAI, FastChat, One API usw.
Stellen Sie daher bitte sicher, dass Sie vor dem Start des Langchain-Chachat-Projekts zunächst das Modellinferenz-Framework ausführen und das erforderliche Modell laden.
Hier nehmen wir Xinference als Beispiel. Informationen zur Framework-Bereitstellung und zum Laden von Modellen finden Sie in der Xinference-Dokumentation.
Warnung
Um Abhängigkeitskonflikte zu vermeiden, platzieren Sie bitte Langchain-Chachat und Modellbereitstellungsframeworks wie Xinference in verschiedenen virtuellen Python-Umgebungen wie Conda, Venv, Virtualenv usw.
Ab Version 0.3.1 verwendet Langchain-Chachat lokale yaml
Dateien zur Konfiguration. Benutzer können den Inhalt direkt anzeigen und ändern, und der Server wird automatisch aktualisiert, ohne dass ein Neustart erforderlich ist.
Legen Sie das Stammverzeichnis fest, in dem Chatchat Konfigurationsdateien und Datendateien speichert (optional).
# unter Linux oder Macosexport CHATCHAT_ROOT=/path/to/chatchat_data # unter Windowsset CHATCHAT_ROOT=/path/to/chatchat_data
Wenn diese Umgebungsvariable nicht gesetzt ist, wird automatisch das aktuelle Verzeichnis verwendet.
Führen Sie die Initialisierung durch
Chatchat-Init
Dieser Befehl führt Folgendes aus:
Erstellen Sie alle erforderlichen Datenverzeichnisse
Kopieren Sie den Inhalt der Wissensdatenbank mit Beispielen
Generieren Sie eine Standard yaml
Konfigurationsdatei
Konfigurationsdatei ändern
Konfigurieren Sie das Modell (model_settings.yaml)
Sie müssen die Modellzugriffskonfiguration entsprechend dem in Schritt 2 ausgewählten Modellinferenz-Framework durchführen und das Modell und das geladene Modell laden . Weitere Informationen finden Sie in den Kommentaren in model_settings.yaml
. Ändern Sie hauptsächlich die folgenden Inhalte:
# Der Standard-LLM-Name DEFAULT_LLM_MODEL: qwen1.5-chat # Der Standard-Einbettungsname DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5 # Ändern Sie die Schlüssel von „llm_model, action_model“ in „LLM_MODEL_CONFIG“, sodass das entsprechende LLM-Modell vorhanden ist Ändern Sie die entsprechenden Modellplattforminformationen in „MODEL_PLATFORMS“.
Wissensdatenbankpfad konfigurieren (basic_settings.yaml) (optional)
Die Standard-Wissensdatenbank befindet sich unter CHATCHAT_ROOT/data/knowledge_base
. Wenn Sie die Wissensdatenbank an einem anderen Ort platzieren oder eine Verbindung zu einer vorhandenen Wissensdatenbank herstellen möchten, können Sie das entsprechende Verzeichnis hier ändern.
# Standardspeicherpfad der Wissensdatenbank KB_ROOT_PATH: D:chatchat-testdataknowledge_base # Standardspeicherpfad der Datenbank. Wenn Sie SQLite verwenden, können Sie DB_ROOT_PATH direkt ändern. Wenn Sie andere Datenbanken verwenden, ändern Sie bitte SQLALCHEMY_DATABASE_URI direkt. DB_ROOT_PATH: D:chatchat-testdataknowledge_baseinfo.db # Wissensdatenbank-Informationsdatenbank-Verbindungs-URI SQLALCHEMY_DATABASE_URI: sqlite:///D:chatchat-testdataknowledge_baseinfo.db
Wissensdatenbank konfigurieren (kb_settings.yaml) (optional)
Standardmäßig wird die FAISS
Wissensdatenbank verwendet. Wenn Sie eine Verbindung zu anderen Arten von Wissensdatenbanken herstellen möchten, können Sie DEFAULT_VS_TYPE
und kbs_config
ändern.
Warnung
Stellen Sie vor der Initialisierung der Wissensdatenbank sicher, dass das Modellinferenz-Framework und das entsprechende embedding
gestartet wurden und die Modellzugriffskonfiguration gemäß Schritt 3 oben abgeschlossen wurde.
chatchat kb -r
Weitere Funktionen finden Sie unter chatchat kb --help
Das folgende Protokoll zeigt den Erfolg an:
----------------------------------------------------------------------------------------------------
知识库名称 :samples
知识库类型 :faiss
向量模型: :bge-large-zh-v1.5
知识库路径 :/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples
文件总数量 :47
入库文件数 :42
知识条目数 :740
用时 :0:02:29.701002
----------------------------------------------------------------------------------------------------
总计用时 :0:02:33.414425
Notiz
Häufig gestellte Fragen zur Initialisierung der Wissensdatenbank
Dieses Problem tritt häufig in neu erstellten virtuellen Umgebungen auf und kann bestätigt werden durch:
from unstructured.partition.auto import partition
Wenn die Anweisung hängen bleibt und nicht ausgeführt werden kann, können Sie den folgenden Befehl ausführen:
pip uninstall python-magic-bin# Überprüfen Sie die Version des deinstallierten Pakets pip install 'python-magic-bin=={version}'
Befolgen Sie dann die Anweisungen in diesem Abschnitt, um die Wissensdatenbank neu zu erstellen.
chatchat start -a
Wenn die folgende Schnittstelle erscheint, ist der Start erfolgreich:
Warnung
Da die von chatchat konfigurierte Standard-Abhöradresse DEFAULT_BIND_HOST
127.0.0.1 ist, kann nicht über andere IPs darauf zugegriffen werden.
Wenn Sie über die Maschinen-IP zugreifen müssen (z. B. ein Linux-System), müssen Sie die Abhöradresse in basic_settings.yaml
auf 0.0.0.0 ändern.
Informationen zur Konfiguration der Datenbankkonversation finden Sie hier. Anweisungen zur Konfiguration der Datenbankkonversation finden Sie hier.
Informationen zur Installation und Bereitstellung des Quellcodes finden Sie im Entwicklungshandbuch.
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 # Inländischer Spiegel
Wichtig
Dringend empfohlen: Verwenden Sie die Docker-Compose-Bereitstellung. Weitere Informationen finden Sie in README_docker
Die Struktur von 0.3.x hat sich stark verändert, und es wird dringend empfohlen, dass Sie eine erneute Bereitstellung gemäß der Dokumentation durchführen. Die folgende Anleitung garantiert keine 100-prozentige Kompatibilität und Erfolg. Denken Sie daran, wichtige Daten im Voraus zu sichern.
Befolgen Sie zunächst die Schritte bei安装部署
um die Betriebsumgebung zu konfigurieren und die Konfigurationsdatei zu ändern.
Kopieren Sie das Knowledge_base-Verzeichnis des 0.2.x-Projekts in das konfigurierte DATA
Verzeichnis
2023年4月
: Langchain-ChatGLM 0.1.0
wurde veröffentlicht und unterstützt lokale Wissensdatenbank-Fragen und -Antworten basierend auf dem ChatGLM-6B-Modell.
2023年8月
: Langchain-ChatGLM
wurde in Langchain-Chatchat
umbenannt, Version 0.2.0
wurde veröffentlicht, die fastchat
als Lösung zum Laden von Modellen verwendet und mehr Modelle und Datenbanken unterstützt.
2023年10月
: Langchain-Chatchat 0.2.5
wurde veröffentlicht, wodurch Agent-Inhalte eingeführt wurden, und das Open-Source-Projekt gewann den dritten Preis beim Hackathon von Founder Park & Zhipu AI & Zilliz
.
2023年12月
: Langchain-Chatchat
erhielt mehr als 20.000 Sterne.
2024年6月
: Langchain-Chatchat 0.3.0
wird veröffentlicht und bringt eine neue Projektstruktur mit sich.
? Freuen wir uns auf die zukünftige Chatchat-Geschichte ...
Der Code dieses Projekts folgt dem Apache-2.0-Protokoll.
? Langchain-Chachat-Projekt WeChat-Kommunikationsgruppe Wenn Sie auch an diesem Projekt interessiert sind, können Sie gerne dem Gruppenchat beitreten, um an Diskussionen und Austausch teilzunehmen.
?Offizieller öffentlicher Account des Langchain-Chachat-Projekts, herzlich willkommen, den QR-Code zu scannen, um ihm zu folgen.
Wenn dieses Projekt für Ihre Forschung hilfreich ist, zitieren Sie uns bitte:
@software{langchain_chatchat, title = {{langchain-chatchat}}, author = {Liu, Qian and Song, Jinke, and Huang, Zhiguo, and Zhang, Yuxuan, and glide-the, and liunux4odoo}, year = 2024, journal = {GitHub repository}, publisher = {GitHub}, howpublished = {url{https://github.com/chatchat-space/Langchain-Chatchat}} }