惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
月光博客
月光博客
WordPress大学
WordPress大学
C
Cisco Blogs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
Google DeepMind News
Google DeepMind News
The Cloudflare Blog
有赞技术团队
有赞技术团队
Microsoft Azure Blog
Microsoft Azure Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
小众软件
小众软件
H
Heimdal Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
W
WeLiveSecurity
量子位
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Fortinet All Blogs
T
Threat Research - Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
L
Lohrmann on Cybersecurity
C
CERT Recently Published Vulnerability Notes
L
LINUX DO - 热门话题
Google Online Security Blog
Google Online Security Blog
S
Security Affairs
V2EX - 技术
V2EX - 技术
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
S
Security @ Cisco Blogs
宝玉的分享
宝玉的分享
Project Zero
Project Zero
The Hacker News
The Hacker News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
PCI Perspectives
PCI Perspectives
G
GRAHAM CLULEY
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
N
Netflix TechBlog - Medium
S
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 聂微东

博客园 - 沐子馨

Agent Loop:从对话式 AI 到自主智能体的范式跃迁 解锁图数据建模的奥秘 解决复杂推理难题:KG-RAG 在大模型中的应用 RAG 评估常用工具简介 RAG系统效果不好?一文看懂如何进行系统评估 写出让 AI “秒懂”的技能Skill 深入理解 RAG 中的格式化生成与函数调用 解锁 RAG 系统中的高级检索与重排序策略 掌握查询重构与智能路由的艺术 告别黑盒:手把手实现一个可解释、可调试的 Text2SQL 代理系统 告别简单向量搜索:RAG 中的高级查询构建与优化策略 深入理解 RAG 中的混合搜索策略 告别基础检索:掌握 RAG 中的句子窗口与递归路由策略 构建多模态检索系统:Milvus 部署、Schema 设计与混合检索实践 向量数据库原理与实战:从核心机制到 FAISS 应用 多模态向量嵌入:从文本到图像的语义统一与 RAG 应用 构建高效 RAG 的基石:深度解析 Embedding 模型原理与优化 All-in-RAG:解锁大模型“开卷考试”的终极能力 AI Agent 是如何思考的?一文读懂推理与决策引擎 终端革命:AI Agent 正在重新定义命令行 给企业装上“AI 大脑”:AgentSpace 如何从“手动检索”跨越到“智能决策”? Agentic 框架快速概览 AI 智能体交互如何带领它走出对话框,从屏幕像素迈向真实物理世界 高级提示词技巧如何带领大模型走出“一本正经胡说八道”的误区? 当 AI 学会“开疆拓土”:探索与发现模式如何从源头打破静态知识的桎梏,在陌生领域催生新洞见? 拒绝 AI “手忙脚乱”:优先级模式如何为智能体打造毫秒级的“任务调度官”? 构建生产级可信 Agent:评估与监控中的自动化审计与闭环优化机制 当 AI 学会“三思后言”:安全护栏如何从源头掐灭偏见、幻觉与恶意攻击? 拒绝“张口就来”:推理技术如何让 AI 像人类一样拆解复杂难题? 当家方知柴米贵:资源感知优化如何让 AI 智能体告别“算力浪费”? 开启多智能体互联时代:A2A 协议与 AI 协作网络的底层逻辑 为智能体装上“实时百科全书”:RAG 如何打破 AI 的知识边界? 构建负责任的AI:人类监督、干预与反馈闭环机制 当工具失效、网络中断:AI智能体的应急与自修复指南 赋予AI“北极星”:如何让智能体自主设定并追踪目标 打破“M×N”集成魔咒:MCP如何重塑AI应用架构 赋予模型“生命力”:大语言模型如何通过学习实现持续适应 赋予模型“长期记忆”:大语言模型的记忆管理机制 AI的“社会性”:深入理解多智能体协作机制 理解AI智能体的规划机制 理解大模型的工具使用 智能体的元认知:反思模式与自我优化机制 智能体并行化模式:提升复杂工作流性能的关键技术 超越线性执行:使用LLM实现智能体路由模式 解构复杂任务:深入理解提示词链(Prompt Chaining) 别再被 AI 术语唬住了!一文理清你需要了解的所有概念 不止是多写几句:谷歌如何用69页白皮书重塑提示工程 [转]长PDF文档的总结与评估策略 Context 工程:如何把正确的上下文喂给 AI 前端如何写出优秀的 AI Agent Skills mac安装python后command not found: pip keep-alive 原理剖析 如何优雅地在 React 中使用TypeScript,看这一篇就够了! react useContext React Context 详细介绍(状态共享、数据传递) 以用户为中心的性能指标【译】 element下拉框远程搜索debounce防抖控制 vue-router打开新窗口 propmise: allSettled()与all()的区别 使用 new Date() 在chrome、安卓和 IOS 中表现不同
基于 Neo4j 与 Milvus 的图RAG系统搭建指南
沐子馨 · 2026-06-25 · via 博客园 - 沐子馨

