一、前言
大模型技术在经过一年多的飞速迭代和发展,以 ChatGPT 为代表的大语言模型(LLM)凭借其强大的文本生成能力,在各个领域掀起了一场 AI 应用的革命。然而,狂欢过后,人们逐渐意识到 LLM 并非无所不能。由于训练数据的限制,LLM 常常会“一本正经地胡说八道”,给出过时、不准确甚至完全虚构的信息。
为了解决这个问题,检索增强生成(RAG)技术应运而生。RAG 就像为 LLM 配备了一个外部“知识库”,让 AI 在回答问题时不再局限于自身的“记忆”,而是能够参考最新的、更全面的信息。
然而,传统的 RAG 技术仍然依赖于文本匹配,无法真正理解文本背后的语义和逻辑关系,在处理复杂查询、捕捉细微差别等方面依然存在不足。想象一下,如果只是把一堆文件扔给学生,而不教给他们如何理解和分析,他们真的能找到问题的答案吗?
为了打破这一瓶颈, Graph RAG 应运而生。Graph RAG 将知识图谱(KG)引入 RAG 体系,就像为 AI 构建了一张清晰的“知识地图”。知识图谱能够表达实体之间的复杂关系,例如父子关系、朋友关系、因果关系等等,从而让 AI 不仅能够“查到”信息,更能够“理解”信息之间的逻辑,给出更准确、更智能的答案。
从依赖自身记忆到检索外部信息,再到利用知识图谱进行深度理解,Graph RAG 代表着 AI 问答技术的一次重大飞跃。它将如何赋能 LLM,开启人机交互的新纪元?让我们拭目以待!
二、RAG:让 AI 学会“查资料”
传统的 LLM 就像一个博览群书的学者,知识储备丰富,但缺点是“学识”停留在某个时间节点,容易“跟不上时代”。这就好像,你问一个古代的学者“什么是互联网”,他肯定是一脸懵圈的。😂
为了解决这个问题,专家们想出了一个办法:让 AI 也学会“查资料”!这就是 RAG 技术的核心思想。
简单来说,RAG 就像为 LLM 配备了一个实时更新的搜索引擎,让 AI 在回答问题时不再局限于自身的“记忆”,而是能够随时查阅最新的资料。
具体是怎么做的呢?
第一步,检索信息。 当用户提出问题时,RAG 系统会先从海量的外部知识库中,找出与问题相关的文档或片段。这就好比你在搜索引擎里输入关键词,然后找到一堆相关的网页。
第二步,生成答案。 找到相关信息后,RAG 系统会把这些信息“喂”给 LLM,辅助其生成更准确、更全面的答案。这就好比你参考了搜索结果,再加上自己的理解,最终形成对问题的答案。
有了 RAG 技术,LLM 就不再是那个“两耳不闻窗外事”的学者,而是变成了一个“学富五车、与时俱进”的知识达人!
三、RAG 真的完美无缺吗?
虽然 RAG 让 AI 学会了“查资料”,但它也并非完美无缺。就像学生查资料也会遇到难题一样,RAG 在实际应用中也面临着一些挑战:
首先,信息检索的准确性问题。 RAG 需要从海量的外部知识库中找到最相关的资料,但这可不是一件容易的事!不同的知识库可能格式各异、内容质量参差不齐,就像你要在一堆乱七八糟的书籍和文件中找到想要的信息一样困难。
其次,处理复杂查询的能力不足。 有些问题需要结合上下文才能理解,例如“苹果公司的创始人是谁”和“苹果多少钱一斤”,这两个“苹果”可不是一回事儿。传统的 RAG 技术主要依赖关键词匹配,对这类需要深度语义理解的复杂查询,就显得力不从心了。
最后,检索效率也是一个问题。 面对海量的知识库,如何快速找到最相关的信息,是 RAG 系统需要解决的关键问题。如果检索速度太慢,用户体验就会大打折扣,就像你在图书馆里等了半天,结果图书管理员告诉你“这本书借走了”,那肯定很郁闷吧。😔
为了克服这些局限性,研究人员一直在不断改进 RAG 技术,例如开发更先进的检索算法、优化知识库的组织结构等等。而 Graph RAG 的出现,则为解决这些难题提供了一个全新的思路。
四、Graph RAG:当 AI 拥有了“知识地图”
前面我们说到,传统的 RAG 技术让 AI 学会了“查资料”。但实际上,RAG 并非只是简单的关键词匹配,它通常会使用更复杂的语义搜索技术,例如基于 Transformer 的语义匹配模型,来理解用户查询的意图,并找到语义相关的文档,而不是仅仅依赖于关键词的表面匹配。
但是,传统的 RAG 仍然难以真正理解文本背后的复杂逻辑和关系。为了解决这个问题,科学家们想出了一个更厉害的办法:把知识图谱(KG)引入 RAG 系统!
这是什么概念呢?想象一下,以前 AI 查资料,就像在茫茫大海中捞针,需要花费很大力气才能找到真正想要的信息。而现在,知识图谱就像一张清晰的“地图”,把各种信息和它们之间的关系都标注出来,AI 就能“按图索骥”,更快、更准确地找到目标信息了。
举个例子,当用户询问“苹果公司的创始人是哪个大学毕业的?”,传统的 RAG 系统可能会被“苹果”这个词迷惑,检索出一些关于水果的信息。而 Graph RAG 则可以利用知识图谱,准确地识别出“苹果公司”是一个公司实体,“创始人”和“大学”是与之相关联的实体,从而检索出正确的信息,比如“史蒂夫·乔布斯”和“里德学院”。
Graph RAG 建立在 RAG 的基础上,并利用了知识图谱(KG)的优势。这种创新方法由 NebulaGraph 首创,通过集成图数据库,改变了 LLM 解释和响应查询的方式。Graph RAG 的工作原理是将来自知识图谱的结构化数据整合到 LLM 的处理过程中,为模型的回答提供更加细致和信息丰富的基础。
简单来说,Graph RAG 的工作原理就是:先分析用户的查询,在知识图谱中找到相关的实体和关系,然后将这些信息“翻译”成 LLM 能够理解的语言,最后再生成答案。
知识图谱是对现实世界实体及其关系的结构化表示。它们由两个主要部分组成:节点和边。节点表示独立的实体,例如人物、地点、物体或概念。而边则表示节点之间的关系,表示它们如何相互关联。
这种结构使 LLM 能够访问精确且与上下文相关的的数据,从而极大地提高了其生成信息丰富答案的能力。Graph RAG 的创新之处在于它将图数据库与 LLM 相结合,在生成答案之前丰富了模型的上下文。
目前,已经有一些公司推出了自己的 Graph RAG 平台,例如 Ontotext、NebulaGraph 和 Neo4j 等等,这些平台都提供了强大的图数据库和 RAG 工具,可以帮助开发者快速构建自己的 AI 知识问答系统。
五、 RAG:AI 的未来,远不止于此!
Graph RAG 的出现,为 AI 领域打开了新的大门。它不仅仅是一种技术,更是一种全新的思考方式,将深刻地改变 AI 与世界互动的方式。
未来,我们可以预见 Graph RAG 将在以下几个方面持续进化,释放更大的潜力:
1、更强大的推理能力:
未来的 LLM 将会越来越聪明,能够理解更复杂的逻辑和关系。而 Graph RAG 就像给 LLM 配备了一副“透视镜”,让 AI 能够看透事物背后的本质,进行更深入的推理和分析。例如,在医疗诊断领域,Graph RAG 可以帮助 AI 整合患者的病史、家族遗传信息、最新的医学研究成果等信息,从而做出更精准的诊断。
2、更动态、更无缝的知识更新:
传统的知识图谱更新起来比较麻烦,需要人工参与。而未来,Graph RAG 将会与 LLM 更加紧密地结合,实现知识的自动更新和完善。例如,LLM 可以从海量的文本数据中自动识别新的实体和关系,并将其添加到知识图谱中,让 AI 的“知识地图”越来越完善。
3、更广泛的应用场景:
随着 AI 计算能力的提升和成本的下降,Graph RAG 将会应用于更广泛的领域,例如金融风控、智能客服、个性化推荐等等。例如,在电商领域,Graph RAG 可以根据用户的购买历史、浏览记录、兴趣爱好等信息,构建用户的个性化知识图谱,从而推荐更精准的商品。
4、更深入的跨领域融合:
未来的 LLM 将会拥有更广泛的知识,而 Graph RAG 可以帮助 AI 将不同领域的知识进行整合和关联,从而产生新的洞察和发现。例如,将心理学知识与网络安全技术相结合,可以设计出更有效的反欺诈系统。
5、更开放的生态系统:
随着 Graph RAG 技术的不断发展,将会出现更多标准化的知识图谱表示和交换格式,不同平台之间的数据将会更加互通,从而推动 Graph RAG 技术的快速发展和应用。
总而言之,Graph RAG 为 AI 的发展指明了新的方向,它将推动 AI 从“数据驱动”走向“知识驱动”,让 AI 真正拥有理解世界、解决问题的能力。
未来,让我们一起见证 Graph RAG 如何改变世界! 🚀
六、实战演练:手把手教你玩转 Graph RAG
说了这么多,你是不是已经迫不及待地想要体验一下 Graph RAG 的魅力了呢?
下面,我们就来一起做一个简单的 Graph RAG demo,以新加坡政府的 Govtech 开发者门户为例,看看如何利用 Graph RAG 技术构建一个智能的产品信息搜索引擎。
6.1、搭建知识图谱
首先,我们需要将 Govtech 开发者门户的产品信息转换成 AI 能够理解的知识图谱。
- 我们可以使用一些图数据库工具,例如 使用 Neo4j Desktop 启动 Neo4j 本地实例,来存储和管理知识图谱。
- 利用一些开源的 LLM 工具和提示工程技巧,我们可以自动地从产品信息文档中提取关键信息,例如产品名称、功能描述、开发团队等等,并将这些信息转换成知识图谱中的节点和关系。以下是一个提示示例:
# 创建知识图谱的说明
## 概述
你的任务是将数据组织成知识图谱。
- **节点**: 表示实体和概念。
- 目标是确保知识图谱简洁易懂,便于广泛使用。## 节点标记
- **一致性**: 对节点使用简洁明了的标签。例如,将任何代表组织的实体标记为“公司”,而不是使用“Facebook”或“Amazon”等具体名称。
- **节点标识符**: 优先使用文本或易于理解的标识符,而不是数字标识符。- **允许的节点标签**: 如果存在特定的允许节点标签,请在此处列出。- **允许的关系类型**: 如果存在特定的允许关系类型,请在此处列出。## 管理数字数据和日期
- 将数字信息直接作为节点的属性。
- **集成日期/数字**: 不要为日期或数字创建单独的节点,而是将它们作为属性附加到相关节点上。
- **属性格式**: 使用键值对格式。
- **避免使用引号**: 不要在属性值中使用转义引号。
- **键命名**: 采用驼峰命名法(camelCase)来命名键,例如 `dateTime`。## 一致性
- **实体一致性**: 确保在不同的提及或引用中对同一实体使用一致的标识。## 遵守准则
必须严格遵守这些说明。不遵守将导致任务终止。
我们使用 CSVLoader 和文档分割技术处理文档,并将提取的信息映射到图谱的节点和关系中。接着,我们通过提取管道处理文档,并将信息存储到 Neo4j 数据库中。
整个过程大约需要一个小时,最终生成一个包含所有提取节点标签的列表。然而,并非所有节点标签都对我们当前的任务有意义或适用。
{"identity": 1040,"labels": ["Feedbackstatus"],"properties": {"id": "Feedback-Success","message": "Sent. Thank you for the feedback!"},"elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1040"
},
{"identity": 1582,"labels": ["Feedbackstatus"],"properties": {"id": "Feedbacksuccess","status": "Sent. Thank you for the feedback!"},"elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1582"
},
{"identity": 1405,"labels": ["Header"],"properties": {"id": "Modalcardhead","class": "sgds-modal-card-head"},"elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1405"
},
{"identity": 1112,"labels": ["Feedbackindicator"],"properties": {"id": "Feedbacksuccess","title": "check","message": "Sent. Thank you for the feedback!"},"elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1112"
...
这个过程就像把一堆散乱的零件组装成一辆完整的汽车一样,需要一定的技术和耐心。
6.2、接入 RAG 系统
知识图谱搭建好之后,我们就可以把它接入 RAG 系统了。
- 我们可以使用一些开源的 RAG 框架,例如 LangChain,来简化 RAG 系统的搭建和部署。
- 通过 LangChain 提供的模板,我们可以轻松地将 Neo4j 图数据库与 LLM 连接起来,实现 Graph RAG 的功能。
6.3、测试和优化
最后,我们需要对 Graph RAG 系统进行测试和优化,确保它能够准确地理解用户的问题,并给出满意的答案。
- 例如,我们可以尝试询问一些关于 Govtech 产品的问题,看看 Graph RAG 系统是否能够给出比传统搜索引擎更准确、更详细的答案。
- 如果 Graph RAG 系统的效果不理想,我们还可以通过调整提示工程的策略、优化知识图谱的结构等方式来改进系统的性能。
为了优化模型,我们需要指定大语言模型 (LLM) 应该提取哪些节点标签。
permissible_nodes_to_extract = ["Aisubfield","Application","Cloudservice","Concept","Digitalsolution","Division","Entity","Feature","Fundinginitiative","Initiative","Link","Location","Organization","Person","Platform","Policy","Program""Resource","Role","Schema","Service","Standard","Technology","Technologyplatform","Technologystack","Webframework","Webresource","Website"
]
我们可以使用 Neo4j Browser 来探索构建好的知识图谱,并不断优化提取和图谱构建方法。
一切准备就绪,让我们尝试以下查询:
问:“请详细介绍一下 AiSay,包括它的开发者、优点、应用领域以及独特之处。”
传统 RAG 的回答:“AiSay 是新加坡政府开发的一款人工智能文档阅读器。它可以自动检测、扫描和理解各种类型的文档,包括手写笔记、印刷文章、多语言文本以及结构化/非结构化文档。与传统的 OCR 系统不同,AiSay 可以处理图像和 PDF 文件等类型的文档,并提供结构化的信息。它结合了 OCR、文档问答技术以及大语言模型来理解上下文并回答问题。AiSay 支持同步和异步调用,可以处理大文件,并可以根据需要进行扩展。它以无服务器的方式托管在云端,因此可以灵活扩展以处理大量数据。AiSay 目前仍在积极开发中,支持安全性和数据分类级别高达“受限/敏感一般” (RESTRICTED/SENSITIVE NORMAL) 的文档。未来将支持更多类型的文档。AiSay 的独特功能包括:能够处理多种文档类型并提供结构化信息、可扩展性强,以及支持安全性和数据分类。”
Graph RAG 的回答:“AiSay 是新加坡政府开发的一款人工智能文档阅读器。它是一个文档解析器,可以提供结构化的信息,并从各种文档中提取信息并将其整合到现有系统中。AiSay 可以自动检测、扫描和理解各种类型的文档,包括手写笔记、印刷文章、多语言文本和结构化/非结构化文档。与传统的 OCR(光学字符识别)系统不同,AiSay 可以处理图像(JPEG、PNG、TFIF)和 PDF 文件等文档类型,并提供结构化信息。
AiSay 的一些主要优点包括:
减少人工错误并提高数据准确性,因为它可以自动从上传的文档中提取关键数据并填写到表单中。
改善数字服务体验,因为一旦上传文档,AiSay 就可以自动填写关键数据。 AiSay 的独特之处在于它能够处理各种文档类型并提供结构化的信息,支持多种格式和语言。它还为每个任务提供置信度分数,以确定是否需要额外支持,从而最大程度地减少对高置信度任务的人工干预。此外,AiSay 采用无服务器架构托管在云端,因此可以灵活扩展以处理大文件,并支持异步提取。”
在上面的例子中,Graph RAG 相比传统 RAG 方法的优势显而易见。
Graph RAG 的回答不仅准确,而且还包含了丰富的上下文信息和关系信息,这是传统 RAG 方法所缺乏的。
Graph RAG 的秘诀在于它能够分析用户的查询,精确定位图数据库中的相关数据,并利用这些上下文信息来指导大语言模型 (LLM) 生成更准确的回答。
这种方法可以利用传统方法可能忽略的互联信息网络,从而更深入地理解查询的含义。
让我们再尝试一些其他的例子:
问:“我需要从一些文档中删除敏感信息。Govtech 提供哪些产品可以实现这个功能?”
传统 RAG 的回答:“Govtech 提供 Cloak 和 FileSG 产品,可以帮助用户从文档中删除敏感信息。”
Graph RAG 的回答:“GovTech 提供了一款名为 Cloak 的产品,这是一个用于数据匿名化的集中式隐私工具包,可以确保数据处理符合相关政策。这款产品可以帮助公务员对数据集应用数据匿名化技术,并根据相关指南评估重新识别风险。”
问:“DIAB 和 SIaC 有什么区别?”
传统 RAG 的回答:“提供的文档中没有直接比较“开箱即用的数据基础设施” (DIAB) 和名为 SIaC 的产品或服务,也没有提到 SIaC。因此,根据现有信息,无法直接比较 DIAB 和 SIaC。
以下是 DIAB 的一些关键特性:
目的和开发:DIAB 由 GovTech 的数据科学和人工智能部门 (DSAID) 开发,旨在加速在“政府商业云” (GCC) 上部署和维护数据基础设施。它专门用于协助政府机构设计、部署和保护数据基础设施。
专注于数据基础设施:DIAB 强调构建一致且可扩展的数据基础设施,使政府机构在设计和实施云基础设施时能够节省时间并减少开销。这种设计理念使政府机构可以更专注于构建应用程序层。
使用基础设施即代码 (IaC):DIAB 利用 IaC 模板和参考架构来简化数据工程方面的工作,从而简化数据基础设施的设置和管理流程。 由于缺乏关于 SIaC 的信息,因此无法进行比较。DIAB 的特点表明,它是一个帮助政府机构在云端高效部署和管理数据基础设施的工具,它利用 IaC 来提高效率和可扩展性。”
Graph RAG 的回答:“DIAB(开箱即用的数据基础设施)和 SIaC(安全基础设施即代码)都是旨在简化政府机构部署云基础设施的产品。但是,它们在具体功能和侧重点上有所不同。 DIAB 旨在加速在“政府商业云” (GCC) 上部署和维护数据基础设施。它可以帮助政府机构设计、部署和保护数据基础设施,重点关注数据工程方面的工作,并提供“基础设施即代码” (IaC) 模板。DIAB 的目标是帮助政府机构构建一致且可扩展的数据基础设施,其主要优势包括易用性、效率高、内置合规性、部署灵活以及面向未来。 另一方面,SIaC 提供可定制的模板,用于以安全、合规和自动化的方式部署云基础设施。它侧重于安全配置云服务提供商提供的托管服务和工具,并提供模块化且易于调整的模板。SIaC 的主要功能包括:符合新加坡政府标准、模块化设计(适用于不同用例)、与 SGTS 组件集成,以及云原生设计。 总而言之,虽然 DIAB 和 SIaC 都旨在简化政府机构的云基础设施部署,但 DIAB 主要针对数据基础设施部署,重点关注数据工程和 IaC 模板,而 SIaC 侧重于安全合规的云基础设施部署,提供可定制的模板和模块化设计。”
七、总结
从依赖自身“记忆”到学会“查资料”,再到拥有“知识地图”,Graph RAG 的出现,标志着 AI 问答技术进入了一个全新的阶段。
传统的 RAG 技术虽然能够为 LLM 提供更丰富的知识来源,但它就像一个只会“照本宣科”的学生,缺乏对知识的真正理解。而 Graph RAG 则赋予了 AI 更强大的推理能力和逻辑思维能力,让 AI 能够像人类一样理解世界、解决问题。
当然,Graph RAG 也并非完美无缺。它的性能很大程度上取决于知识图谱的质量和覆盖范围。构建一个高质量的知识图谱并非易事,需要投入大量的人力和资源。
但我们相信,随着 AI 技术的不断发展,Graph RAG 将会克服这些挑战,释放更大的潜力。未来,Graph RAG 将推动 AI 从“数据驱动”走向“知识驱动”,让 AI 真正拥有认知智能,为人类创造更美好的未来! ✨
参考资料
[1]. 什么是 Graph RAG
https://www.ontotext.com/knowledgehub/fundamentals/what-is-graph-rag/
[2]. GraphRAG:解锁叙述性私有数据上的 LLM 发现
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
[3]. Graph RAG:利用 LLM 释放知识图谱的强大功能
https://medium.com/@nebulagraph/graph-rag-the-new-llm-stack-with-knowledge-graphs-e1e902c504ed
[4]. 嵌入的余弦相似性真的是关于相似性的吗?
https://arxiv.org/html/2403.05440v1
[5]. RAG 的知识图谱
https://www.deeplearning.ai/short-courses/knowledge-graphs-rag/
[6]. LangChain Neo4j
https://python.langchain.com/docs/integrations/providers/neo4j
[7]. Neo4j 图数据库
https://neo4j.com/product/neo4j-graph-database/