本地搭建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书籍,都是金融相关的。搜索什么是指数基金是可以显示知识库来源的。

相关推荐
绝无仅有1 分钟前
部署 Go 项目的 N 种方法
后端·面试·github
回家路上绕了弯13 分钟前
Dubbo 实战指南:从架构原理到高可用落地,解锁分布式服务治理新能力
后端·dubbo
MaxHua17 分钟前
SQL查询优化全指南:从语句到架构的系统性优化策略
后端·数据分析
用户40993225021238 分钟前
如何在API高并发中玩转资源隔离与限流策略?
后端·ai编程·trae
似水流年流不尽思念41 分钟前
Spring声明式事务原理及事务失效场景?
后端·面试
汪子熙41 分钟前
接口超时应对:构建稳固的三层防御体系
后端
BingoGo42 分钟前
PHP Composer 依赖管理完整指南 入门到精通
后端·php
天天摸鱼的java工程师1 小时前
系统升级中如何实现数据平滑迁移?8 年 Java 开发:从业务崩溃到实战落地(附可复用代码)
java·后端
唐叔在学习1 小时前
详解Log4j组件:工业级Java日志框架
java·后端
Cache技术分享1 小时前
173. Java 注释 - 注释应用场景:类、字段、方法等
前端·后端