0前言
最近刷 B 站对于 rag 的看法有了变化,现将 B 站老师的讲解做下记录,主要记录 rag 的主要工作流程及 rag 实现大模型的难点分析。
1RAG 大致的工作流程
文档切割存储流程
1大量的文档文本
↓
2文档切割,分割 chunks(段落)
↓
3chunks embding 转向量
↓
4存储向量数据库(向量数据库加速检索)
用户提问及检索过程
1用户发起提问,提问问题 request
↓
2request embding 向量化
↓
3向量问题从向量数据库检索
↓
4检索完成返回检索结果 context
大模型回答阶段
1context 和提问问题结合,生成提示词 Prompt
↓
2提示词交给大模型回复
↓
3大模型回复 response,展示给用户
2RAG 的难点分析
虽然基于经典的 rag 流程,我们可以很快地开发大模型应用,但是实际上其中的注意点及难点不少,细节不好达不到上线的要求。
文档切割存储流程难点
- 文档切割:文档很多如(ppt、pdf、网页、word、csv)等等,文档格式不同,所以文档在读取及处理阶段,本身就是很难的一个问题;
- 合理拆分 chunks:如何将文档拆分成合理 chunks,如按标题、段落、分隔符等等,需要酌情分析;
- chunks 如何合理地 embding:众多的 embding 技术选择,以及如何选择合适的向量数据库。
用户提问及检索过程
- 用户提问的问题是否需要进一步处理(如对问题扩充和清理等等);
- 拿到问题如何合理地检索:检索的效率和准确性是非常重要的,搜索结果不准确,大模型就回答不了正确问题;
- 拿到的 context 很多,可能有很多无关内容或者很多的问题,增加 ranking 阶段,先检索再排序。
大模型回答阶段
- 如何合理地编排 prompt:好的 prompt 大模型可以更好更准确地生成;
- 选择大模型:如开源大模型微调、通用大模型;
- 拿到的 response 需要进行筛选和检查,避免一些违规,有些回复不满足要求则需要重新检索返回。
| 阶段 | 核心难点 |
| 文档切割存储 | 多格式文档读取、合理分块策略、embedding 与向量库选型 |
| 提问与检索 | 问题处理(扩充/清理)、检索效率与准确性、rerank 排序 |
| 大模型回答 | prompt 编排、模型选型、回复筛选与合规检查 |