基于知识图谱的检索增强生成初步思考和开发

基于知识图谱的检索增强生成初步思考和开发

现有的RAG系统老是搞不清复杂关系,答案经常被切碎,缺乏上下文,难以真正理解问题。
而GraphRAG就是来解决这些问题的,它把图结构引入文本索引和检索,采用双层检索系统,从低到高全面覆盖信息。还能快速更新数据,保持实时高效的响应。

三个核心部分 1. 图基文本索引(Graph-Based Text Indexing) 2. 双层检索范式(Dual-Level Retrieval Paradigm) 3. 增量知识库的快速适应

一、图基文本索引 • 步骤 1:实体和关系提取 • 使用大型语言模型(LLM)分析文档,自动识别出文本中的实体(如人名、地点、组织等)及其关系(如“属于”或“位于”)。 • 文本被分割成多个较小的块(chunks)来提升处理效率。 • 步骤 2:LLM Profiling 生成键值对 • 对每个识别出的实体和关系,LLM 生成键值对(Key-Value Pair)。其中,“键”(Key)是一个或多个关键词,而“值”(Value)是与这些实体或关系相关的文本段落。 • 步骤 3:去重优化 • 合并不同文档中的重复实体和关系,减少不必要的计算,提升处理速度。

二、双层检索范式 • 步骤 4:生成查询关键词 • 针对用户查询,系统自动提取局部关键词(low-level)和全局关键词(high-level)用于匹配检索。 • 步骤 5:关键词匹配 • 使用向量数据库,局部关键词会匹配相关的实体,全局关键词会匹配到相应的实体关系。 • 步骤 6:整合高阶相关性 • 为增强检索的准确性,GraphRAG 会收集检索到的图元素的邻接节点,涉及检索到的实体及其关系的上下文。

三、检索增强的答案生成 • 步骤 7:使用检索到的信息 • 检索完成后,系统将提取到的实体和关系输入LLM,并基于这些信息生成答案。 • 步骤 8:上下文整合与答案生成 • 系统将用户查询与多源检索结果进行合并,生成符合查询语境的答案。

四、增量知识库的快速适应 • 步骤 9:增量更新知识库 • 新文档加入时,系统会按照之前的图基索引步骤处理新文档,将新生成的知识图谱与现有图谱数据合并,实现无缝更新。 • 步骤 10:减少计算开销 • 为了提升效率,GraphRAG 避免重建整个知识图谱,仅更新新数据部分,从而减少计算开销,提升系统响应速度。

  1. 从文本中提取信息:系统会读取文档,识别出重要的“实体”(比如人、地点、事物)和它们之间的“关系”(比如某人属于某组织,某事物位于某地)。 • 比如,系统可能会识别出“Beekeeper(养蜂人)”这个实体,并且提取出它与“Bee(蜜蜂)”的关系。
  2. 去掉重复信息:系统会去除文档中相同的实体和关系,避免不必要的重复。这样可以减轻系统的负担,提高效率。 • 比如,系统发现同一个文档中多次提到了“Beekeeper”,但意思相同,就只保留一次。
  3. 把信息放入图表:这些提取出来的实体和关系会被放入一个“图”中。在这个图里,实体是“节点”,关系是“边”,所有的节点和边相连形成了一个可以高效查询的信息网络。 • 比如,图中可以显示“Beekeeper”节点和“Bee”节点通过一条“管理(Manage)”的边相连。
  4. 双层检索:当用户提问时,系统会分两步进行检索。首先,它会寻找与问题直接相关的“局部关键词”(如“Beekeeper”),然后它会寻找与这些关键词关联的“全局关键词”(如“Bee”、“Hive(蜂巢)”等)。 • 例如,用户问:“养蜂人如何管理蜂群?”系统会找到“Beekeeper”相关的信息,同时也找到了“Bee”和“Hive”的相关内容,给出更完整的答案。
  5. 生成答案:系统结合检索到的信息,利用大语言模型(LLM)生成详细的答案,并且确保答案逻辑连贯、信息准确。
  6. 知识更新:当有新的信息加入时,系统会把新信息无缝整合到已有的图中,确保系统总是基于最新的知识进行检索,而不会每次都重建整个系统。