本月初,微软发布最强 RAG 知识库开源方案 GraphRAG,项目上线即爆火,现在星标量已经达到 10.5 k。GraphRAG 使用 LLM 生成知识图谱,在对复杂信息进行文档分析时可显著提高问答性能,尤其是在处理私有数据时。

GraphRAG 使用 LLM 生成知识图谱,在对复杂信息进行文档分析时可显著提高问答性能,尤其是在处理私有数据时。

现如今,RAG 是一种使用真实世界信息改进 LLM 输出的技术,是大多数基于 LLM 的工具的重要组成部分,一般而言,RAG 使用向量相似性作为搜索,称之为 Baseline RAG(基准RAG)。但 Baseline RAG 在某些情况下表现并不完美。例如:

  • Baseline RAG 难以将各个点连接起来。当回答问题需要通过共享属性遍历不同的信息片段以提供新的综合见解时,就会发生这种情况;
  • 当被要求全面理解大型数据集甚至单个大型文档中的总结语义概念时,Baseline RAG 表现不佳。

微软提出的 GraphRAG 利用 LLM 根据输入的文本库创建一个知识图谱。这个图谱结合社区摘要和图机器学习的输出,在查询时增强提示。GraphRAG 在回答上述两类问题时显示出显著的改进,展现了在处理私有数据集上超越以往方法的性能。

近日,Neo4j 公司 CTO Philip Rathle 发布了一篇标题为《GraphRAG 宣言:将知识加入到生成式 AI 中》的博客文章,Rathle 用通俗易懂的语言详细介绍了 GraphRAG 的原理、与传统 RAG 的区别、GraphRAG 的优势等。他表示:「你的下一个生成式 AI 应用很可能就会用上知识图谱。」

图谱是什么?

首先我们必须阐明什么是图谱。

图谱,也就是 graph,也常被译为「图」,但也因此容易与 image 和 picture 等概念混淆。本文为方便区分,仅采用「图谱」这一译法。
15222617-2024-07-15T14:26:09.png
15223559-2024-07-15T14:35:58.png

GraphRAG 与 RAG

根本上讲,GraphRAG 就是一种 RAG,只是其检索路径包含知识图谱。下面你会看到,GraphRAG 的核心模式非常简单。其架构与使用向量的 RAG 一样,但其中包含知识图谱层。
15224057-2024-07-15T14:40:50.png

使用知识图谱

有了知识图谱后,就可以做 GraphRAG 了,为此有很多框架可选,比如 LlamaIndex Property Graph Index、Langchain 整合的 Neo4j 以及 Haystack 整合的版本。这个领域发展很快,但现在编程方法正在变得非常简单。

在图谱创建方面也是如此,现在已经出现了 Neo4j Importer(可通过图形化界面将表格数据导入和映射为图谱)和前面提到的 Neo4j Knowledge Graph Builder 等工具。下图总结了构建知识图谱的步骤。
15223504-2024-07-15T14:34:48.png

使用知识图谱还能将人类语言的问题映射成图谱数据库查询。Neo4j 发布了一款开源工具 NeoConverse,可帮助使用自然语言来查询知识图谱:https://neo4j.com/labs/genai-ecosystem/neoconverse/

为什么要使用 GraphRAG?

相较于仅向量 RAG,GraphRAG 的优势主要分为三大类:

  1. 准确度更高且答案更完整(运行时间 / 生产优势)
  2. 一旦创建好知识图谱,那么构建和维护 RAG 应用都会更容易(开发时间优势)
  3. 可解释性、可追溯性和访问控制方面都更好(治理优势)

源码:https://github.com/microsoft/graphrag
文档:https://microsoft.github.io/graphrag/
数据库:https://neo4j.com/blog/graphrag-manifesto/
实战:https://mp.weixin.qq.com/s/gk6lQuDaAurUEIun_S_eEg