AI

Langchain-Chatchat:開源知識庫問答系統與 LLM 整合

Langchain-Chatchat 是一個基於 LangChain 和 ChatGLM 的開源知識庫問答系統,支援本地文件檢索與 RAG 管道。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
Langchain-Chatchat:開源知識庫問答系統與 LLM 整合

組織累積了大量內部文件——技術手冊、政策文件、研究論文和操作指南。一直以來的挑戰是如何將這些靜態知識轉化為可對話查詢的形式。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、PPTXPyMuPDF、python-docx、openpyxl
網頁格式HTML、Markdown、reStructuredTextBeautifulSoup、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 提供靈活的部署方式,以適應不同的硬體預算。

部署模式硬體需求使用者規模
僅 CPU8+ GB 記憶體小型團隊、實驗用途
單 GPU1x NVIDIA 16GB+ VRAM中型團隊、生產環境
多 GPU2x+ 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。使用者可以根據規模和效能需求選擇最合適的後端。


延伸閱讀

TAG