CH6 LLM 精品案例 - SunXiaoXiang/llm-universe GitHub Wiki
个人知识库助手
实现基于 Datawhale 的现有项目 README 的知识问答,使用户可以快速了解 Datawhale 现有项目情况
① LLM 层主要基于四种流行 LLM API 进行了 LLM 调用封装,支持用户以统一的入口、方式来访问不同的模型,支持随时进行模型的切换; ② 数据层主要包括个人知识库的源数据以及 Embedding API,源数据经过 Embedding 处理可以被向量数据库使用; ③ 数据库层主要为基于个人知识库源数据搭建的向量数据库,在本项目中我们选择了 Chroma; ④ 应用层为核心功能的最顶层封装,我们基于 LangChain 提供的检索问答链基类进行了进一步封装,从而支持不同模型切换以及便捷实现基于数据库的检索问答; ⑤ 最顶层为服务层,我们分别实现了 Gradio 搭建 Demo 与 FastAPI 组建 API 两种方式来支持本项目的服务访问。
RAG 过程包括如下操作:
1.用户提出问题 Query 2.加载和读取知识库文档 3.对知识库文档进行分割 4.对分割后的知识库文本向量化并存入向量库建立索引 5.对问句 Query 向量化 6.在知识库文档向量中匹配出与问句 Query 向量最相似的 top k 个 7.匹配出的知识库文本文本作为上下文 Context 和问题⼀起添加到 prompt 中 8.提交给 LLM 生成回答 Answer 可以大致分为索引,检索和生成三个阶段 之前的章节已经简单完成了从1-8的过程,现在按照文章的建议要求,把代码实际跑一遍。
项目上手实操
#git clone 代码仓
git clone https://github.com/logan-zou/Chat_with_Datawhale_langchain.git
cd Chat_with_Datawhale_langchain
常见conda
# 已经有llm-universe,新建了llm-universe-chat
conda create -n llm-universe-chat python==3.9.0
#激活conda
conda activate llm-universe-chat
#安装依赖项
pip install -r requirements.txt
## 因这部报错,是langchain和langchain-commuity版本有冲突
## 去除 requirements 中 langchain 和 langchain-commuity的版本号,重新pip安装
## 再次安装后 安装成功
知识库文件在 knowledge_db 目录下,绝大多数是MD,感觉现在网站文件也可以改着成MD,这样对LLM比较友好。
之前的章节里面大多数用的都是azureopenai的key,昨天自己新注册了智谱的账号,使用ZHIPU来跑这个新项目。 在.ENV 中,将ZHIPU的KEY配置到文件中。
# 启动fastapi的后端
cd project/serve
uvicorn api:app --reload
cd llm-universe/project/serve python run_gradio.py -model_name='chatglm_std' -embedding_model='m3e' -db_path='../../data_base/knowledge_db' -persist_path='../../data_base/vector_db'
pip install sentence-transformers
#再次启动run_gradio.py
#将m3e-base改成本地路径
#再次启动
cd llm-universe/project/serve python run_gradio.py -model_name='chatglm_std' -embedding_model='m3e' -db_path='../../data_base/knowledge_db' -persist_path='../../data_base/vector_db'
询问llm问题,“介绍下llm-universe”