基于Langchain-Chatchat + ChatGLM 本地部署知识库
一、相关环境
参考链接: Github:https://github.com/chatchat-space/Langchain-Chatchat
Langchain-chatchat版本:v0.3.1
安装环境:Ubuntu:22.04,CUDA:12.1
二、搭建过程
2.1 环境配置
2.1.1 创建chatchat虚拟环境
- 创建chatcaht虚拟环境
conda create -n chat python=3.11 -y
conda activate chat
- 克隆仓库
git clone https://github.com/chatchat-space/Langchain-Chatchat.git
#进入目录
cd Langchain-Chatchat
- 安装依赖
pip install "langchain-chatchat[xinference]" -U
使用模型推理框架并加载模型,这里用到的是Xinference。
【注意】为避免依赖冲突,请将 Langchain-Chatchat 和模型部署框架如 Xinference 等放在不同的 Python 虚拟环境中,比如 conda, venv, virtualenv 等。
2.1.2 创建xinference虚拟环境
- 创建xinference虚拟环境
conda create -n xinf python=3.10 -y
conda activate xinf
- 安装依赖
pip install "xinference[transformers]"
pip install sentence-transformers
- 启动xinference
xinference-local --host 0.0.0.0 --port 9997

2.2 模型推理框架并加载模型(xinference)


* 在xinference加载模型

- 在xinference加载本地模型
在启动 Xinference 服务后,到项目 tools/model_loaders 目录下执行
streamlit run xinference_manager.py

按照页面提示为指定模型设置本地路径即可

2.3 初始化项目配置与数据目录
打开 chatchat:
设置 Chatchat 存储配置文件和数据文件的根目录,在文件夹中新建一个chatchat_data 文件夹:

data 文件夹
# on linux or macos
export CHATCHAT_ROOT=/path/to/chatchat_data
# on windows
set CHATCHAT_ROOT=/path/to/chatchat_data
若不设置该环境变量,则自动使用当前目录。
执行初始化:
chatchat init
该命令会执行以下操作:
- 创建所有需要的数据目录
- 复制 samples 知识库内容
- 生成默认 yaml 配置文件

数据库中的内容

初始化成功
修改配置文件,需要根据步骤 2.2 模型推理框架并加载模型中选用的模型推理框架与加载的模型进行模型接入配置,具体参考 model_settings.yaml 中的注释。主要修改以下内容:
# 默认选用的 LLM 名称DEFAULT_LLM_MODEL: glm4-chat# 默认选用的 Embedding 名称DEFAULT_EMBEDDING_MODEL: bge-m3# 将 `LLM_MODEL_CONFIG` 中 `llm_model, action_model` 的键改成对应的 LLM 模型
# 在 `MODEL_PLATFORMS` 中修改对应模型平台信息
配置知识库路径(basic_settings.yaml),这步可以不做,如果你就是用前面配置好的数据库地址。
默认知识库位于CHATCHAT_ROOT/data/knowledge_base,如果你想把知识库放在不同的位置,或者想连接现有的知识库,可以在这里修改对应目录即可。
# 知识库默认存储路径KB_ROOT_PATH: D:\chatchat-test\data\knowledge_base# 数据库默认存储路径。如果使用sqlite,可以直接修改DB_ROOT_PATH;如果使用其它数据库,请直接修改SQLALCHEMY_DATABASE_URI。DB_ROOT_PATH: D:\chatchat-test\data\knowledge_base\info.db# 知识库信息数据库连接URISQLALCHEMY_DATABASE_URI: sqlite:///D:\chatchat-test\data\knowledge_base\info.db
配置知识库(kb_settings.yaml)(可选):
默认使用 FAISS 知识库,如果想连接其它类型的知识库,可以修改 和 kbs_config。
支持的数据文件类型很多,包括PDF、TXT、MP4、CSV、MD等,但是要注意放置到对应的文件夹下面:

直接将文件放在这些文件夹内即可
2.4 初始化知识库
进行知识库初始化前,请确保已经启动模型推理框架及对应 embedding 模型(也就是 Xinference 框架要启动着),且已按照上述步骤 2.3 完成模型接入配置。
chatchat kb -r

