导航菜单

  • 1.langchain.intro
  • 2.langchain.chat_models
  • 3.langchain.prompts
  • 4.langchain.example_selectors
  • 5.output_parsers
  • 6.Runnable
  • 7.memory
  • 8.document_loaders
  • 9.text_splitters
  • 10.embeddings
  • 11.tool
  • 12.retrievers
  • 13.optimize
  • 14.项目介绍
  • 15.启动HTTP
  • 16.数据与模型
  • 17.权限管理
  • 18.知识库管理
  • 19.设置
  • 20.文档管理
  • 21.聊天
  • 22.API文档
  • 23.RAG优化
  • 24.索引时优化
  • 25.检索前优化
  • 26.检索后优化
  • 27.系统优化
  • 28.GraphRAG
  • 29.图
  • 30.为什么选择图数据库
  • 31.什么是 Neo4j
  • 32.安装和连接 Neo4j
  • 33.Neo4j核心概念
  • 34.Cypher基础
  • 35.模式匹配
  • 36.数据CRUD操作
  • 37.GraphRAG
  • 38.查询和过滤
  • 39.结果处理和聚合
  • 40.语句组合
  • 41.子查询
  • 42.模式和约束
  • 43.日期时间处理
  • 44.Cypher内置函数
  • 45.Python操作Neo4j
  • 46.neo4j
  • 47.py2neo
  • 48.Streamlit
  • 49.Pandas
  • 50.graphRAG
  • 51.deepdoc
  • 52.deepdoc
  • 53.deepdoc
  • 55.deepdoc
  • 54.deepdoc
  • Pillow
  • 1. GraphRAG: 使用知识图谱增强的检索生成系统
  • 2. 环境配置
  • 3. 配置文件
    • 3.1. config.py
    • 3.2. pipeline.py
    • 3.3. main.py
  • 4. 连接Neo4j
    • 4.1. graph_store.py
    • 4.2. main.py
    • 4.3. pipeline.py

1. GraphRAG: 使用知识图谱增强的检索生成系统 #

GraphRAG 是一个结合知识图谱 (Knowledge Graph) 与 RAG(Retrieval-Augmented Generation, 检索增强生成)的智能问答/数据分析系统。它旨在提升复杂场景下的推理能力、可解释性和知识关联性。
通过整合 Neo4j 图数据库与大语言模型(如 DeepSeek),GraphRAG 支持结构化的知识检索、多跳推理和深度信息整合,极大弥补了传统 RAG 系统在长尾知识和推理链上的不足。

核心特点:

  • 将文本文档抽取为知识图谱(实体、关系、属性),存储于 Neo4j
  • 提供结构化子图检索与路径发现,支持多跳知识问答
  • 利用大模型在子图上下文基础上生成高质量、可追溯的答案
  • 适用于企业知识管理、学术检索、信息整合分析等多种场景

技术栈:

  • Python,Neo4j,LangChain,DeepSeek/LLM

特点总结:

  • 更强推理与解释:答案链路清晰
  • 支持结构化知识与长尾实体
  • 易于与现有知识库和 LLM 系统集成

2. 环境配置 #

uv init
uv add dotenv neo4j langchain_deepseek langchain
序号 包名 作用简介
1 dotenv 加载 .env 文件中的环境变量,便于安全管理配置参数
2 neo4j Python 客户端,用于连接和操作 Neo4j 图数据库
3 langchain_deepseek DeepSeek 相关的 LangChain 集成,支持 AI/LLM 工作流
4 langchain 构建和编排大语言模型应用(如对话机器人、问答系统)

3. 配置文件 #

3.1. config.py #

config.py

"""
1. 配置加载模块

负责加载 .env 环境变量并提供统一的配置读取方法。
"""

import os
from dotenv import load_dotenv

def load_config() -> dict:
    load_dotenv()
    return {
        "neo4j_uri": os.getenv("NEO4J_URI", "bolt://localhost:7687"),
        "neo4j_user": os.getenv("NEO4J_USER", "neo4j"),
        "neo4j_password": os.getenv("NEO4J_PASSWORD", "12345678"),
        "deepseek_api_key": os.getenv("DEEPSEEK_API_KEY", "sk-924916a162544410964397598709766a"),
        "model_name": os.getenv("DEEPSEEK_MODEL", "deepseek-chat"),
    }

