一、RAG的核心:检索+生成
用户向 LLM 提问,RAG 从外部数据源检索相关信息,并将检索到的信息和问题给到到 LLM 提示中,LLM 最后给出答案。包括三个关键步骤:
Indexing,数据索引的构建,存储知识
Retrieval,检索:从数据源中,找到有用的部份,给模型参考
Generation,文本生成:结合用户的提问和检索到的知识,让模型生成有用的答案
二、RAG能解决的问题
减少幻觉:让模型基于给定的知识内容执行,减少幻觉
提高时效:可更新或定制知识
数据安全:作为外挂知识库,不需要将数据放到模型中,并且可设定访问权限
成本优势:相比微调或预训练,能节省成本
三、RAG的几种改进与变体
1)传统RAG的局限:快速检索相似的文本内容,但难以捕捉复杂的语义关系
将文档集合进行分割和处理。
使用嵌入模型将文本转换为向量形式。
将文本向量存储在向量数据库中。
将用户查询转换为向量,并在向量数据库中检索最相关的文档片段。
结合检索到的文档片段和原始查询,生成最终的回答。
2)Self-RAG:通过自我反思能力,调整自身的检索和生成结果,提高准确性
从文档中检索相关信息片段。
反思评估检索到的片段与查询的相关性。
根据反思评分,选择最相关的片段。
将选定的片段提供给语言模型。
语言模型结合查询和选定片段生成回答。
3)CRAG:引入检索评估和知识精炼机制
引入检索评估机制,评估检索到的文档的相关性。
知识精炼,筛选和整合检索到的信息。
将精炼后的信息提供给语言模型。
语言模型结合查询和精炼信息生成回答。
4)GraphRAG:利用知识图谱捕捉实体间复杂关系,特别适用于处理关系丰富的数据
场景:假设我们正在开发一个智能问答系统,用于回答有关历史人物及其相互关系的问题。
问题:用户问:“亚历山大大帝的将军是谁,他们共同参与了哪些战役?”
传统RAG的挑战:
传统RAG可能在检索阶段找到关于亚历山大大帝及其将军的文档,但这些文档可能只包含部分信息,或者信息分散在不同的文档中。
它可能难以从检索到的文本中提取并整合所有相关信息,尤其是当这些信息需要跨越多个文档和上下文时。
GraphRAG的解决方案:
构建知识图谱:GraphRAG首先从历史文献和资料中提取实体(如亚历山大大帝、他的将军们)和关系(如指挥关系、参与战役),构建一个知识图谱。
图查询:用户的查询被转换为图查询,系统在知识图谱中搜索与亚历山大大帝相关的将军节点,以及与这些节点相连的战役节点。
提取子图:系统不仅检索到单独的节点,还检索到节点间的连接关系,形成一个子图,这个子图包含了所有相关的将军和战役信息。
生成回答:GraphRAG利用这个子图作为上下文,指导语言模型生成一个详细的回答,这个回答不仅包括将军的名字,还包括他们共同参与的战役。
通过知识图谱的使用,能够捕捉和表示实体间的复杂关系,整合和检索分散在不同文档中的信息。缺点是包括构建和维护知识图谱的高成本以及对复杂图结构管理的技术挑战,在处理抽象概念时也存在困难。
5)HybridRAG:结合知识图谱(GraphRAG)和基于向量的检索(VectorRAG)技术来增强问答系统的信息提取能力
信息检索:从外部文档中检索与查询相关的信息,使用向量数据库进行广泛、基于相似性的检索(VectorRAG部分),同时从知识图谱中检索结构化、关系丰富的上下文数据(GraphRAG部分)。
上下文整合:将VectorRAG提供的广泛信息检索结果与GraphRAG提供的精确关系数据相结合,形成统一的上下文。
生成回答:利用大型语言模型(LLM)根据整合后的上下文生成最终的回答。
HybridRAG在忠实度和答案相关性方面表现优异,但可能会在上下文精度上有所折衷,因为整合的上下文可能包含与真实情况不完全一致的额外内容。
6)WeKnow-RAG:结合网络搜索和知识图谱,强化了对特定领域知识的检索和应用
信息检索:利用网络搜索引擎和知识图谱从互联网上检索相关信息。
知识整合:将检索到的信息与知识图谱中的结构化知识相结合。
上下文理解:分析用户的查询,理解其背后的意图和需要的信息类型。
生成回答:结合检索到的信息和知识图谱数据,生成准确、详细的回答。
自适应调整:根据用户的反馈和查询的复杂性,自适应地调整检索和生成策略。
WeKnow-RAG通过结合网络搜索和知识图谱强化领域特定知识的检索,提高了回答的准确性和相关性,但可能面临计算成本高、系统维护复杂和响应延迟的挑战。
相关论文:
https://arxiv.org/html/2408.04948v1
https://arxiv.org/abs/2408.07611
本文由
mmiannote
提供,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2024年08月21日