本周在了解项目的基础上对前端进行规划
项目逻辑
1. 用户:可以通过 run_gradio 启动整个服务;
2. 服务层调用 qa_chain.py 或 chat_qa_chain 实例化对话检索链对象,实现全部核心功能;
3. 服务层和应用层都可以调用、切换 prompt_template.py 中的 prompt 模板来实现 prompt 的迭代;(没做该功能)
4. 也可以直接调用 call_llm 中的 get_completion 函数来实现不使用数据库的 LLM;
5. 应用层调用已存在的数据库和 llm 中的自定义 LLM 来构建检索链;
6. 如果数据库不存在,应用层调用 create_db.py 创建数据库,该脚本可以使用 zhipuai embedding
各层简析
1. LLM 层
LLM 层主要功能为将 zhipuai API 进行封装
想要学习其他 LLM 的调用方式、封装方式,请阅读教程第二章《调用大模型 API》。
2 .数据层
数据层主要包括个人知识库的源数据(包括 pdf、txt、md 等)和 Embedding 对象。源数据需要经过 Embedding 处理才能进入向量数据库,我们在数据层自定义了智谱提供的 Embedding API 的封装,支持上层以统一方式调用智谱 Embedding。
3 .数据库层
数据库层主要存放了向量数据库文件。同时,我们在该层实现了源数据处理、创建向量数据库的方法。
4 .应用层
应用层封装了整个项目的全部核心功能。我们基于 LangChain 提供的检索问答链,在 LLM 层、数据库层的基础上,实现了本项目检索问答链的封装。自定义的检索问答链除具备基本的检索问答功能外,也支持通过 model 参数来灵活切换使用的 LLM。实现两个检索问答链,分别是有历史记录的 Chat_QA_Chain 和没有历史记录的 QA_Chain。
5 .服务层
服务层主要是基于应用层的核心功能封装,实现了 Demo 的搭建。