Langchian-chatchat私有化部署和踩坑問題以及解決方案[v0.3.1]

文章目錄

  • 一 langchain-chatchat項目
  • 二 本地私有部署
    • 2.1 源碼下載
    • 2.2 創建虛擬環境
    • 2.3 安裝Poetry
    • 2.4 安裝項目依賴
    • 2.5 初始化項目
    • 2.6 修改配置信息
    • 2.7 初始化知識庫
    • 2.8 啟動服務
  • 三 問題和解決方法
    • 3.1 poetry和packaging版本兼容性
    • 3.2 Langchain-chatchatPDF加載錯誤分析[win平臺]
    • 3.3 向量模型處理數量問題

一 langchain-chatchat項目

在這里插入圖片描述

  • langchain-chatchat項目地址

  • LangChain-ChatChat 基于 ChatGLM 等大語言模型與 Langchain 等應用框架實現,開源、可離線部署的 RAG 與 Agent 應用項目。

  • LangChain-ChatChat 提供了豐富的對話及問答功能,包括:通用對話管理:支持多輪對話、會話歷史保存、角色提示詞自定義等功能。Web UI 可同時管理多個會話,每個會話可設置不同的系統指令和參數。具體核心功能如下:

    • 本地知識庫 QA:通過“知識庫對話”功能,將用戶上傳的文檔、網頁內容等構建向量化知識庫,用戶提問時從本地知識庫檢索相關信息并生成回答。支持多種文件格式(TXTDOCXPDFMarkdown 等)和知識庫管理命令(如 chatchat kb -r 初始化、添加文件等)。

    • 文檔檢索問答(File RAG):與知識庫 QA 類似,但針對單個或選定文件進行分塊檢索,支持 BM25+KNN 等混合檢索算法,實現對長文檔或 PDF 的精確問答。

    • 搜索引擎對話:集成了可選的搜索引擎(如 Searx 等)作為知識補充,可在對話中檢索實時網絡信息,并作為上下文提供給模型。

    • 數據庫問答0.3.x 新增了直接對接數據庫的能力,用戶可以配置數據庫連接,系統將根據用戶提問生成 SQL 查詢并返回結果(需使用支持 Function Call 的模型)。

    • 多模態功能:支持圖片對話和文本生成圖像。例如可上傳圖片讓模型進行描述或分析(推薦使用 Qwen-VL-Chat 等視覺語言模型),或使用模型自帶的文生圖功能生成圖片。

    • 工具/插件機制(Agent)0.3.x 核心功能由 Agent 實現,用戶可在配置中啟用 Agent 模式,并選擇多個工具(如 Wolfram翻譯計算器網絡檢索 等)。當啟用 Agent 時,LLM 會根據請求自動調用合適的工具;也可手動選擇單個工具進行 API 調用。這一機制使系統能夠擴展各種“插件”功能,如事實查詢、代碼運行、表格操作等。

    • UI 前端:內置基于 Streamlit 的網頁界面,提供聊天交互、模型選擇、參數配置等功能。UI 支持多會話標簽、上下文導出、記憶管理等,方便用戶進行實驗和演示。

    • 權限/多用戶管理:當前版本主要面向個人或小團隊部署,并未專門實現復雜的角色權限體系。系統默認允許本地訪問,用戶需在配置中調整監聽地址(如改為 0.0.0.0)才能遠程訪問。


  • LangChain-ChatChat 的核心架構是一個標準的 RAG 管道:加載文檔→文本切分→向量化檢索→合并上下文→LLM 生成回答。具體來說,系統首先通過多種文件解析器讀取文檔內容,然后用文本切分器(如基于句段或固定長度切分)將內容拆分為小塊,對每塊計算文本向量。用戶提問后,同樣將問題向量化,在向量數據庫中檢索與問題最相似的 TopK 文本塊,將檢索結果作為上下文與問題一并組織到提示詞中,最后交給大模型生成答案。如下圖所示:
    在這里插入圖片描述
  • 詳細流程示意:LangChain-ChatChat 內置整套檢索問答流程,由 LangChain 負責串聯各組件、管理上下文和對話記憶。 系統技術棧方面,ChatChat 基于 Python3.8+ 開發,核心依賴 LangChain 框架。它通過 FastAPI 暴露后端服務接口,也提供基于 StreamlitWeb UI 供用戶交互。在模型支持上,從 0.3.0 版本起,所有模型(包括 LLMEmbedding可視化模型 等)均通過模型推理框架接入,例如 XinferenceLocalAIOllamaFastChatOne API 等。這些框架可以加載如 GLM-4-ChatQwen-2LLaMA3VicunaAlpacaKoalaRWKV 等多種開源大模型,并支持 GPU/CPU 異構部署和加速(如 GPTQvLLMTensorRT 等)。系統內部還使用了數據庫或文件系統來存儲知識庫元數據,默認使用 SQLite+FAISS 向量庫,用戶可通過配置接入其他矢量數據庫(如 ChromaMilvus 等)。整體運行時,通過 chatchat init 命令生成配置、初始化知識庫,通過 chatchat start 啟動服務,用戶既可以以 API 形式調用,也可在瀏覽器中使用內置的多會話聊天界面。
    在這里插入圖片描述