3.2. pipeline.py #

pipeline.py

"""
2. GraphRAG 业务管线。
"""

from config import load_config

class GraphRAG:
    """1. 封装检索与生成的完整 GraphRAG 系统。"""

    def __init__(self, neo4j_uri: str, neo4j_user: str, neo4j_password: str, deepseek_api_key: str, model_name: str = "deepseek-chat"):
        print(neo4j_uri, neo4j_user, neo4j_password, deepseek_api_key, model_name)

def build_rag_from_env() -> GraphRAG:
    """2. 使用环境变量创建 GraphRAG 实例的便捷工厂。"""
    cfg = load_config()
    return GraphRAG(
        neo4j_uri=cfg["neo4j_uri"],
        neo4j_user=cfg["neo4j_user"],
        neo4j_password=cfg["neo4j_password"],
        deepseek_api_key=cfg["deepseek_api_key"],
        model_name=cfg["model_name"],
    )

3.3. main.py #

main.py

# 1. 命令行运行入口,用于演示完整的 GraphRAG 流程。
"""
+1. 命令行运行入口,用于演示完整的 GraphRAG 流程。
"""

# 从 pipeline 模块导入 build_rag_from_env 函数
+from pipeline import build_rag_from_env

# 定义主函数
def main():
    # 调用 build_rag_from_env 函数,启动 GraphRAG 工作流
+   build_rag_from_env()

# 判断是否以主模块运行本文件
if __name__ == "__main__":
    # 运行主函数
    main()

4. 连接Neo4j #

4.1. graph_store.py #

graph_store.py

"""
1. Neo4j 读写与检索逻辑。
"""

from typing import List, Dict, Any, Set
from neo4j import GraphDatabase

class GraphStore:
    """2. 封装 Neo4j 的节点与关系操作。"""

    def __init__(self, uri: str, user: str, password: str):
        self.driver = GraphDatabase.driver(uri, auth=(user, password))

    def close(self):
        """3. 关闭数据库连接。"""
        self.driver.close()

4.2. main.py #

main.py

# 1. 命令行运行入口,用于演示完整的 GraphRAG 流程。
"""
1. 命令行运行入口,用于演示完整的 GraphRAG 流程。
"""

# 从 pipeline 模块导入 build_rag_from_env 函数
from pipeline import build_rag_from_env

# 定义主函数
def main():
    # 调用 build_rag_from_env 函数,启动 GraphRAG 工作流
+   graphrag =  build_rag_from_env()
+   try:
+       pass
+   finally:
+       graphrag.close()

# 判断是否以主模块运行本文件
if __name__ == "__main__":
    # 运行主函数
    main()

4.3. pipeline.py #

pipeline.py

"""
1. GraphRAG 业务管线。
"""

from config import load_config
+from graph_store import GraphStore
class GraphRAG:
    """2. 封装检索与生成的完整 GraphRAG 系统。"""

    def __init__(self, neo4j_uri: str, neo4j_user: str, neo4j_password: str, deepseek_api_key: str, model_name: str = "deepseek-chat"):
        # 3. 初始化图数据库连接
+       self.store = GraphStore(neo4j_uri, neo4j_user, neo4j_password)
+   def close(self):
+       """4. 关闭数据库连接。"""
+       self.store.close()

def build_rag_from_env() -> GraphRAG:
    """5. 使用环境变量创建 GraphRAG 实例的便捷工厂。"""
    cfg = load_config()
    return GraphRAG(
        neo4j_uri=cfg["neo4j_uri"],
        neo4j_user=cfg["neo4j_user"],
        neo4j_password=cfg["neo4j_password"],
        deepseek_api_key=cfg["deepseek_api_key"],
        model_name=cfg["model_name"],
    )
← 上一节 36.数据CRUD操作 下一节 38.查询和过滤 →

访问验证

请输入访问令牌

Token不正确,请重新输入