文章目录

  • 一 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.…