【RAG】知识图谱 RAG 与可验证引用案例讲解
目录
一、案例简介
二、案例目标
2.1 核心功能
2.2 技术要点
2.3 预期效果
三、技术栈与核心依赖
3.1 编程语言与框架
3.2 核心依赖库
3.3 推荐的 LLM 模型
四、项目配置
4.1 环境变量配置
4.2 Docker Compose 配置
Neo4j 服务
Ollama 服务
Streamlit 应用服务
五、项目结构
5.1 关键文件说明
六、核心代码实现
6.1 数据模型设计
Entity(实体)
Relationship(关系)
Citation(引用)
AnswerWithCitations(带引用的答案)
6.2 知识图谱管理器
核心方法
6.3 基于 LLM 的实体提取
6.4 带引用的多跳 RAG
七、运行与测试
7.1 快速开始(Docker 方式)
7.2 手动安装方式
步骤 1:安装 Ollama
步骤 2:启动 Neo4j
步骤 3:安装 Python 依赖
步骤 4:运行应用
7.3 使用示例
示例 1:添加文档
示例 2:提问
示例 3:查看推理追踪
八、实现思路与扩展建议
8.1 核心设计思想
1. 知识图谱 vs 向量检索
2. 可验证性设计
3. 本地化部署
8.2 架构流程图
文档处理流程
查询处理流程
8.3 可能的优化方向
1. 性能优化
2. 功能扩展
3. 企业级特性
8.4 扩展功能建议
1. 集成更多 LLM
2. 支持更多数据源
3. 高级推理能力
九、完整源码
knowledge_graph_rag.py
requirements.txt
Dockerfile
docker-compose.yml
总结
一、案例简介
本案例演示了一个基于知识图谱的检索增强生成(RAG)系统,该系统能够提供:
- 多跳推理:跨越多个文档和实体进行复杂推理
- 可验证引用:每个声明都可以追溯到源文档
- 透明推理追踪:完整记录推理过程,便于审计
与传统基于向量相似度的 RAG 不同,知识图谱 RAG 通过构建结构化的知识图谱,实现了更精准的信息检索和更强的推理能力。
二、案例目标
2.1 核心功能
- 文档知识提取:使用 LLM 从非结构化文本中提取实体和关系