一、项目背景与目标

1.1 从传统RAG到图RAG的演进

之前我们构建了基于向量检索的传统RAG系统,采用了父子文本块的分块策略,能够有效回答简单的菜谱查询。但在处理复杂的关系推理和多跳查询时仍存在明显局限:

  • 关系理解缺失:虽然父子分块保持了文档结构,但无法显式建模食材、菜谱、烹饪方法之间的语义关系
  • 跨文档关联困难:难以发现不同菜谱之间的相似性、替代关系等隐含联系
  • 推理能力有限:缺乏基于知识图谱的多跳推理能力,难以回答需要复杂逻辑推理的问题

1.2 图RAG系统的核心优势

通过引入知识图谱,我们的新系统将具备:

  • 结构化知识表达:以图的形式显式编码实体间的语义关系
  • 增强推理能力:支持多跳推理和复杂关系查询
  • 智能查询路由:根据查询复杂度自动选择最适合的检索策略
  • 事实性与可解释性:基于图结构的推理路径提供可追溯的答案

二、环境配置

若需要进行外部访问,需更换本地或服务器环境

2.1 创建虚拟环境

# 使用conda创建环境
conda create -n graph-rag python=3.12.7
conda activate graph-rag

2.2 安装核心依赖

cd code/C9
pip install -r requirements.txt

2.3 Neo4j数据库配置

使用Docker Compose方式安装Neo4j

2.3.1 启动Neo4j服务

# 进入docker-compose.yml所在目录
cd data/C9

# 启动Neo4j服务
docker-compose up -d

# 检查服务状态
docker-compose ps

2.3.2 访问Neo4j Web界面

启动成功后,可以通过以下方式访问:

Web界面:http://localhost:7474
用户名:neo4j
密码:all-in-rag

当前网址为本地访问,如果你是部署在远程服务器上,需要将 localhost 修改为你的服务器IP地址。

2.3.3 数据导入

Docker Compose配置中包含了自动数据导入功能。启动服务时会自动执行以下步骤:

  1. 等待Neo4j服务就绪:通过健康检查确保数据库可用
  2. 执行导入脚本:自动运行 data/C9/cypher/neo4j_import.cypher
  3. 导入菜谱数据:包括菜谱、食材、烹饪步骤等节点和关系

导入的数据包括:

  • 菜谱节点:包含菜名、难度、烹饪时间、菜系等信息
  • 食材节点:包含食材名称、分类、营养信息等
  • 烹饪步骤节点:包含步骤描述、烹饪方法、所需工具等
  • 关系网络:菜谱与食材、步骤之间的复杂关系

如果需要手动重新导入数据:

# 进入容器执行导入脚本
docker exec -it neo4j-db cypher-shell -u neo4j -p all-in-rag -f /import/cypher/neo4j_import.cypher

2.4 Milvus向量数据库配置

2.4.1 使用Docker安装Milvus

如果前面已经安装过了可以跳过此步,通过 docker-compose ps 确认Milvus服务正在运行即可。

# 下载Milvus standalone配置文件
wget https://github.com/milvus-io/milvus/releases/download/v2.5.11/milvus-standalone-docker-compose.yml -O docker-compose.yml

