Knowledge Pyramid Construction for Multi-Level Retrieval-Augmented Generation
标题翻译:面向多层次检索增强生成的知识金字塔构建
1. 内容介绍
1.1. 现状
通用的LLM无法满足某个专业或者个性化知识的具体需求,目前一个直接的解决方案是对LLM进行有监督的微调,但这种方式会造成LLM对一般知识的灾难性遗忘,容易引发幻觉。检索增强生成(Retrieval-Augmented Generation,RAG) 是一种增强大型语言模型能力的方法,它通过结合信息检索和生成技术来提升模型在回答问题时的准确性和相关性。
1.2. RAG
1.2.1. 具体流程
- 检索阶段:当用户提出一个问题时,系统首先从外部知识库(例如文档、数据库等)中检索与问题相关的信息。这些信息通常以文本片段(chunks)的形式返回
- 生成阶段:检索到的信息被作为上下文(context)添加到提示(prompt)中,然后输入到语言模型中,模型根据这些上下文生成答案
1.2.2. 目前缺点
- 过于关注召回率(Recall,TP/(TP+FP))而忽视精确度(Precision,TP/(TP+FN)):当前的RAG主要通过引入更多外部知识来即找到更多可能相关的信息,但对检索结果的精确度关注不足。传统的RAG依赖无结构的文本片段,这些片段通常是通过简单分割文档得到的,缺乏组织性,即使引入了知识图谱(KGs)或本体(Ontologies),它们也主要用于增加信息覆盖,而不是优化精确度
- 信息冗余和噪声:检索到的信息可能包含冗余或不相关的内容,导致上下文过长或噪声过多,影响模型推理性能
- 单一知识表示的局限性:传统的RAG通常依赖单一类型的知识表示(如纯文本或知识图谱),无法充分利用不同知识表示形式的优势
- 无法有效处理多源信息整合:当前方法在需要从多个来源整合信息时表现不佳,尤其是在领域特定问题中,单一查询难以满足密集知识需求
- 金字塔更高层包含更具体更结构化的信息,提供更准确的领域特定回答 – 精度友好
- 金字塔较低层更倾向于具有更灵活的定义,并可以存储更丰富的信息,尽管可能会牺牲精度 – 召回友好
1.3. 研究问题和目标
作者的目标是在RAG框架中实现精确度和召回率之间的更好平衡,希望达到以下效果:
- 提升检索的精确度:通过利用更高层次、更结构化的知识(如本体),优先返回更准确的信息,而不是仅仅增加信息量
- 减少冗余和噪声:通过知识压缩(condensation)去除不必要的重复信息,提高检索效率和答案质量
- 增强多源知识整合能力:设计一个多层次框架,使不同类型的知识(本体、知识图谱、原始文本)能够协同工作,满足复杂查询需求
- 动态更新知识库:解决传统本体定义需要大量人工干预的问题,实现知识库的自动化扩展和优化
2. 方法–PolyRAG
2.1. 概览
多层次知识金字塔(Knowledge Pyramid)和相应的多级查询策略
知识金字塔的构建:三层,从上到下是
- 本体层O:提供高度结构化的语义框架,由专家定义的模式s和实例i组成,具有高精确度
- 知识图谱层K:包含从数据中提取的实体及其关系,形成丰富的语义网络,平衡精确度和召回率
- 原始文本层T:由未结构化的文本数据组成,覆盖范围广,利于提升召回率
2.2. 各层提示函数
本体层:fins(c, a; p)
- 通过提示LLM识别特定关系,从原始文本层T中提取实例,逐步填充本体实例
- 输出:实例集合Oi
知识图谱层:fkg(p) = fdis(fent(fpar(p)), frel(fpar(p)))
-
通过多步提示,逐步提炼文本中的结构化关系
-
输出:知识图谱三元组(实体-关系-实体)的集合K
-
fpar(p):将段落p的事实转化为简短、不含代词的短语
-
fent(fpar(p)):提取短语中的名词实体
-
frel(fpar(p)):确定实体间关系
-
fdis(fent(fpar(p)), frel(fpar(p))):消除歧义和重复,生成标准三元组
-
2.3. 层次之间的相互协作
这些层次通过跨层增强和跨层过滤相互协作
2.3.1. 知识补全
从较低层次(如知识图谱和原始文本)中识别重要概念并补充到本体层,解决本体覆盖不足的问题,目的是增强召回率
知识补全示例:
比如这是一个本体层结构,专家定义了初始的模式:类Staff和属性department等,但覆盖有限,缺少一些关键概念。
而通过分析知识图谱KG层,发现关系“past_affiliations”频繁出现,但本体层中缺失,就从KG层提取并添加到本体层(跨层交互),更新后的本体模式就可能剪掉原来的department,新增一些新的概念,提高了本体层的全面性
2.3.2. 知识压缩
利用本体层的结构化信息,专注于最相关的三元组(余弦相似度),过滤知识图谱中的冗余三元组,增强紧凑性,目的是提升精确度
知识压缩的提示词函数
- 移除重复或语义相同的关系,将相似关系标准化为单一表达;
- 对本体层的所有节点重复上述过程,系统性地遍历并精简知识图谱KG层
知识压缩可视化示例
最左图显示了知识图谱KG层和本体层在语义空间中的初始分布;中间图红色的这些是本体层缺少的相关信息(需要进行知识补全);然后再进行知识压缩,移除冗余的三元组,分布更紧凑
(文字示例:如“Prof. A works in Z”和“Prof. A is with Z institute”合并为“Prof. A, is_a_member_of, Z”)
2.4. 多级查询策略
多级查询采用瀑布模型进行检索,从金字塔顶部(本体层)开始,逐步向下查询,直到获得满意答案
2.4.1. 多级查询算法
生成SPARQL查询
在本体Ontology层执行查询
如果本体Ontology层无结果
在知识图谱KG层检索三元组
判断三元组是否足够
如果足够,返回三元组作为结果
如果不足,在原始文本Raw Text层检索
返回最终结果
2.4.2. 多级查询概览
- 本体层查询:使用SPARQL语言精确检索,如果找到答案则返回
- 知识图谱层查询:基于嵌入检索相关三元组,并通过LLM判断是否足以回答问题
- 原始文本层查询:如果前两层无法满足,则使用NaiveRAG方法从文本中检索
这种策略优先利用高精确度的结构化知识,必要时才扩展到更广泛但较松散的知识源,这种从高到低的优先级检索减少了噪声和计算成本
比如图中上面的Q1能直接在本体层查到就直接返回;下面的Q2在本体层查询不到就去KG层查相关三元组,得到答案后返回
2.4.3. 多级查询提示词函数
-
在本体层查询的提示函数:
- 根据问题LLM生成SPARQL语言查询
- 查询精确,而且是直接知识
-
知识图谱层的查询提示函数,有点类似于自我一致性
3. 实验部分
3.1. 实验配置
-
数据集:(基于这两个数据集构建了知识金字塔)
- AcadChall:自己建的关于某大学的详细信息,包含多选题(MCQ)和多答案题(MAQ)
- FiQA:关于金融方面的,开放式QA对,问题多样,测试生成能力
-
评估指标
- 对于MCQ和MAQ:
- Precision(精确度):正确答案占预测答案的比例
- Recall(召回率):正确答案占所有真实答案的比例
- F1 Score:Precision和Recall的调和平均数
- 对于开放式问题:
- BLEU:衡量生成答案与参考答案的词重叠(BLEU-2和BLEU-4)
- BERT Similarity:基于MiniLM嵌入计算语义相似度
- HitRate (HR):衡量查询在本体层或知识图谱层解决的比例,反映结构化知识的利用率
- 对于MCQ和MAQ:
3.2. 实验结果
3.2.1. 结果分析
数据显示,在精确率、召回率和F1值等核心评估指标上,PolyRAG在所有实验配置中均持续优于其他方法,而且与其他方法相比,PolyRAG在精确率与召回率之间展现出更优的平衡性。
显著的性能提升可能源于PolyRAG对层级化知识金字塔(尤其是高层结构)的有效利用。
3.2.2. 消融实验
主要研究知识补全和知识压缩的有效性和各层的作用
有效性结果:知识补全和知识压缩能互补优势,增强了知识表示的丰富性和紧凑性,语言模型回答更准确高效
层级研究–单层结果:
- Ontology本体层:高Precision,但Recall低,本体层在不同骨干网络中提高精度方面发挥着重要作用
- KG知识图谱层:平衡Precision和Recal
- Raw Text原始文本层:高Recall,但Precision低
不同知识层能解决的查询比例
Ontology本体层和KG知识图谱层解决至少28.5%的查询,结构化减少了对Raw Text原始文本的依赖,提高了效率
通过增加更多结构化知识(增加KG三元组(从top-5到top-10))丰富上下文,能够使LLM更有效地利用这些信息
4. 结论
4.1. 总结
本研究提出了一个整合多种知识表示形式构建知识库的框架PolyRAG,并采用多层次查询方法实现知识金字塔在领域问答中的应用。在此过程中,重点解决了两个关键问题:特定领域知识优先级判定和检索环境中的噪声干扰。
4.2. 限制
- 虽然提出了跨层增强的概念,但最初始的本体层构建还是需要人工
- 数据集规模和多样性有限
- 整个框架构建的计算复杂度未知