Skip to content

weijunjiang123/GraphRAG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GraphRAG智能问答系统

基于nano-GraphRAG的智能问答系统,结合知识图谱和大型语言模型,实现高效的问答功能。

系统概述

本系统使用轻量级的nano-GraphRAG框架,结合Neo4j图数据库和Ollama部署的deepseek模型,构建一个完整的智能问答系统。系统能够从文本中提取实体和关系,构建知识图谱,并基于此回答用户问题。

技术栈

  • nano-GraphRAG: 轻量级GraphRAG实现框架
  • LlamaIndex: 知识索引和检索框架
  • Neo4j: 图数据库,用于存储知识图谱
  • Ollama: 本地部署LLM模型
  • deepseek: 大型语言模型
  • FastAPI: 后端API框架
  • Streamlit: 前端UI框架

功能特点

  1. 文本处理与知识图谱构建

    • 使用deepseek处理文本,提取实体和关系
    • 自动构建知识图谱并存储到Neo4j
  2. 智能问答

    • 自然语言问题转换为Cypher查询
    • 基于图数据库查询结果生成回答
  3. 图谱查询

    • 支持直接使用Cypher查询语言查询图谱
    • 查看知识图谱模式和结构

安装指南

前提条件

  • Python 3.8+
  • Neo4j数据库
  • Ollama (用于本地部署LLM)

安装步骤

  1. 克隆仓库
git clone https://github.com/yourusername/graphrag-qa-system.git
cd graphrag-qa-system
  1. 安装依赖
pip install -r requirements.txt
  1. 配置环境变量

创建.env文件并设置以下变量:

NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=yourpassword
OLLAMA_BASE_URL=http://localhost:11434
LLM_MODEL=deepseek-coder:latest
  1. 启动Neo4j数据库

  2. 使用Ollama拉取deepseek模型

ollama pull deepseek-coder:latest

使用指南

启动系统

# 启动完整系统(API和UI)
python main.py

# 仅启动API
python main.py --api-only

# 仅启动UI
python main.py --ui-only

系统启动后:

使用流程

  1. 知识库构建

    • 导航到"知识库构建"标签页
    • 输入或粘贴文本内容
    • 点击"处理文本"按钮
    • 系统会自动提取实体和关系,构建知识图谱
  2. 问答交互

    • 导航到"问答系统"标签页
    • 输入问题
    • 点击"提交问题"按钮
    • 查看系统回答
  3. 图谱查询

    • 导航到"图谱查询"标签页
    • 输入Cypher查询语句
    • 查看查询结果

系统架构

+-------------------+    +------------------+
|     用户界面      |    |      API         |
| (Streamlit)       | <-> | (FastAPI)       |
+-------------------+    +------------------+
                               |
                               v
+-------------------+    +------------------+
|    知识图谱       | <- |   文本处理       |
| (Neo4j)           |    | (Entity         |
+-------------------+    |  Extraction)    |
        ^                +------------------+
        |                        |
        |                        v
+-------------------+    +------------------+
|   查询处理        | <- |    LLM模型       |
| (Query           |    | (deepseek via    |
|  Processing)     |    |  Ollama)         |
+-------------------+    +------------------+
        |
        v
+-------------------+
|   回答生成        |
| (Response        |
|  Generation)     |
+-------------------+

开发者指南

项目结构

graphrag_qa_system/
│
├── main.py                 # 主程序入口
├── config.py               # 配置文件
├── requirements.txt        # 依赖包列表
│
├── api/                    # API 接口
│   ├── __init__.py
│   └── endpoints.py        # FastAPI 端点定义
│
├── ui/                     # 用户界面
│   ├── __init__.py
│   └── app.py              # Streamlit 应用
│
├── core/                   # 核心功能模块
│   ├── __init__.py
│   ├── text_processor.py   # 文本处理与实体提取
│   ├── knowledge_graph.py  # 知识图谱构建与管理
│   ├── query_processor.py  # 查询处理与转换
│   └── response_generator.py  # 回答生成
│
├── models/                 # 模型管理
│   ├── __init__.py
│   └── llm_manager.py      # LLM 模型管理
│
└── utils/                  # 工具函数
    ├── __init__.py
    └── helpers.py          # 辅助函数

扩展指南

  1. 添加新的LLM模型

    • 修改models/llm_manager.py,添加新模型支持
  2. 自定义实体提取逻辑

    • 修改core/text_processor.py中的提取逻辑
  3. 优化Cypher查询生成

    • 修改core/query_processor.py中的查询生成逻辑

贡献指南

欢迎提交Pull Request或Issue来改进系统。请确保您的代码遵循以下原则:

  • 模块化设计
  • 低耦合
  • 良好的代码可读性
  • 完善的注释和文档

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages