本地搭建chatgpt知识库

langchain-chatchat搭建知识库原理

🤖️ 一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。

实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。

环境准备

硬件准备:

win11+wsl2,显卡最好是N卡,我的是2080ti22g(魔改版),这款性价比很高,推荐购买。

软件准备:

  1. 安装python环境管理工具,pyenv或者conda,我这里用的pyenv
  2. 安装好python 3.10版本,
  3. 安装好显卡驱动和cuda,根据显卡来安装版本,在win11下安装就行。
  4. 安装好git
  5. 有梯子的话建议整一个。

验证显卡,python和cuda

方法一、 打开命令提示符或 PowerShell。输入以下命令:nvidia-smi在输出中,可以看到显卡的名称和支持的 CUDA 版本。

方法二、 使用 Python导入 torch 库。 使用torch.cuda.is_available() 函数来检查是否支持 CUDA。 使用torch.cuda.get_device_name(0) 函数来获取第一个显卡的名称。 使用torch.cuda.get_device_properties(0)函数来获取第一个显卡的属性,其中包括支持的 CUDA 版本。 示例代码:

python 复制代码
import torch

if torch.cuda.is_available():
    print(f"支持 CUDA,第一个显卡名称:{torch.cuda.get_device_name(0)}")
    print(f"第一个显卡支持的 CUDA 版本:{torch.cuda.get_device_properties(0).cuda_version}")
else:
    print("不支持 CUDA")

这里可能有个小坑,如果win11里可以看到gpu可用,但是wsl2中无可用cpu,可以把wsl2先停掉,再重新启动。

本地搭建步骤

1、复制项目

bash 复制代码
git clone https://github.com/chatchat-space/Langchain-Chatchat.git; 
cd Langchain-Chatchat

2、创建环境

这里不管你用什么虚拟环境管理都可以,一定用一个单独的环境,防止依赖冲突和报错。这里是以pyenv为例子。

bash 复制代码
python -m venv test_langchain_chat
source test_langchain_chat/bin/activate

3、安装依赖

这里安装的适合如果下载的太慢,可以使用安装源,

a、 使用-i参数安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ package_name

b、全局设置安装源

可以修改 pip 的配置文件 pip.conf 来全局指定 pip 镜像源。pip.conf 文件位于用户目录下的 .config/pip 目录中。 在 pip.conf 文件中,添加以下内容:

ini 复制代码
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/

保存并关闭 pip.conf 文件后,重启 pip。

c、安装所有依赖

bash 复制代码
# 安装全部依赖
pip install -r requirements.txt 
pip install -r requirements_api.txt
pip install -r requirements_webui.txt 

4、下载模型

在本地或离线环境下运行,需要首先将项目所需的模型下载至本地,通常开源 LLM 与 Embedding 模型可以从 HuggingFace下载。以本项目中默认使用的 LLM 模型 THUDM/ChatGLM3-6B 与 Embedding 模型 BAAI/bge-large-zh 为例:

下载模型常用的网站有以下几个,

  1. huggingface.co/
  2. www.modelscope.cn/models

下载方式有以下几种

a、git lfs下载

先安装git lfs,如下: docs.github.com/zh/reposito...

bash 复制代码
git lfs install
git clone https://huggingface.co/THUDM/chatglm3-6b
git clone https://huggingface.co/BAAI/bge-large-zh

5、修改和初始化配置

a、初始化配置

bash 复制代码
## 复制配置文件
python copy_config_example.py
## 初始化知识库
python init_database.py --recreate-vs

b、修改模型配置

修改configs/model_config.py 建议把所有的模型放到一个文件夹,后续如果玩其他大模型指定以下目录就行了。

python 复制代码
MODEL_ROOT_PATH = "/home/xx/soft/ai-models"

6、启动调试

执行命令启动服务;访问http://localhost:8501/

bash 复制代码
python startup.py -a

7、知识库测试

我这里上传了几本epub书籍,都是金融相关的。搜索什么是指数基金是可以显示知识库来源的。

相关推荐
魔尔助理顾问3 小时前
一个简洁高效的Flask用户管理示例
后端·python·flask
李长渊哦6 小时前
使用Druid连接池优化Spring Boot应用中的数据库连接
数据库·spring boot·后端
web135085886356 小时前
【Spring Boot】Spring AOP动态代理,以及静态代理
spring boot·后端·spring
nbsaas-boot7 小时前
Go 自动升级依赖版本
开发语言·后端·golang
zzyh1234568 小时前
springcloud的组件及作用
后端·spring·spring cloud
陈敬雷-充电了么-CEO兼CTO8 小时前
DeepSeek核心算法解析:如何打造比肩ChatGPT的国产大模型
人工智能·神经网络·自然语言处理·chatgpt·大模型·aigc·deepseek
尚学教辅学习资料8 小时前
基于SpringBoot的图书借阅小程序+LW参考示例
spring boot·后端·小程序·java毕设·图书借阅
山海不说话8 小时前
从零搭建微服务项目Base(第5章——SpringBoot项目LogBack日志配置+Feign使用)
spring boot·后端·spring·spring cloud·微服务·logback
databook10 小时前
『Python底层原理』--CPython的变量实现机制
后端·python
初尘屿风10 小时前
小程序类毕业设计选题题目推荐 (29)
spring boot·后端·学习·微信·小程序·课程设计