Graph RAG通过知识图谱解决传统搜索的碎片化问题,实现更精准的信息检索。与传统RAG(检索增强生成)不同,Graph RAG不再仅仅依赖文本片段匹配,而是通过构建实体之间的关系网络,让AI不仅“看到”信息,更能“理解”信息之间的深层联系。下面,我们一起来了解它的核心原理和实现细节。

一、传统RAG的局限性:为什么信息会“碎片化”?
在传统的RAG中,我们通常会把文章切成一块一块的文字片段,然后把每一块都通过embedding(向量化)转化成向量,最后存入向量数据库。为了让不理解传统RAG的小伙伴也能快速理解,这里举一个简单的例子说明一下。
假设把文章按句子分块,存入向量数据库。当用户问 “老王喜欢吃什么” 时,系统很容易就找到“老王喜欢吃西瓜”和“老王也喜欢吃桃子”这样的段落。因为问句和段落之间的主题相关度很高。
但是,如果你问 “这篇文章里一共提到了几次西瓜”,麻烦就来了。虽然“西瓜”这个词出现在很多句子中,但它被分散在不同的片段里,没有哪一句能单独回答这个问题。这时RAG就可能检索错了,或者遗漏了一部分。
问题根源:全局与局部信息的匹配度低
为什么会出现这种情况呢?我们来看第一句话:“老王喜欢吃西瓜”。这句话包含三层信息:老王、喜欢吃、西瓜。在传统RAG中,是按整段来计算相关度的。如果问题只是“文章中提到了几次西瓜”,那它和“老王”、“喜欢吃”都没有关系。因此,整体的相关度不够高,查询时就有可能把“老王喜欢吃西瓜”漏掉。
这就是传统RAG的第一个核心问题:全局问题和局部片段之间的匹配度太低。
进退两难的“切片矛盾”
你可能会想:那我就把片段切得更小一些,比如按词来分。这样每一个“西瓜”都能被命中,确实能解决统计次数的问题。但反过来,如果又问一句“老王喜欢吃什么”,RAG又处理不了了,因为信息之间的关系已经被打断了。
于是矛盾就来了:
- 切得太大:容易漏掉细节
- 切得太小:容易失去语义之间的联系
这个矛盾,就是传统RAG不准确的根源之一。
