- 大模型工作流程
-
- 输入处理
-
-
- 输入文本分词
- 分词向量化
-
-
- 编码器:计算出每个token之间的关联程度
- 文本生成:一个一个token的循环,每次找到下个可能的token列表,然后选择拼接,再进行下一轮循环
- 输出
- 推理相关参数
-
- temperature:调整候选Token集合的概率分布
- 控制token集合的采样范围
- 让大模型回答私域问题
-
- 方式一:直接在对话上下文中插入,但问题是文本量过大,会性能和效果
- 方式二:rag,检索增强式生成
-
-
- 建立索引
- 检索与生成
- 建立索引
-
- rag工作原理
-
- 建立索引
-
-
- 文档解析
- 分段
- 文本向量化
- 存储到索引库
-
-
- 检索生成
-
-
- 检索:通过语义相似度进行检索
- 生成:典型的prompt例如 “请根据以下信息回答用户的问题:{召回文本段}。用户的问题是:{question}。”
-
- 创建rag应用
-
- 简单对话:通过llama_index读取本地文件,再本地存储向量文件,最终完成检索过程,再向大模型提问
- 多轮对话:如果直接用最后一轮历史对话与向量库做相似度匹配,肯定会丢失一些信息,此时的解决方式是
-
-
- 通过大模型,基于历史对话信息,将用户的问题改写为一个新的query,新的query将包含历史对话的关键信息。
- 使用新的query,按照原先流程进行检索与生成的过程。
-
2_3
- llamaidex中已经有默认的提示词模版,可以进行更新替换
- 提示词框架示例
提示词工程:提示工程指南 | Prompt Engineering Guide - 增加意图分类路由来决定是否走rag链路
优化分类提示词
2_5 自动化测试
- 简单版本
- Ragas
2_6 优化rag应用
- 优化检索效果
-
- 增加召回检索的片段,每次多检索出几个,然后使用ragas进行量化评估
- 给大模型结构更清晰的内容,推荐使用md文档
- rag应用
- 常见问题及改进策略
-
- 文档解析与切片阶段
其中转md文档可以使用百炼idp, 然后还可以用大模型再进行润色 - 切片向量化与存储阶段:
选择合适的embedding模型与向量数据库 - 检索召回阶段
实战
- 文档解析与切片阶段
-
-
- 提取标签
当然,在实际使用时,还需要在建立索引阶段,将文档切片向量加上对应的标签存入向量数据库,才能在检索时使用向量 + 标量的联合检索。 - 使用rerank模型进行片段重排
- 提取标签
-
-
- 生成答案阶段
- 生成答案阶段
2_6 用插件扩展答疑机器人的能力边界
- agent运行机制
- 构建单个agent步骤
-
- 创建好工具函数
- 通过百炼Assistant API进行集成这些工具函数
- 构建多agent
-
- 组成:
Router Agent: 根据用户的输入内容,判断要将任务分发给哪个Agent。
执行工具函数的Agent: 根据Router Agent分发的任务,执行属于自己的工具函数。
Summary Agent: 根据用户的输入,以及执行工具函数的Agent的输出,生成总结并返回给用户。 - Router Agent:也用Assistant API进行创建
- 执行工具函数的agent
- Summary Agent
- 组成:
2_7 大模型RAG内容安全合规检查
- 涉及内容:敏感信息、机密信息、幻觉错误信息
- 涉及阶段
- 输入输出审核,使用阿里云内容安全服务:面向大语言模型的文本审核PLUS服务_内容安全(Content Moderation)-阿里云帮助中心
如果是私域内容,则进行词库定制 - 知识库召回片段过滤
- 应用服务安全:应用部署、访问、数据传输和存储等
2_7: 通过微调提升模型的准确度与效率
- 微调意义:更换模型,成本更低、速度更快,准确度更高
- 从调整目标参数的规模维度,可以将模型微调分为两大类,分别是全参微调与高效微调。
- LoRA:LoRA微调是一种效果与全参微调接近,并且最通用的高效微调方法之一
- 数据集
其中灵🐴 相当于是构建训练集 - 使用swift框架
-
- 下载模型文件
- 框架介绍:该框架支持350+ LLM和90+ MLLM(多模态大模型)的训练(预训练、微调、对齐)、推理、评测和部署
- 进行模型推理:可以对比前后指标
- 进行模型评测
- 进行模型微调
- 微调后进行模型合并,两种方式如下
-
-
- 将基础模型与微调模型融合为一个模型后调用
- 在调用时动态加载微调模型。
-
- 微调前注意事项:
- 问题:
2_9 部署模型生产环境中
- 使用 vLLM :vLLM 是一种专门用于加速大模型推理的部署工具。它支持多模型并行处理,并提供了丰富的 API 接口
- 使用云部署:
-
- 使用ecs:结合vLLM
- 使用FC:更适合轻量化
- 使用PAI
- 使用百炼:https://help.aliyun.com/zh/model-studio/user-guide/model-deployment
- 模型部署需要满足的场景:
2_10 生产实践
1. 功能性需求
- 性能指标
- 性能优化
-
- 更快的处理请求
- 通过上下文缓存或者批处理减少大模型处理请求数和运算量
- 减少tokens输入输出
- 并行化处理
- 不要所有东西都依赖大模型
- 更快的处理请求
- 用户感知优化
-
- 流式输出
- 分块处理
- 展示任务进度
- 完善错误处理机制
- 提供反馈入口
- 成本优化
- 云上部署成本优化
-
- 选择规格
- 选择计费方式
- 选择规格
- 稳定性
-
- 降低资源消耗
- 自动扩缩容
- 评测基线管理
- 监控告警,trace链路
- 容灾设计
- 内容安全
- 应用安全