二 本地私有部署

2.1 源碼下載

  • 訪問langchain-chatchat項目地址,下載源碼。并將其解壓到你的代碼目錄下。

2.2 創建虛擬環境

  • Langchain-Chatchat0.3.0 版本起,為方便支持用戶使用 pip 方式安裝部署,以及為避免環境中依賴包版本沖突等問題, 在源代碼/開發部署中不再繼續使用 requirements.txt 管理項目依賴庫,轉為使用 Poetry 進行環境管理。
  • 需要通過Conda創建一個獨立的環境,并安裝Poetry
    conda create -n langchain_chat python=3.11
    
  • Poetry 是一款現代化的 Python 包管理和項目構建工具,旨在為開發者提供一種簡單一致、可復現的依賴管理與發布流程。
  • 與傳統的 pip 和 setup.py 相比,Poetry通過引入聲明式的 pyproject.toml 配置文件,實現了項目依賴、開發依賴、版本鎖定以及構建配置的統一管理。Poetry不僅支持對項目依賴進行精確版本約束和哈希校驗,確保在不同環境中安裝的依賴完全一致,還內置了虛擬環境自動管理機制,能夠在每個項目目錄下創建隔離的運行環境,從而避免依賴沖突和環境污染。
    通過簡單的命令,開發者可以快速完成項目的初始化、依賴安裝、版本更新、打包構建和發布到PyPI等操作,大幅提升了Python項目的可維護性和可移植性。

2.3 安裝Poetry

  • 進入新創建的虛擬環境,并安裝Poetry
conda activate langchain_chat
pip install poetry==1.8.3

2.4 安裝項目依賴

cd Langchain-Chatchat-0.3.1
cd .\libs\chatchat-server\
pip install -e .

2.5 初始化項目

  • chatchat項目相關命令
chatchat init # 項目初始化
chatchat kb   # 知識庫相關功能
chatchat start # 啟動服務
  • 執行項目初始化命令:
    chatchat init
    

2.6 修改配置信息

  • 準備本地ollama beg-m3向量模型環境(本地安裝ollama,然后使用ollama部署bge-m3模型,進行使用)和在線阿里云百煉api key。
  • 打開項目中生成的配置文件,并修改如下內容
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

2.7 初始化知識庫

  • 項目提供了一個默認的knowledge_base知識庫,可以通過如下命令進行初始化。
  • 注意:前提是已經正確的配置了model_settings.yaml文件中對話模型和Embedding模型的配置信息。
chatchat kb -r

在這里插入圖片描述

2.8 啟動服務

chatchat start -a
(langchain_chat) D:\Code\Langchain-Chatchat-0.3.1\libs\chatchat-server>chatchat start -a
cwd:D:\Code\Langchain-Chatchat-0.3.1\libs\chatchat-server==============================Langchain-Chatchat Configuration==============================
操作系統:Windows-10-10.0.19045-SP0.
python版本:3.11.13 | packaged by Anaconda, Inc. | (main, Jun  5 2025, 13:03:15) [MSC v.1929 64 bit (AMD64)]
項目版本:0.3.1
langchain版本:0.1.17
數據目錄:D:\Code\Langchain-Chatchat-0.3.1\libs\chatchat-server當前使用的分詞器:ChineseRecursiveTextSplitter
默認選用的 Embedding 名稱: bge-m3
==============================Langchain-Chatchat Configuration==============================
  • 啟動成功后,會自動打開瀏覽器(http://127.0.0.1:8501),并顯示如下界面
    在這里插入圖片描述

三 問題和解決方法

3.1 poetry和packaging版本兼容性

  • 問題:poetry=2.1.4要求packaging>=24.0,但是langchain-chatchat項目中的langchain相關依賴要求packaging<24.0,導致依賴安裝失敗
  • 解決方法:將poetry降級為1.8.3版本
pip install poetry==1.8.3

3.2 Langchain-chatchatPDF加載錯誤分析[win平臺]

  • 參考文章langchain-chatchat知識庫初始化失敗的坑

  • 問題:本地部署完畢,chatchat init初始化完成,在進行chatchat kb -r時候,系統提示錯誤如下:

langchain chatchat 部署UnpicklingError: 從文件 samples/test_files/langchain.pdf 加載文檔時出錯:pickle data was truncated
  • 原因分析:錯誤發生在RapidOCRPDFLoader加載PDF文件時,具體路徑為samples/test_files/langchain.pdf 。錯誤鏈顯示在加載NLTK的averaged_perceptron_tagger模型時失敗。模型下載不完整:averaged_perceptron_tagger模型文件損壞或下載中斷
  • NLTK是用于人類自然語言處理包。NLTk是langchain-chathcat知識庫矢量化需要用的包,這里可能出現了未能完全下載和解壓,導致報錯。
  • 解決方法:手動下載、安裝模型。
  1. 訪問nltk_data下載網址(可能需要魔法環境加快下載),下載下圖中的兩個文件
    在這里插入圖片描述
  2. 解壓后放入C:\Users\xxx\AppData\Roaming\nltk_data\taggers\
C:\Users\用戶名\AppData\Roaming\nltk_data\taggers

在這里插入圖片描述

3.3 向量模型處理數量問題

  • 問題:使用軌跡流動平臺的向量化模型存在批處理限制,導致如下報錯:
openai.APIStatusError: Error code: 413 - {'code': 20042, 'message': 'input batch size 172 > maximum allowed batch size 64', 'data': None}
  • 解決方法:本地安裝ollama,然后使用ollama部署bge-m3模型,進行使用
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/94585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/94585.shtml
英文地址,請注明出處:http://en.pswp.cn/web/94585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Day3--HOT100--42. 接雨水,3. 無重復字符的最長子串,438. 找到字符串中所有字母異位詞

Day3–HOT100–42. 接雨水&#xff0c;3. 無重復字符的最長子串&#xff0c;438. 找到字符串中所有字母異位詞 每日刷題系列。今天的題目是力扣HOT100題單。 雙指針和滑動窗口題目。其中438題踩了坑&#xff0c;很值得看一下。 42. 接雨水 思路&#xff1a; 每個位置i&#x…

Kafka Broker 核心原理全解析:存儲、高可用與數據同步

Kafka Broker 核心原理全解析&#xff1a;存儲、高可用與數據同步 思維導圖正文&#xff1a;Kafka Broker 核心原理深度剖析 Kafka 作為高性能的分布式消息隊列&#xff0c;其 Broker 節點的設計是支撐高吞吐、高可用的核心。本文將從存儲結構、消息清理、高可用選舉、數據同步…

RTTR反射機制示例

1. Person類型頭文件 #ifndef PERSON_H …

計數組合學7.21(有界部分大小的平面分拆)

7.21 有界部分大小的平面分拆 本節的主要目標是在 q1q 1q1 的情況下細化定理 7.20.1&#xff0c;通過限制平面分拆 π∈P(r,c)\pi \in P(r, c)π∈P(r,c) 的最大部分的大小。例如&#xff0c;考慮特殊情況 r1r 1r1&#xff0c;此時 π\piπ 只是一個不超過 ccc 個部分的普通分…

Product Hunt 每日熱榜 | 2025-08-26

1. Trace 標語&#xff1a;人類與人工智能的工作流程自動化 &#x1f47e; 介紹&#xff1a;一個工作流程自動化平臺&#xff0c;將任務分配給合適的處理者——無論是人類還是人工智能。通過連接像Slack、Jira和Notion這樣的工具&#xff0c;Trace能夠拆解現有工作流程&#…

llama.cpp reranking源碼分析

大模型時代&#xff0c;reranker一直是提高RAG有效性的重要工具。相對于初篩階段向量檢索&#xff0c;精排階段的reranker需要query和每個候選document做相關計算。初篩已經將候選documents限制在一個相對較小范圍&#xff0c;但依然要進行大量的相關性計算。 llama.cpp是廣泛…

ruoyi-vue(十二)——定時任務,緩存監控,服務監控以及系統接口

一 定時任務 1、 定時任務使用 1.1 概述 在實際項目開發中Web應用有一類不可缺少的&#xff0c;那就是定時任務。 定時任務的場景可以說非常廣泛&#xff0c;比如某些視頻網站&#xff0c;購買會員后&#xff0c;每天會給會員送成長值&#xff0c;每月會給會員送一些電影券&…

spring如何通過實現BeanPostProcessor接口計算并打印每一個bean的加載耗時

文章目錄實現說明&#xff1a;注意事項&#xff1a;要在Spring中通過BeanPostProcessor接口計算并打印每個Bean的加載耗時&#xff0c;我們可以利用該接口的兩個回調方法記錄Bean初始化前后的時間戳&#xff0c;然后計算時間差。 以下是實現方案&#xff1a; 首先創建一個實現B…

“品種+創新銷售”,恩威醫藥半年度業績翻倍增長

8月25日晚&#xff0c;恩威醫藥發布2025年半年度報告&#xff0c;報告期內&#xff0c;公司實現營業收入4.49億元&#xff0c;同比增長15.73%&#xff0c;歸屬于上市公司股東凈利潤達3834.42萬元&#xff0c;同比增幅113.80%&#xff0c;扣除非經常性損益凈利潤為3527.57萬元&a…

【機器學習】機器學習算法

機器學習1、K-近鄰算法KNN1.1、舉例&#xff1a;電影類型分析1.2、KNN算法流程1.3、Scikit-learn工具1.4、K-近鄰算法API1.5、距離度量1.5.1、歐式距離Euclidean Distance&#x1f525;1.5.2、曼哈頓距離Manhattan Distance&#x1f525;1.5.3、切比雪夫距離Chebyshev Distance…

python-批量安裝庫

要將當前環境中已安裝的Python庫列表導出為一個可重用的格式&#xff08;通常為requirements.txt&#xff09;&#xff0c;以便在另一個環境中再現這些庫的安裝&#xff0c;可以使用pip工具提供的功能。以下是具體步驟&#xff1a;### 使用pip freeze1. **打開命令提示符或終端…

創龍3576ububuntu系統設置靜態IP方法

創龍3576ububuntu系統設置靜態IP方法&#xff0c;執行命令進入"/etc/systemd/network/"目錄&#xff0c;請根據實際網絡環境&#xff0c;下面演示修改 eth0.network 網口靜態ip為192.168.1337.200執行&#xff1a;vim /etc/systemd/network/eth0.network 增加一句&am…

MySQL - 視圖,事務和索引

目錄一、視圖1. 問題2. 視圖是什么3. 定義視圖4. 查看視圖5. 使用視圖6. 刪除視圖7. 視圖的作用二、事務1. 定義2. 事務命令1&#xff09;回滾2&#xff09;提交3&#xff09;臟寫、臟讀、不可重復讀和幻讀三、索引1. 定義2. 索引是什么3. 索引目的4. 索引原理5. 索引的使用6. …

車載鐵框矯平機:把“鈑金診所”開到工地上

——一次從原子層面開始的平整之旅一、先想一想&#xff1a;鐵框為什么“脾氣大” 鋼板在軋制、切割、焊接、吊裝、甚至太陽暴曬時&#xff0c;內部晶粒被拉得七扭八歪&#xff0c;像揉皺的紙。宏觀上&#xff0c;我們就看到“翹、拱、扭”。矯平&#xff0c;實質上是給金屬做一…

不安全的服務器,不支持 FTP over TLS

當服務器不支持 FTP over TLS&#xff08;也稱為 FTPS&#xff09;時&#xff0c;意味著它僅支持未加密的 FTP 連接。這種情況存在顯著的安全風險&#xff0c;因為&#xff1a;數據傳輸不加密&#xff1a;用戶名、密碼以及傳輸的文件內容都會以明文形式在網絡中傳輸&#xff0c…

本地緩存與 Redis 緩存的區別與實際應用

緩存是提升系統性能、降低數據庫壓力的重要手段。Java 開發中常用的緩存方案包括 ?本地緩存&#xff08;如 Caffeine、Guava Cache&#xff09;?? 和 ?分布式緩存&#xff08;如 Redis&#xff09;?。這兩者在設計目標、使用場景、性能特點等方面有顯著差異&#xff0c;合…

從“0”開始學JAVA——第十一節 I/O流

在Java編程中&#xff0c;文件操作和輸入輸出(IO)處理是必不可少的部分。本文將深入探討Java IO包中的文件流操作&#xff0c;包括基礎概念、分類、常用類以及實際應用場景。1. File類File類是Java IO操作的基礎&#xff0c;它實現了Serializable和Comparable<File>接口。…

【數據價值化】數據資產入表指南:核心準則與實操路徑

隨著數據要素市場的蓬勃發展&#xff0c;數據資產的商業價值愈發凸顯。然而&#xff0c;如何讓數據資產合規、合理地進入企業財務報表&#xff0c;成為眾多企業急需解決的難題。本文基于《企業會計準則》的相關規定&#xff0c;為您系統梳理數據資產入表的核心準則要點與實操路…

基于 MediaPipe + Three.js 的實時姿態可視化前端

這是一套前端實時姿態捕獲與 3D 可視化的 DEMO&#xff0c;特點是啟動快、UI 現代、渲染穩定&#xff0c;同時對設備性能與網絡情況做了多處優化。 預覽地址 技術棧與核心依賴 框架與工程&#xff1a;Vite React TypeScript實時姿態識別&#xff1a;MediaPipe Tasks Vision&…

【分布式技術】Kafka 數據積壓全面解析:原因、診斷與解決方案

Kafka 數據積壓全面解析&#xff1a;原因、診斷與解決方案Kafka 數據積壓深度解析與解決方案全景指南一、數據積壓核心原因矩陣二、生產者側問題深度解析1. 突發流量洪峰2. 大消息阻塞管道三、消費者側問題深度解析1. 消費能力不足2. 消費邏輯阻塞四、Broker集群問題深度解析1.…