# 启动Milvus
docker-compose up -d
# 下载Milvus standalone配置文件
wget https://github.com/milvus-io/milvus/releases/download/v2.5.11/milvus-standalone-docker-compose.yml -O docker-compose.yml

# 启动Milvus
docker-compose up -d

2.4.2 验证安装

# 检查Milvus服务状态
docker-compose ps

2.5 配置连接参数

在项目根目录创建 .env 文件:

# Neo4j配置
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=all-in-rag
NEO4J_DATABASE=neo4j

# Milvus配置
MILVUS_HOST=localhost
MILVUS_PORT=19530

# LLM API配置
MOONSHOT_API_KEY=your_api_key_here

三、系统架构设计

3.1 整体架构

我们的图RAG系统采用模块化设计,包含以下核心组件:

a

3.2 核心模块说明

图数据准备模块 (GraphDataPreparationModule)

  • 功能:连接Neo4j数据库,加载图数据,构建结构化菜谱文档
  • 特点:支持图数据到文档的智能转换,保持知识结构完整性

向量索引模块 (MilvusIndexConstructionModule)

  • 功能:构建和管理Milvus向量索引,支持语义相似度检索
  • 特点:使用BGE-small-zh-v1.5模型,512维向量空间

混合检索模块 (HybridRetrievalModule)

  • 功能:传统的混合检索策略,三路召回(双层检索+向量检索+BM25)经 RRF 融合
  • 特点:双层检索(实体级+主题级),BM25关键词检索(jieba分词),RRF排名融合,可选父文档回填

图RAG检索模块 (GraphRAGRetrieval)

  • 功能:基于图结构的高级检索,支持多跳推理和子图提取
  • 特点:图查询理解、多跳遍历、知识子图提取

智能查询路由 (IntelligentQueryRouter)

  • 功能:分析查询特征,自动选择最适合的检索策略
  • 特点:LLM驱动的查询分析,动态策略选择

生成集成模块 (GenerationIntegrationModule)

  • 功能:基于检索结果生成最终答案,支持流式输出
  • 特点:自适应生成策略,错误处理与重试机制

3.3 数据流程

  1. 数据准备阶段:

    • 从Neo4j加载图数据(菜谱、食材、步骤节点及其关系)
    • 构建结构化菜谱文档,保持知识完整性
    • 进行智能文档分块,支持章节和长度双重分块策略
    • 构建Milvus向量索引,支持语义检索
  2. 查询处理阶段:

    • 用户输入查询
    • 智能查询路由器分析查询特征(复杂度、关系密集度、推理需求)
    • 根据分析结果选择检索策略:
      • 简单查询 → 传统混合检索
      • 复杂推理 → 图RAG检索
      • 中等复杂 → 组合检索策略
    • 执行相应的检索操作
    • 生成模块基于检索结果生成答案
  3. 错误处理与降级:

    • 高级策略失败时自动降级到传统混合检索
    • 传统混合检索失败时返回系统异常
    • 支持流式输出中断时的自动重试机制

四、项目文件结构

code/C9/
├── main.py                          # 主程序入口
├── config.py                        # 配置文件
├── requirements.txt                 # 依赖包列表
└── rag_modules/                     # RAG模块包
    ├── __init__.py
    ├── graph_data_preparation.py    # 图数据准备模块
    ├── milvus_index_construction.py # Milvus索引构建模块
    ├── hybrid_retrieval.py          # 混合检索模块
    ├── graph_rag_retrieval.py       # 图RAG检索模块
    ├── intelligent_query_router.py  # 智能查询路由器
    └── generation_integration.py    # 生成集成模块

五、快速开始

5.1 启动系统

# 确保Neo4j和Milvus服务已启动
python main.py

5.2 系统初始化

首次运行时,系统会自动:

检查并连接Neo4j和Milvus数据库
加载图数据并构建菜谱文档
创建向量索引
初始化各个检索模块
显示系统统计信息

5.3 交互式问答

系统启动后,可以进行交互式问答:

您的问题: 川菜有哪些特色菜?
您的问题: 如何制作宫保鸡丁?
您的问题: 减肥期间适合吃什么菜?
您的问题: stats  # 查看系统统计
您的问题: quit   # 退出系统