ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

37.图RAG-Light RAG说明(1)

37.图RAG-Light RAG说明(1)

内容参考于:图灵AI大模型全栈

一个好的图RAG是知识图谱和向量(Naive RAG)结合起来,图RAG(知识图谱RAG),应该是叫GraphRAG,但是这个单词被微软占用了,图RAG最早由微软实现了,它的框架就叫GraphRAG,所以我们说GraphRAG时指的是微软的GraphRAG

Light RAG 介绍
  • 论文: https://arxiv.org/pdf/2410.05779
  • 文档地址: https://learnopencv.com/lightrag/
  • 项目地址: https://github.com/HKUDS/LightRAG

这里有一个微软发布的GraphRAG框架,微软发布的GraphRAG框架也是最早实现图RAG的框架,但是它并不好用,它只能使用GPT的模型而且还非常慢,构建阶段Token消耗非常巨大,如果已有图数据在它的基础上新加节点GraphRAG做不到,它只能全部删除重新添加(无法增量更新),所以现在有了Light RAG它由香港大学研究

Light RAG核心创新

双层检索(dual-level retrieval)和图增强文本检索(graph-enhanced text indexing)是LightRAG的核心,也就是它又基于图又基于向量

双层检索:分底层和高层检索

底层检索(low-level):提取查询出来的实体或关系关键词,然后向量匹配最相关实体和直接相连的节点,然后提供精准细节(比如孙悟空的师傅是谁)

如下图绿框就是直接相连

高层检索(high-level):提取抽象的主题或关键词,查询更广的上下文和相连的节点和相连节点相连的节点的信息(2到3层范围),然后提供全局视角(比如西游记说的什么)

如下图绿框就是多层相连

底层检索是为了解决细小的问题,比如孙悟空的师傅是谁,高层是为了做总结

Light RAG架构图

数据初始化阶段,输入一个文档进行分片(下图中的Text Chunks),然后把分片后的内容转成向量放到向量数据库中(下图中的Embedding),这里的向量存的不是源文档,存的是一个id,根据向量生成一个id,源文档保存在一个json里(下图里的index),它存的是源文档和metadata和向量对应的id,就是说查向量的时候是查一个id,然后拿着id去json中找文档

到这向量就处理好了,接下来是图数据,如下图还是通过大模型生成,会得到下图红框的两个东西节点和边,Entities data是实体数据(节点数据),Relations Data是边

然后经过下图红框去重(节点和边去重),比如在第一章有苹果,第二章也有苹果,它会看看这俩苹果的语义是不是一样的,如果是一样的就合并,如果不一样会单独创建一个节点和边,去重之后转成向量保存到向量数据库如下图黄框,它转成向量后也会有一个id,它会根据id找到源文档,会把源文档一起保存到向量数据库中

然后把节点和边更新到图数据库中,到这就是索引初始化的过程,这样它把源文档和图数据都保存了下来,在问题检索时就可以使用向量和图数据了 ,这也就是双层索引


返回列表