本项目实现了一个融合知识图谱(Knowledge Graph)与检索增强生成(Retrieval-Augmented Generation, RAG)的智能问答系统。
系统首先利用大语言模型从文本中抽取实体与关系,构建知识图谱并存储至 Kùzu 图数据库;同时对原始文本进行向量化处理,构建基于 FAISS 的向量检索库。
在问答阶段,系统采用:
- Knowledge Graph Retrieval(知识图谱检索)
- Dense Retrieval(向量检索)QA
- Large Language Model(大语言模型生成)
三者结合的方式完成知识增强问答。
- Qwen2.5
- Ollama
- Kùzu Graph Database
- BAAI/bge-small-zh-v1.5
- FAISS
- Gradio
- LangChain
- Sentence Transformers
- NetworkX
- Matplotlib
从原始文本中自动抽取:
- 实体(Entity)
- 关系(Relationship)
构建图谱并写入 Kùzu 数据库。
示例:
OpenAI → 开发 → ChatGPT
ChatGPT → 基于 → Transformer架构
采用:
BAAI/bge-small-zh-v1.5
生成文本向量。
利用 FAISS 构建向量索引,实现语义检索。
系统同时执行:
获取实体关联信息。
获取相关文本片段。
优先利用知识图谱信息;
当知识图谱信息不足时,引入RAG结果补充回答。
支持展示:
- KG检索结果
- RAG检索结果
- 最终回答
SmartGraphQA/
├── README.md
├── requirements.txt
├── .gitignore
│
├── GraphRag_app.py
├── main_GraphBuild.py
├── main_GraphRagRetriever.py
├── main_build_vector_db.py
├── main_vector_retriever.py
│
├── example_data.txt
│
├── Models/
│ ├── LLM_Models.py
│ ├── model_utils.py
│ └── ...
│
├── DataBase/
│ ├── GraphData/
│ │ └── create_graph_knowledge.py
│ ├── config.py
│ └── prompt_utils.py
│
├── Prompts/
│ └── prompt_graph.py
│
├── GraphRag_WebUI_1.png
├── GraphRag_WebUI_2.png
├── GraphRagRetriever_1.png
└── GraphRagRetriever_2.png
Python 3.10
安装依赖:
pip install -r requirements.txt启动 Ollama:
ollama serve拉取模型:
ollama pull qwen2.5:7bpython main_GraphBuild.pypython main_build_vector_db.pypython main_GraphRagRetriever.pypython GraphRag_app.py问答系统效果图:
知识图谱构建图:
main_GraphRagRetriever终端运行截图:
- 基于 Kùzu 构建知识图谱
- 基于 FAISS 实现向量检索
- GraphRAG 混合检索架构
- 本地化部署(Ollama)
- Gradio WebUI 可视化
- 支持知识图谱与向量知识融合推理
- BGE-Reranker
- BCE-Reranker
- Hybrid Retrieval
- 多跳图谱检索
- 路径推理
- 社区发现
- Tool Calling
- Function Calling
- ReAct Agent
Yang Qingxia
研究方向:
- 大模型(LLM)
- RAG
- GraphRAG
- Agent
本项目在学习和实践过程中参考了以下优秀开源项目:
SMARTGRAPHQA
https://github.com/tangjun1878/SMARTGRAPHQA
项目中的知识图谱构建流程、实体关系抽取思路为本项目提供了重要参考。
All-in-RAG
https://github.com/datawhalechina/all-in-rag
项目中的 RAG 基础理论、向量检索流程及相关实践内容为本项目的实现提供了参考。
感谢开源社区的贡献。





