图RAG (Graph RAG)
传统RAG系统在处理复杂的关系推理和多跳查询时存在局限。图RAG通过引入图数据库(如Neo4j)和智能查询路由,将知识以“实体-关系-实体”的图结构进行显式建模,实现了真正的知识图谱增强检索。
核心特征:
- 结构化知识表达:以图节点和边的形式显式编码实体间的语义关系。
- 增强推理能力:支持基于图结构的多跳推理,能发现数据中隐含的关联。
- 智能查询路由:根据查询复杂度自动选择最适合的检索策略。
- 事实性与可解释性:基于图结构的推理路径提供可追溯的答案来源。
在图RAG中作用
- 知识库构建:将图数据库中的节点和关系构建为结构化文档,分块后存入向量数据库(如Milvus)。
- 索引与查询:结合语义向量检索和图关系遍历,进行混合检索与复杂推理。
系统架构与流程
1. 整体架构
图RAG系统采用模块化设计,核心流程如下:
- 启动与初始化:检查并连接Neo4j图数据库与Milvus向量数据库。
- 知识库构建:从Neo4j加载图数据,构建结构化文档,进行智能分块并建立Milvus向量索引。
- 交互式问答:
- 查询分析:系统接收用户查询,由智能查询路由模块分析其复杂度、关系密集度和推理需求。
- 智能路由:根据分析结果,动态选择三种检索策略之一:
- 简单查询 → 传统混合检索:保底策略,快速直接。
- 复杂推理查询 → 图RAG检索:核心优势,利用图谱进行多跳推理。
- 中等复杂查询 → 组合检索策略:融合传统检索与图RAG检索的结果。
- 结果生成:基于检索到的上下文,生成答案并流式输出。
2. 核心组件
- 图数据准备模块:连接Neo4j,加载图数据并构建结构化文档。
- Milvus索引构建模块:负责文档向量化及向量索引的构建与管理。
- 混合检索模块:实现传统的混合检索策略,作为系统保底。
- 图RAG检索模块:实现基于图遍历和多跳推理的高级检索。
- 智能查询路由器:系统的“大脑”,分析查询并决策最佳检索路径。
图数据建模
1. 数据模型
图数据模型定义了烹饪知识图谱中的实体类型及其关系,如同游戏中的对象与关联:
- 核心节点类型:
- 🍽️ Recipe (菜谱):核心实体,包含名称、难度、时间等属性。
- 🥬 Ingredient (食材):包含名称、用量、单位等属性。
- 👨🍳 CookingStep (烹饪步骤):包含步骤描述、顺序、方法等。
- 📂 RecipeCategory (菜谱分类):如川菜、素菜等。
- 核心关系类型:
REQUIRES:菜谱 需要 食材(关系上可记录用量、单位)。CONTAINS_STEP:菜谱 包含 步骤(关系上可记录步骤顺序)。BELONGS_TO_CATEGORY:菜谱 属于 某个分类。
2. 数据转换
- 来源:将第八章的Markdown格式菜谱数据,通过LLM解析并转换为图数据库所需的CSV文件(节点与关系)。
- 价值:相比直接读取Markdown文件,图数据库能存储和查询更丰富的语义关系(如替代关系、隐含关联),并为复杂推理提供基础。
检索策略与关键技术
1. 检索策略
- 传统混合检索
- 机制:采用 RRF (Round-Robin Fusion) 轮询融合 策略,公平地交替合并不同检索方法(如实体级检索、主题级检索、向量检索)的结果,确保多样性且无需复杂权重调优。
- 定位:系统的基础保底策略。
- 图RAG检索
- 核心机制:多跳推理
- 定义:通过遍历知识图谱中多个相连的节点和关系(即进行多“跳”)来进行间接推理。
- 示例:查询“鸡肉配什么蔬菜好?”
- 第一跳:找到包含“鸡肉”的菜谱(如“宫保鸡丁”)。
- 第二跳:找到这些菜谱所需的其它食材(如“宫保鸡丁”需要“黄瓜”、“花生”)。
- 第三跳:识别这些食材属于“蔬菜”类别。
- 价值:能发现原始数据中未明确表达的隐含知识。
- 定位:处理复杂推理查询的核心策略。
- 核心机制:多跳推理
- 组合检索策略
- 机制:将检索配额分配给传统检索和图RAG检索,然后使用 Round-robin 方法合并结果。
- 定位:处理中等复杂度查询的平衡策略。
2. 智能查询路由
- 流程:利用LLM分析查询的四个维度——复杂度、关系密集度、推理需求、实体数量,据此推荐最合适的检索策略。
- 降级机制:若LLM分析失败,则降级至基于关键词匹配的规则分析;若高级检索策略执行失败,则自动降级至基础的传统混合检索。
环境与工具
1. 技术栈
- 图数据库:Neo4j,用于存储和查询知识图谱。
- 向量数据库:Milvus (替代FAISS),用于生产级的向量存储与检索,支持更丰富的元数据管理和分布式部署。
- 部署:使用Docker Compose进行一键式服务部署。
2. 项目结构
项目采用模块化设计,主要模块包括:图数据准备、Milvus索引构建、混合检索、图RAG检索、智能查询路由、生成集成等。