出现这个就说明已经加载好了
更多功能可以查看:
chatchat kb --help
参数说明:
- -r, --recreate:重新创建矢量存储。如果存在此选项,则使用它。已将文档文件复制到内容文件夹,但矢量存储尚未填充或DEFAUL_VS_TYPE/DEFAUL_EMBEDING_MODEL已更改。
- --create-table:如果不存在,则创建空表。
- --clear-table:创建空表,或在重新创建矢量存储之前删除数据库表。
- -u, --db-update:数据库中存在文件的矢量存储更新。如果要重新创建矢量存储,请使用此选项。文件存在于数据库中,跳过文件存在于本地文件夹。
- -i, --incremental:本地文件夹中存在文件的增量更新矢量存储,数据库中不存在。如果您希望逐步创建矢量,请使用此选项。
- --trim-db:删除本地数据库中不存在的文档文件夹中的文档。用于删除用户在文件浏览器中删除的文档文件。
- --trim-folder: 删除本地文件夹中不存在的文档文件数据库。用于释放本地磁盘空间,删除未使用的文档文件。
- -n, --kb-name TEXT:指定要操作的知识库名称。默认值为KB_ROOT_PATH中存在的所有文件夹。
- -e, --embed-model TEXT:指定嵌入模型。
- --import-from-db TEXT:从指定的sqlite数据库导入表。
--help:显示此消息并退出。
2.5 启动项目
chatchat start -a

