一、技术架构
我们实践的RAG技术架构主要可分为一底座三中心,分别是数据管理底座、模型中心、多引擎中心、召回策略中心。
在工程架构上,每个子系统按照能力划分子Modular,在上层配置调度策略并统一调度,符合Modular RAG的技术规范;
在检索技术上,围绕着检索做了大量的索引降噪、多路召回、知识去重、重排等操作,符合Advanced RAG的技术规范。
1、知识库基础数据底座
基础数据底座中包含数据生产和数据加工的能力。
数据生产中有数据版本、血缘管理、引擎同步等能力,
知识加工主要包含数据切片、索引优化等能力
2、模型中心
模型中心主要包含生成式大模型和理解式小模型。
生成式大模型主要提供:
- 引用式生成的能力,通过检索到的知识和用户的问题,做增强生成;
- query改写能力,理解用户真实意图,并改写或泛化成适合知识库检索的query;
- Text2Cypher能力,把知识库元数据和用户的问题,转成图谱语言,支撑上层业务的图谱检索;
- NL2SQL能力,如果业务中有需要访问数据库来获取具体数据的场景,可提供此能力;
理解式小模型主要提供:
- 文档切块能力,负责把大块的知识切分成小的片段;
- embedding能力,把知识库元数据和用户的问题转成向量;
- rerank能力,负责把多路召回的数据;
3、多引擎中心
多引擎中心包含向量、分词以及图谱引擎,在引擎中心提供多种检索方式,以提高知识的命中率。
4、召回策略中心
召回策略中心在整个RAG建设中起到调度的作用,在这里去执行query改写、多路召回、检索后置处理以及大模型引用式生成答案。
基于上面的一底座两中心架构,每个子能力模块化,并在上层配置调度策略,符合Modular RAG的技术规范。
二、RAG建设路径
RAG整体业务链路主要分为5大步骤:知识生产与加工、query改写、数据召回、后置处理以及大模型生产。
1、第一阶段-可运行
第一阶段保证系统可用。
1.1 知识生产与加工
先按照固定字符切分,预留冗余字符来保证语义不被截断。
1.2 query改写
结合上下文,先使用大模型的理解能力,突出用户意图,以便更好的回答用户问题。
1.3 数据召回
第一步可以先实现向量召回,多路召回中,向量召回的比重是最大的,也是最关键的一种召回方式,需要找一个和自己业务比较契合的embedding模型和向量数据库。
1.4 数据后置处理
因为数据召回只有向量召回,这一步可以只使用向量近似得分做排序,设置符合业务预期的阈值筛选数据。并把筛选后的知识数据提供给大模型,生成答案。
2、第二阶段-提效果
第二阶段的主要目标是提升RAG的检索效果。
2.1 知识生产与加工
- 基于固定字符的知识切分,虽然预留了冗余字符,但还是会出现知识内聚性被破坏的现象,此时需要有一个基于语义切分知识的模型,根据语义切分,上下文联系比较紧密的句子拆分成一条知识。
- 根据数据检索的情况,分析索引噪音,指定降噪措施。
2.2 query改写
- 明确用户意图。
- 探索RAG-Fusion模式,根据用户的query生成多个相似query,多相似query检索数据。
- 多任务query抽取,把一个query任务,拆分成多个子query进行检索数据。
2.3 数据召回
- 基于向量检索的基础上,根据业务场景,探索分词、图谱的能力,甚至有些业务还需要NL2SQL的能力。
2.4 数据后置处理
- 数据去重合并。
- 多路召回结果的重排能力建设,设置统一的排序筛选标准。
3、第三阶段-高扩展
第三阶段的主要目标是在工程上提升可扩展性,各个业务功能做模块化设计,通过召回策略配置中心,配置出业务所需要的RAG流程。