組織累積了大量內部文件——技術手冊、政策文件、研究論文和操作指南。一直以來的挑戰是如何將這些靜態知識轉化為可對話查詢的形式。Langchain-Chatchat 提供了一個開源解決方案,將 LangChain 編排框架與 ChatGLM 對話式 AI 結合,實現基於文件的問答功能。
該專案主要由中國 AI 開發社群打造,託管於 GitHub 上的 chatchat-space 組織,在希望部署私有知識庫問答系統的企業和個人中獲得了大量關注。該專案透過提供在一般硬體上即可運行的自架替代方案,消除了對 OpenAI 的 GPT 或企業 SaaS 知識平台等商業服務的依賴。
系統架構遵循一個定義明確的 RAG 管道:文件被攝入、分塊、嵌入並儲存在向量資料庫中。當使用者提出問題時,系統會檢索最相關的文件區塊,並將其作為上下文傳遞給 LLM,由 LLM 生成基於事實的回答。與直接對專門領域使用原始 LLM 查詢相比,這種方法大幅降低了幻覺風險。
Langchain-Chatchat 中的 RAG 管道如何運作?
Langchain-Chatchat 中的檢索增強生成管道是其驅動問答能力的核心引擎。了解其各個階段是有效部署系統的關鍵。
graph TD
A[上傳文件] --> B[文件解析\nPDF / Word / Txt / MD]
B --> C[文字分塊\n滑動窗口分割]
C --> D[嵌入生成\nbge / text2vec / m3e]
D --> E[(向量資料庫\nFAISS / Milvus / Chroma)]
F[使用者提問] --> G[問題嵌入]
G --> H[相似度搜尋]
E --> H
H --> I[上下文組裝\nTop-K 區塊]
I --> J[LLM 答案生成\nChatGLM / Qwen / API]
J --> K[基於事實的回答]
管道從文件攝入開始,檔案被解析為原始文字。然後文字使用可配置的策略進行分割——滑動窗口、遞迴字元分割或語義分割。每個區塊使用 BGE、text2vec 或 M3E 等模型轉換為密集向量嵌入。這些嵌入儲存在向量資料庫中,查詢時使用者問題被嵌入並針對此索引進行搜尋,以找到最相關的內容。
支援哪些文件格式和語言?
Langchain-Chatchat 旨在支援廣泛的文件格式,以處理真實世界的企業內容。
| 文件類型 | 支援格式 | 解析引擎 |
|---|---|---|
| Office 文件 | PDF、DOCX、XLSX、PPTX | PyMuPDF、python-docx、openpyxl |
| 網頁格式 | HTML、Markdown、reStructuredText | BeautifulSoup、markdown 解析器 |
| 純文字 | TXT、CSV、JSON、YAML | 內建文字解析器 |
| 程式碼 | Python、JS、Java 等 | 語言感知分割器 |
| 圖片 | PNG、JPG、TIFF | 透過 PaddleOCR 或 Tesseract 進行 OCR |
系統內建支援多語言內容,在中文和英文文件處理上表現尤為出色。可用的嵌入模型包含針對不同語言優化檢索準確度的語言特定變體。
多模型架構如何運作?
Langchain-Chatchat 支援多個模型協同工作,每個模型在管道中扮演不同的角色。
| 模型角色 | 範例模型 | 用途 |
|---|---|---|
| LLM 後端 | ChatGLM3、Qwen、Baichuan | 根據上下文生成答案 |
| 嵌入模型 | BGE-Large、text2vec、M3E | 將文字轉換為向量嵌入 |
| 重排序器 | BGE-Reranker、Cohere | 對檢索到的區塊進行重排序以提高準確度 |
| 線上 API 備援 | OpenAI、文心、通義 | 本地 GPU 不足時使用雲端模型 |
重排序階段對於生產部署尤其重要。在初始向量搜尋檢索到一組候選區塊後,重排序模型會對每個區塊與問題的相關性進行評分,並剔除不相關的結果。這種兩階段檢索策略顯著提高了答案品質。
有哪些部署選項?
Langchain-Chatchat 提供靈活的部署方式,以適應不同的硬體預算。
| 部署模式 | 硬體需求 | 使用者規模 |
|---|---|---|
| 僅 CPU | 8+ GB 記憶體 | 小型團隊、實驗用途 |
| 單 GPU | 1x NVIDIA 16GB+ VRAM | 中型團隊、生產環境 |
| 多 GPU | 2x+ NVIDIA A100 | 大型企業、高吞吐量 |
| API 模式 | 不需要本地 GPU | 依賴雲端、快速設定 |
僅 CPU 模式對於數千頁以下的文件集意外地實用,使沒有專用 GPU 資源的團隊也能使用。對於較大的知識庫和較低的延遲需求,GPU 部署則變得不可或缺。
常見問題
什麼是 Langchain-Chatchat? Langchain-Chatchat 是一個開源的知識庫問答系統,結合 LangChain 與 ChatGLM 實現本地文件檢索與回答。使用者可以上傳文件並根據文件內容提出問題,系統透過完整的檢索增強生成管道來回答。
Langchain-Chatchat 支援哪些 LLM? Langchain-Chatchat 以 ChatGLM 系列模型為主要後端,同時支援其他開源 LLM,包括 Qwen、Baichuan 以及各種 API 型模型。系統採用模組化的模型抽象層設計,可輕鬆切換不同的 LLM 後端。
文件處理是如何運作的? 文件透過一個包含文件解析、文字分塊、嵌入生成和向量儲存的管道進行處理。支援的格式包括 PDF、Word、Excel、Markdown、純文字以及具備 OCR 支援的圖片。分塊後的內容會被索引到向量資料庫中,以便在查詢時進行高效的相似度搜尋。
可以完全離線運行嗎? 可以,Langchain-Chatchat 支援使用本地 LLM 和本地嵌入模型的完全離線部署。這使其非常適合具有嚴格資料隱私要求的企業環境,因為資料無需離開本地網路。
支援哪些向量資料庫? Langchain-Chatchat 支援多種向量資料庫後端,包括 FAISS(預設)、Milvus、Chroma 和 PostgreSQL 搭配 pgvector。使用者可以根據規模和效能需求選擇最合適的後端。
延伸閱讀
- Langchain-Chatchat GitHub 倉庫 – 原始碼、文件和社群問題
- LangChain 官方文件 – RAG 管道建構的框架文件
- ChatGLM 官方頁面 – 驅動問答引擎的 ChatGLM 模型系列
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!