动手学大模型LLM应用开发之个人知识库助手项目

一、前言

本项目由datawhale成员开发,主要实现了基于 Datawhale 的现有项目 README 的知识问答,使用户可以快速了解 Datawhale 现有项目情况。
项目地址

二、项目架构

在这里插入图片描述
① LLM 层主要基于四种流行 LLM API 进行了 LLM 调用封装,支持用户以统一的入口、方式来访问不同的模型,支持随时进行模型的切换;

② 数据层主要包括个人知识库的源数据以及 Embedding API,源数据经过 Embedding 处理可以被向量数据库使用;

③ 数据库层主要为基于个人知识库源数据搭建的向量数据库,在本项目中我们选择了 Chroma;

④ 应用层为核心功能的最顶层封装,我们基于 LangChain 提供的检索问答链基类进行了进一步封装,从而支持不同模型切换以及便捷实现基于数据库的检索问答;

⑤ 最顶层为服务层,我们分别实现了 Gradio 搭建 Demo 与 FastAPI 组建 API 两种方式来支持本项目的服务访问。

三、项目搭建运行

git clone https://github.com/logan-zou/Chat_with_Datawhale_langchain.git
cd Chat_with_Datawhale_langchain
# 创建 Conda 环境
conda create -n llm-zszs python==3.9.0
# 激活 Conda 环境
conda activate llm-universe
# 安装依赖项
pip install -r requirements.txt

在windows中安装遇到报错
在这里插入图片描述
这些警告和错误提示表明你在尝试通过HTTPS连接到PyPI(Python Package Index),但连接时出现了SSL错误。这可能是由于网络问题或SSL配置问题引起的。
解决这个问题的一种方法是确保你的网络连接正常,并且你的系统时间和日期设置正确。有时候SSL错误也可能是由于系统时间不准确导致的。

检查下网络,发现我开了代理,关了代理换用清华源镜像下载

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述
出现了上图报错,报错显示由于在 Windows 上使用了不支持的库。 uvloop 库不支持在 Windows 平台上使用。

因此换成在linux中安装,这里我用的是windows中的linux子系统wsl。
在这里插入图片描述
如上图,安装发现langchain、langsmith、packaging存在冲突
于是修改requirements.txt,将这几个包不指定版本,让pip自行处理
重新自行安装命令pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
在这里插入图片描述
环境搭建成功!!!

启动服务为本地 API

uvicorn api:app --reload 

运行项目

python run_gradio.py -model_name='chatglm_std' -embedding_model='m3e' -db_path='../data_base/knowledge_db' -persist_path='../data_base/vector_db'

运行成功

在这里插入图片描述

四、RAG过程

该项目实现原理和一般 RAG 项目一样,主要流程如下

1.用户提出问题 Query

2.加载和读取知识库文档

3.对知识库文档进行分割

4.对分割后的知识库文本向量化并存入向量库建立索引

5.对问句 Query 向量化

6.在知识库文档向量中匹配出与问句 Query 向量最相似的 top k 个

7.匹配出的知识库文本文本作为上下文 Context 和问题⼀起添加到 prompt 中

8.提交给 LLM 生成回答 Answer

五、参考资料

链接: llm-universe

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-05 04:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-05 04:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-05 04:02:02       82 阅读
  4. Python语言-面向对象

    2024-05-05 04:02:02       91 阅读

热门阅读

  1. 1.Spring Security介绍

    2024-05-05 04:02:02       150 阅读
  2. Vue框架知识点表格总结

    2024-05-05 04:02:02       37 阅读
  3. 使用Spring Boot快速构建Spring应用

    2024-05-05 04:02:02       32 阅读
  4. linux定时运行脚本

    2024-05-05 04:02:02       38 阅读
  5. Python ansible 如何使用

    2024-05-05 04:02:02       33 阅读
  6. github.com/gin-contrib/timeout应前置使用

    2024-05-05 04:02:02       31 阅读
  7. 如何在 MySQL 中创建新用户并授予权限

    2024-05-05 04:02:02       31 阅读
  8. Docker容器管理详解

    2024-05-05 04:02:02       125 阅读