这是一个基于PDF文档的知识图谱构建和更新系统,支持自动处理PDF文件、构建知识图谱、向量检索和增量更新等功能。
系统主要由以下几个核心组件构成:
process_pdfs.py: PDF文件处理模块,负责将PDF转换为可处理的文本格式chunk_processor.py: 文本分块处理模块,将长文本分割成适合处理的块
kg_builder.py: 知识图谱构建器,负责实体和关系的提取、存储和检索graph_matcher.py: 图匹配模块,用于知识图谱的匹配和查询
embedding_handler.py: 向量处理模块,负责文本的向量化retriever.py: 向量检索模块,支持相似度搜索reranker.py: 重排序模块,优化检索结果
LLM_tool.py: 大语言模型工具类LLMhandler.py: 异步大语言模型处理接口prompts.py: 提示词模板管理
prepare_system.py: 系统初始化模块knowledge_update.py: 知识库更新模块main.py: 主程序入口
-
PDF文档处理
- 支持批量PDF文件处理
- 自动文本提取和分块
- 增量更新支持
-
知识图谱构建
- 实体和关系自动提取
- Neo4j图数据库存储
- 向量化索引支持
-
智能检索
- 基于向量的语义搜索
- 知识图谱关系查询
- 结果重排序优化
-
增量更新
- 文件变更检测
- 自动知识图谱更新
- 向量索引维护
- Python 3.10+
- Neo4j数据库
- 必要的Python包(requirements.txt)
- 克隆项目
git clone [项目地址]
cd [项目目录]- 安装依赖
pip install -r requirements.txt- 配置环境变量
export NEO4J_URI="bolt://localhost:7687"
export NEO4J_USER="neo4j"
export NEO4J_PASSWORD="your_password"- 初始化系统
python prepare_system.pyfrom prepare_system import SystemPreparer
preparer = SystemPreparer()
await preparer.run_full_preparation()from knowledge_update import KnowledgeBaseUpdater
updater = KnowledgeBaseUpdater()
await updater.update_knowledge_base()from retriever import Retriever
retriever = Retriever()
results = await retriever.search("查询内容").
├── data/ # 数据存储
│ ├── embeddings/ # 向量索引(FAISS格式)
│ ├── pdfs/ # 原始PDF文件
│ └── update_log.json # 更新记录
├── docs/ # 文档
├── src/
│ ├── kg_builder.py # 知识图谱构建核心
│ ├── retriever.py # 混合检索模块
│ ├── reranker.py # 重排序模块
│ └── LLMhandler.py # 大模型接口
└── requirements.txt # 依赖清单graph TD
A[PDF文件] --> B{process_pdfs.py}
B --> C[Markdown文本]
C --> D{chunk_processor.py}
D --> E[文本分块]
E --> F[kg_builder.py]
F --> G[Neo4j知识图谱]
F --> H[FAISS向量索引]
G --> I[graph_matcher.py]
H --> J[retriever.py]
J --> K[reranker.py]
K --> L[最终结果]