Light RAG
可以理解为 简化版的 Graph RAG , 去掉了 Graph RAG 中的 社区 Community 的部分,直接基于实体 Entity 及其关系来构建图谱。降低了复杂性和消耗的 token。在索引构建和查询都会比 GraphRAG 快
核心特点轻量级设计
- LightRAG具有最小化的依赖关系,便于快速部署。它支持增量更新,无需重建索引,内存占用低,适合个人开发者使用。
- 双重检索机制:结合向量检索和图检索,向量检索捕捉语义相似性,图检索发现知识关联关系,并智能融合两种检索结果,以提供更准确和全面的答案。
- 灵活的模型支持:支持主流的LLM(如OpenAI、HuggingFace等),也可使用开源嵌入模型,并支持自定义检索策略。
- 高效的索引和检索:通过图结构和向量表示的结合,优化了索引和检索过程,减少了计算资源的消耗,提高了检索效率。
.png)
工作原理
索引阶段
- 对文档进行切分处理,通过固定字符数来切分Chunk,形成Chunk库
- 基于这些 Chunk 块,进⾏ D、P、R 的操作
- R 操作表示利⽤ LLM 对 Chunk 块进⾏实体和关系的提取,并将它们向量化处理后存放在向量知识库中。
- P 操作基于 R 操作⽣成的实体和关系进⾏总结描述
- 这⾥需要注意的是,对实体的描述为实体本身的描述,⽐如 Beekeeper,对应的描述为:A beekeeper is an person who...
- 对关系的描述为关系本身的描述
- 对关系还会总结⼀些 keywords,这些 keywords 的解释为:⼀个或多个⾼级关键词,这些关键词概括了关系的总体性质,侧重于概念或主题⽽不是具体细节
- D 操作会将实体或者关系进⾏去重操作
- 同时,构建知识图谱,将实体作为节点,关系作为边,形成结构化的知识表示。
.png)
查询阶段
查询支持 3 种模式:global(全局)、local(局部) 和 hybrid(混合)= global + local。
- 当用户提交查询时,系统首先提取查询中的局部和全局关键词。系统通过向量数据库匹配关键词与候选实体和关系,然后结合相关的文本块进行总结,生成全面的答案。
- 局部关键词, 主要指的是特别具体能对应到的 entity 的关键字,用于检索与某一个实体相关的详细信息。这⼀层⾯主要关注检索特定实体及其关联属性或关系。这⼀层⾯的查询是细节导向的,目的在于提取关于图中特定节点或边的精确信息。
- ⾸先通过构建好 entity 的向量库去找相应的 topic_entity。然后基于 topic_entity 找到相关的 relation 和 text_unit。然后将这些信息拼装为 context
- 而全局关键词, 主要指的是总体的大体概念,用于检索更广泛的主题和概念。这⼀层⾯的查询汇总了多个相关实体和关系信息,提供了对⾼层次概念和摘要的洞察,⽽不是具体细节。
- ⾸先通过构建好的 relation 的向量库去找相应的 relation,再通过 relation 去图谱⾥⾯找关联的 entity 和 text_unit。然后将这些信息拼装为 context。
通过双路召回,从查询本身的信息出发,关注具体的实体相关的关联信息,以及从查询本身的主题出发,关注涉及到该主题的关系信息出发,寻找关联信息。
从⾼纬度和低纬度分别召回不同的信息源帮助⼤模型构建上下⽂,丰富了召回的信息语义相关度,也增加了召回信息的层次化。
增量更新