目录
- 一、前言
- 二、项目架构
- 三、项目搭建运行
- 四、RAG过程
- 五、参考资料
一、前言
本项目由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