软件架构
本文着重介绍本应用:基于开源LLM的易学大模型软件系统的架构。在经过2个月的探索、选型、实验、开发后,我们团队终于把整个系统的各块拼图搭建了起来,现在剩下的是集成、评测、优化和部署的工作。
1. Distributed System
整个项目的逻辑架构是分布式的,总共分为3.5层:
- 客户端应用 :主要负责最外层web服务的图形化界面与用户接口
- web服务端应用 :负责基本的增删改查 、信息维护。以及对LLM与向量知识库的集成和整合
- LLM && RAG Kernel :这里涉及到最内核的部分,我们通过第三方框架(LangChain)落地实现了RAG技术,并且通过开源软件和一些具有强力算力的设备进行了开源通用LLM的微调:
- RAG落地实现 :这个子模块负责初始化向量知识库,并对外(web服务端应用)提供各种接口,包括上传知识文件,检索知识文件,更新知识文件,获取知识文件列表等等。
- LLM微调与部署 :我们利用第三方开源软件以及智谱AI提供的chatglm3-6B ,进行大模型的微调,在此过程中,利用一些领域前沿技术,进行语料的生成与准备。
基于开源LLM的易学大模型软件系统架构图
建议点击图片放大查看
2. 各模块功能解析与实现细节
客户端应用
技术选型:Node.js + Vue3.js + 各类开源前端组件/样式/界面库
Vue.js - 渐进式 JavaScript 框架 | Vue.js
子模块组成:(客户端应用是我们最晚开始开发的一个子系统。目前尚在开发中,后续补充)
实现细节:
web服务端应用
技术选型:
- Web服务器:Uvicorn Uvicorn
- Web服务+路由管理:FastAPI + Sharlette FastAPI
- 数据校验:Pydantic Welcome to Pydantic - Pydantic
- 数据库:
- 基于硬盘的嵌入式数据库:Sqlite + SQLAlchemy SQLite Home PageSQLAlchemy - The Database Toolkit for Python
- 基于内存的缓存数据库:Redis Redis - The Real-time Data Platform
实现细节:
- 服务端接口开发:
- 数据库部署落地:
LLM Kernel
技术选型:
- 语料生成:智谱AI 智谱AI开放平台 (bigmodel.cn)
- 微调实验:
- 软件是LLAMA Factory GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100+ LLMs
- 硬件不方便透露,是我们学院的机器
- 开源大模型:清华智谱AIchatglm3-6b chatglm3-6b
实现细节:
- 语料生成:
- 微调实验:我们微调后的大模型还没合并集成部署起来,所以后面再写。
- 能力增强/提示工程:
- 性能评测:
RAG Kernel
技术选型
- RAG工具包:Langchain + Langchain ChatChat LangChain Langchain-Chatchat
- 向量知识库:Faiss Welcome to Faiss Documentation --- Faiss documentation
- 文本嵌入模型:BAAI bge-large-zh bge-large-zh
实现细节:
- RAG工具包:
- 知识库建立部署: