目录

军事 GraphRAG 问答系统

自然语言处理课程(大三下)实战实验:以军事领域知识为语料,构建 FAISS 向量检索 + Neo4j 知识图谱的 GraphRAG 问答系统,并完成自动化评测。

任务背景

  • 关卡一(基础 RAG):用 LangChain 加载军事文本文档,RecursiveCharacterTextSplitter 切分,嵌入模型向量化后存入 FAISS,再以 RetrievalQA 链串联本地 Qwen 模型实现”检索-生成”问答。
  • 关卡二(GraphRAG):基于课程提供的 fned.json 语料(10500 条 TextUnit)与实体/关系 CSV,导入 Neo4j 构建 20707 实体、20269 关系的知识图谱;用 Aho-Corasick 建立 MENTIONS 关联,Leiden 算法做社区发现并生成社区摘要,最终实现 Basic / Local / Global / DRIFT 四种检索模式的端到端 GraphRAG 问答。
  • 评测方式:benchmark_questions.json 中 100 道实体关系判断题,单题 30 秒限时,四种模式准确率均超过 50% 判定通过。实测结果(见 task2/graph_rag_evaluation_results.json):Local 100%,Global 89.3%,Basic 88.9%,Drift 85.7%,全部通过。

内容结构

路径 说明
task1/task1.ipynb 关卡一:文档加载切分、嵌入、FAISS 建库、RetrievalQA 问答链
task1/my_documents/ 三个军事知识测试文本(坦克手册/内务条令/甲午战史)
task1/military_faiss_index/ 关卡一 FAISS 索引(小型,可直接重载)
task1/nodes_neo4j.csv、rels_neo4j.csv 图谱节点/关系数据(20707 实体、20269 关系)
task2/task2.ipynb 关卡二:TextUnit/实体/社区三级向量索引、Neo4j 导入、MENTIONS 关联、Leiden 聚类、四种查询模式与限时评测
task2/benchmark_questions.json 100 道评测题
task2/graph_rag_evaluation_results.json 四种模式的评测结果
task2/entity_vectors/、military_text_vector_index/、community_vectors/ 各级向量索引的 id 映射与小型索引
generate_report.js 用 Node docx 库生成实验报告的脚本
实验环境.md 硬件、模型、依赖版本记录

未入库的大文件(超出轻量数据限制,重跑 notebook 即可重建):fned.json 语料(task1/task2 各 10.6MB)、task2/entity_vectors/index.faiss(42MB)、task2/military_text_vector_index/index.faiss(21.5MB)。课程下发的任务 PDF、实验报告 doc 与压缩包亦不入库。

运行方法

Python 3.10,核心依赖(完整版本见 实验环境.md):

pip install langchain langchain-community langchain-huggingface langchain-text-splitters \
    faiss-cpu neo4j sentence-transformers transformers torch accelerate \
    pandas jieba pyahocorasick python-igraph leidenalg jupyter
  1. 启动本地 Neo4j(4.x,bolt 端口 7687,默认用户/密码 neo4j)。
  2. 准备本地模型:bge-small-zh-v1.5(嵌入)、Qwen2.5-0.5B-Instruct 或更大的 Qwen 生成模型,把 notebook 中的模型路径改成本机路径;fned.json 语料需自行放回 task1/task2 目录(课程下发,体积原因未入库)。
  3. 依次运行 task1/task1.ipynb、task2/task2.ipynb,末尾的限时评测单元格输出通过标志。

生成报告(可选):npm install && node generate_report.js。

来源声明

  • 任务要求、notebook 题干框架(含”完成下面的代码”填空与限时评测单元格)来自课程下发的实验材料;任务 PDF 与语料 fned.json、图谱 CSV 为课程提供的数据。
  • 填空代码、评测调通、报告生成脚本为本人在课程框架内完成;实验环境.md 为本人实验环境实录。
关于

自然语言处理大作业:FAISS 向量检索 + Neo4j 图谱的 GraphRAG 问答与评测(task1/task2)

3.8 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号