三、遇见问题
pip install openai==0.28.1相关文章:
基于Langchain-Chatchat + ChatGLM 本地部署知识库
一、相关环境 参考链接: Github:https://github.com/chatchat-space/Langchain-Chatchat Langchain-chatchat版本:v0.3.1 安装环境:Ubuntu:22.04,CUDA:12.1 二、搭建过程 2.1 环境配置 2.1.1 创建chatchat虚拟环…...
【C语言】main函数解析
一、前言 在学习编程的过程中,我们很早就接触到了main函数。在Linux系统中,当你运行一个可执行文件(例如 ./a.out)时,如果需要传入参数,就需要了解main函数的用法。本文将详细解析main函数的参数ÿ…...
【QT】- QUdpSocket
QUdpSocket 是 Qt 自带的一个类,属于 Qt 网络模块,用于进行 UDP(用户数据报协议) 通信。它提供了简便的接口来发送和接收 UDP 数据报(datagrams)。 UDP 是一种无连接的协议,适用于那些不需要确…...
性能测试丨分布式性能监控系统 SkyWalking
软件测试领域,分布式系统的复杂性不断增加,如何保证应用程序的高可用性与高性能,这是每一个软件测试工程师所面临的重大挑战。幸运的是,现在有了一些强大的工具来帮助我们应对这些挑战,其中之一便是Apache SkyWalking。…...
SQL GROUP BY 详解
SQL GROUP BY 详解 引言 在数据库查询中,GROUP BY 子句是一个非常有用的工具,它允许我们对查询结果进行分组,并基于这些分组进行聚合计算。本文将详细介绍 GROUP BY 的用法、注意事项以及在实际应用中的场景。 什么是 GROUP BY? GROUP BY 子句用于对查询结果进行分组。…...
C语言中string.h头文件功能介绍
在C语言的世界里,string.h头文件提供了许多用于处理字符串和内存操作的函数。今天,我们就来深入探讨string.h头文件的功能、使用注意事项以及一些拓展应用。 一、功能介绍 string.h头文件定义了一系列用于操作字符串和内存的函数。这些函数可以分为几个…...
从规则到神经网络:机器翻译技术的演进与未来展望
从规则到神经网络:机器翻译技术的演进与未来展望 引言 还记得早些年用翻译软件翻译一句简单的英文句子,却发现翻译结果让人啼笑皆非的日子吗?从“我喜欢吃苹果”被翻译成“我喜欢吃苹果电脑”,到今天的神经网络机器翻译(Neural Machine Translation, NMT)能够生成语义流…...
园区管理智能化创新引领企业效能提升与风险控制新趋势
内容概要 在现代园区管理中,智能化创新正成为越来越多企业优化效能和控制风险的重要途径。通过引入先进的技术手段,企业能够更高效地管理资源,并实现全面的风险控制。 首先,园区管理系统的基本概念和发展现状让我们看到科技与管…...
Python爬虫之——Cookie存储器
目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 &…...
第21节课:前端构建工具—自动化与模块化的利器
目录 前端构建工具的重要性任务运行器:Gulp与GruntGulpGulp的工作原理安装与使用Gulp GruntGrunt的工作原理安装与使用Grunt 模块打包器:WebpackWebpack简介Webpack的工作原理安装与使用Webpack 实践:使用Gulp和Webpack构建前端项目示例&…...
企业SaaS(软件即服务)行业中AARRR
获取(Acquisition) 通过各种渠道吸引用户。 社交媒体广告:Facebook、Instagram等平台的广告。 内容营销:通过博客、视频等吸引用户。 SEO优化:提高网站在搜索引擎中的排名。 合作营销:与其他企业合作进行交…...
为什么要学习rust
内存管理:对于我来说,我就喜欢它的内存管理。我做了一个webapi,取100万行数据,导出到xlsx,再把这个xlsx文件发送给前端。分别用了java、c#、go和rust进行了相同的操作。只有rust做到了,启动时8MB内存&#…...
观察者模式和订阅发布模式的关系
有人把观察者模式等同于发布订阅模式,也有人认为这两种模式存在差异,本质上就是调度的方法不同。 发布订阅模式: 观察者模式: 相比较,发布订阅将发布者和观察者之间解耦。(发布订阅有调度中心处理)...
基于STM32的智能温控花盆设计
目录 引言系统设计 硬件设计软件设计 系统功能模块 空气质量传感器模块数据处理与分析模块实时显示与用户交互模块报警与提示模块远程监控与数据上传模块 控制算法 空气质量数据处理与分析算法异常检测与报警算法数据上传与历史数据回溯算法 代码实现 空气质量检测与数据处理代…...
OpenAI-Edge-TTS:本地化 OpenAI 兼容的文本转语音 API,免费高效!
文本转语音(TTS)技术已经成为人工智能领域的重要一环,无论是语音助手、教育内容生成,还是音频文章创作,TTS 工具都能显著提高效率。今天要为大家介绍的是 OpenAI-Edge-TTS,一款基于 Microsoft Edge 在线文本…...
P4681 [THUSC 2015] 平方运算 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an) 和常数 p p p ,有 m m m 个操作,分以下两种: modify ( l , r ) \operatorname{modify}(l,r) modify(l,r):对每个 i ∈ [ …...
【apt源】RK3588 平台ubuntu20.04更换apt源
RK3588芯片使用的是aarch64架构,因此在Ubuntu 20.04上更换apt源时需要使用针对aarch64架构的源地址。以下是针对RK3588芯片在Ubuntu 20.04上更换apt源到清华源的正确步骤: 步骤一:打开终端 在Ubuntu 20.04中,按下Ctrl Alt T打…...
Angular 2 表单深度解析
Angular 2 表单深度解析 引言 Angular 2作为现代前端开发的框架之一,以其灵活性和强大的功能赢得了众多开发者的青睐。在Angular 2中,表单处理是其中一个重要且复杂的部分。本文将深入解析Angular 2的表单,从基础知识到高级应用,旨在帮助开发者更好地理解和运用Angular 2…...
PHP 7 新特性
PHP 7 新特性 引言 PHP 作为一种广泛使用的服务器端脚本语言,自1995年诞生以来,已经经历了多个版本的迭代。PHP 7 是 PHP 的发展历程中的一个重要里程碑,它带来了许多新特性和改进,旨在提高性能、增强安全性和简化开发过程。本文将详细介绍 PHP 7 的新特性,帮助开发者更…...
vim如何解决‘’文件非法关闭后,遗留交换文件‘’的问题
过程描述: 由于我修改文件时(一定得修改了文件,不做任何修改不会产生这个问题)的非法关闭,比如直接关闭虚拟机,或者直接断开远程工具的远程连接,产生了以下遗留交换文件的问题: 点击…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
AT模式下的全局锁冲突如何解决?
一、全局锁冲突解决方案 1. 业务层重试机制(推荐方案) Service public class OrderService {GlobalTransactionalRetryable(maxAttempts 3, backoff Backoff(delay 100))public void createOrder(OrderDTO order) {// 库存扣减(自动加全…...
Yolo11改进策略:Block改进|FCM,特征互补映射模块|AAAI 2025|即插即用
1 论文信息 FBRT-YOLO(Faster and Better for Real-Time Aerial Image Detection)是由北京理工大学团队提出的专用于航拍图像实时目标检测的创新框架,发表于AAAI 2025。论文针对航拍场景中小目标检测的核心难题展开研究,重点解决…...
LTR-381RGB-01RGB+环境光检测应用场景及客户类型主要有哪些?
RGB环境光检测 功能,在应用场景及客户类型: 1. 可应用的儿童玩具类型 (1) 智能互动玩具 功能:通过检测环境光或物体颜色触发互动(如颜色识别积木、光感音乐盒)。 客户参考: LEGO(乐高&#x…...
Linux信号保存与处理机制详解
Linux信号的保存与处理涉及多个关键机制,以下是详细的总结: 1. 信号的保存 进程描述符(task_struct):每个进程的PCB中包含信号相关信息。 pending信号集:记录已到达但未处理的信号(未决信号&a…...
FTPS、HTTPS、SMTPS以及WebSockets over TLS的概念及其应用场景
一、什么是FTPS? FTPS,英文全称File Transfer Protocol with support for Transport Layer Security (SSL/TLS),安全文件传输协议,是一种对常用的文件传输协议(FTP)添加传输层安全(TLS)和安全套接层(SSL)加密协议支持的扩展协议。…...
