一文带你快速入门:大模型工作流都在用的RAG和GraphRAG技术

本文较长建议点赞收藏。更多AI大模型开发 学习视频/籽料/面试题 可参考>>Github<<

RAG (Retrieval - Augmented Generation,检索增强生成 )技术最早可追溯至2020年被正式提出。如今,伴随大模型技术的飞速迭代与应用场景的持续拓展,RAG技术已经深度融入大模型工作流,成为一种被广泛认可且极具影响力的范式。

大厂们也推出了一系列大模型应用融入了知识库,如IMA、飞书这些产品。

腾讯的 ima 个人知识库

字节的飞书知识问答

那么,这些产品都采用的 RAG 技术,背后的原理是什么?假如牛马被老板要求要完成建立公司内部知识库系统(当然最好没有,手动狗头),该如何完成呢?

在这篇文章中,我们会详细介绍RAG的技术原理,并介绍最近流行的结合知识图谱的 RAG 构建。


RAG整体框架

RAG 本质上是一个集成了两个关键组件的混合模型

  1. 从各种文件构建知识向量库
  2. 理解用户需求,在知识向量库里进行检索,最终生成准确而且上下文丰富的响应。

下面我们分两模块介绍。

RAG知识库构建

构建RAG知识库工作流如图所示:

为构建让大模型可以检索的知识库,首先把各种类型的文件转化为texts格式。

这里 texts 不一定是 txt 格式,也可以是 md 格式、json 格式,主要是为了方便后续进行分块为Chunks

分块后的 Chunks 进一步嵌入文本块 转换为携带语义信息的数值向量 。最终将嵌入储存保存在向量数据库中,以便在用户查询中快速检索。

RAG检索回答

这一模块是为了让大模型理解用户提问,最终生成可信的带有上下文的回复。

输入为用户的提问,类似的,大模型把该提问文本转化为嵌入向量,再到上一步构建的知识向量库里进行检索。

最终找到几段匹配度(如余弦相似度)高的回答,再利用Rerank模型,匹配度高的答案优先选择,结合指导大模型回答的提示词(prompt,可以为指导大模型回复的语气),最终,大模型回答给用户基于知识库检索的答案。


知识图谱+RAG(图检索增强生成)

传统 RAG 无法理解复杂实体关系,因此,假如用户查询涉及多个文档和复杂实体,传统 RAG 通常回答单个独立实体,而不是整体响应,无法满足用户需要。

知识图谱是通过节点(实体)和边(关系) 构建的图结构,能够表达复杂的知识和实体间的关系。该结构可以让模型更好地捕获不同实体之间的关系 ,并且,基于图结构进行检索,可以显著地提高检索效率,减少响应时间

接下来我们简单介绍一下知识图谱相关概念,最后介绍一下如何将知识图谱、RAG 与大模型结合。

知识图谱相关概念

知识图谱使用图论来存储、映射和查询数据关系。它由节点、边(或关系)和属性组成,其中:

  • 节点(Nodes)代表实体,如人、企业或任何数据项。
  • 边(Edges)或关系(relationships) :连接节点,并说明实体之间的关联。
  • 属性(Properties):提供有关节点和关系的额外信息。

以 "电影产业" 领域为例,构建一个简单的知识图谱示例:

diff 复制代码
- 节点(实体):
  - 节点 1:《流浪地球》(实体类型:电影)
  - 节点 2:郭帆(实体类型:导演)
  - 节点 3:吴京(实体类型:演员)
  - 节点 4:科幻片(实体类型:电影类型)
- 边(关系):
  - 节点 2 → 节点 1:边标签为 "执导"(表示郭帆执导了《流浪地球》)
  - 节点 3 → 节点 1:边标签为 "主演"(表示吴京主演了《流浪地球》)
  - 节点 1 → 节点 4:边标签为 "属于"(表示《流浪地球》属于科幻片类型)
- 属性:
  - 节点 1 的属性:上映时间 = 2019 年,票房 = 46.86 亿元(提供电影的额外信息)
  - 边 "执导" 的属性:合作次数 = 2(表示郭帆与《流浪地球》制作团队的合作次数)

最后构建知识图谱如下:

图中清晰展现了该知识图谱里的节点、边、属性。小伙伴们可以试试结合自己的业务场景构建专属的领域知识图谱。

将知识图谱、RAG与大模型结合

一方面,知识图谱可以与RAG结合到大模型,另一方面,大模型也可以促进知识图谱的构建

如Graphgen团队就尝试了让大模型构建知识图谱。

该模型首先将原始文档分割成语义连贯的小片段,接着使用大模型从片段中识别和提取实体及其关系,最后将不同片段中的相同实体或关系的描述自动合并形成知识图谱

而知识图谱可以与RAG结合到大模型,目前微软提出的GraphRAG[1]和香港大学提出的LightRAG[2]是当下非常热门的框架。下面我们以LightRAG框架为例进行介绍。

首先运用大模型对文档进行分析,识别并提取其中的实体,这些提取出的实体作为节点,关系作为边,共同构建起知识图谱。为优化图谱,会进行去重操作,去除重复实体。

比如从与 "Beekeeper(养蜂人)" 相关的文本段落里找出 "Beekeeper""Bee(蜜蜂)" 等实体,同时明确它们之间的关系,例如 "管理(Manage)" 关系。

在检索阶段,采用双层检索机制。完成检索后,将获取的实体、关系以及原始文本等信息输入到 LLM 中,系统把用户查询与多源检索结果相整合,生成贴合查询语境的答案。

如 "Beekeeper""Honey Bee(蜜蜂)";高层检索则涵盖更宽泛的主题,像 "农业""生产" 等。

此外,当有新文档加入时,系统会依据之前构建知识图谱的流程处理新文档,再将新生成的图谱数据与现有图谱合并,实现增量更新,让系统能适应动态变化的数据环境,始终基于最新知识进行检索和答案生成 。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

都在这>>Github<<

相关推荐
uncle_ll2 分钟前
RAG 系统性能跃迁:LlamaIndex 索引优化实战指南
llm·rag·检索·llamaindex
孟健3 小时前
吹爆 OpenClaw!一个人 +6 个 AI 助理,我再也不想招人了
openai·agent·ai编程
周末程序猿3 小时前
再谈Agent Loop:大模型 “能做事” 的核心机制
agent·ai编程
七夜zippoe4 小时前
脉向AI|当豆包手机遭遇“全网封杀“:GUI Agent是通向AGI的必经之路吗?
人工智能·ai·智能手机·agent·gui
prog_61034 小时前
【笔记】思路分享:各种大模型免费当agent后台
笔记·大语言模型·agent·cursor
SoleMotive.5 小时前
一个准程序员的健身日志:用算法调试我的增肌计划
python·程序员·健身·职业转型
Bruk.Liu5 小时前
(LangChain 实战14):基于 ChatMessageHistory 自定义实现对话记忆功能
人工智能·python·langchain·agent
无名修道院6 小时前
AI大模型微调-LLM、Token、生成与推理详解
llm·token·ai大模型应用开发
万岳科技程序员小金8 小时前
多商户商城系统源码 + APP/小程序开发:技术架构与应用解
程序员·开源·源码·多商户商城系统源码·多商户商城小程序·多商户商城app开发·多商户商城平台开发
玄同7659 小时前
从 0 到 1:用 Python 开发 MCP 工具,让 AI 智能体拥有 “超能力”
开发语言·人工智能·python·agent·ai编程·mcp·trae