🌟 核心功能一览
知识提取引擎
- 多源数据接入:支持本地文件、S3/GCS云存储、网页URL、YouTube视频及网络知识库内容导入
- 智能分块处理:自动将文档切割为语义连贯的文本块,保留上下文关系
- 实体关系抽取:通过语言模型自动识别命名实体与关系,构建结构化知识图谱
图数据库管理
- 可视化图谱构建:直观展示文档、段落、实体间的关联网络
- 社区发现算法:自动识别紧密关联的实体集群,揭示隐藏知识结构
- 数据质量优化:提供重复节点合并、孤立节点清理等图谱增强工具
智能问答系统
- 多模式检索:融合向量相似性、图结构和全文检索的混合查询能力
- 上下文感知对话:维持对话状态并支持历史记录管理
- 来源追溯:所有回答均可定位至原始文档片段,确保可解释性
一站式开发界面
- 拖拽式文件上传:简化本地文档导入流程
- 实时处理状态:直观展示数据处理进度与状态
- 主题切换:支持明暗两种显示模式,适应不同使用场景
📌 核心价值:将非结构化文本数据直接转化为结构化知识图谱,大幅降低从数据到洞察的转化门槛,同时保持知识的可解释性与关联性。
常见问题
Q: 系统支持哪些类型的文件导入?
A: 支持PDF文档、纯文本、网页内容、YouTube视频(通过转录)及网络知识库条目,本地文件最大支持100MB。
Q: 实体识别的准确率如何保证?
A: 系统采用语言模型结合领域规则的混合识别策略,用户可通过自定义模式进一步优化特定实体类型的识别效果。
🚀 快速上手指南
环境准备
# 克隆项目仓库
git clone https://gitcode.com/GitHub_Trending/ll/llm-graph-builder
cd llm-graph-builder
# 启动服务
docker-compose up -d
预期结果:终端显示三个服务均启动成功(frontend、backend、neo4j),可通过 http://localhost:5173 访问前端界面。
新手友好操作
1️⃣ 本地文件导入
- 在主界面点击"上传文件"区域或直接拖拽PDF文档至指定区域
- 等待文件处理完成(小型文档通常<30秒)
- 点击"查看图谱"按钮探索生成的知识网络
💡 提示:文件状态会经历"New"→"Processing"→"Completed"三个阶段,完成后才可查看图谱。大型文件可能需要更长处理时间。
2️⃣ 图数据库连接
- 点击右上角"数据库连接"按钮
- 输入Neo4j连接信息(本地部署默认:bolt://localhost:7687,用户neo4j,密码neo4j)
- 点击"测试连接",成功后保存配置
📌 重点:首次连接需修改默认密码,生产环境建议使用强密码并启用加密连接。
3️⃣ 智能问答
- 在左侧聊天面板输入问题(如:"本文讨论了哪些主要技术?")
- 选择适当的聊天模式(推荐新手使用"混合检索"模式)
- 查看回答及引用来源,可点击来源链接直接定位至原始文档片段
项目结构速览
| 目录/文件 | 功能描述 | 重要性 | 新手优先级 |
|---|---|---|---|
| backend/ | 核心服务与业务逻辑 | ⭐⭐⭐⭐⭐ | 中 |
| frontend/ | 可视化界面与交互 | ⭐⭐⭐⭐ | 高 |
| docker-compose.yml | 服务编排配置 | ⭐⭐⭐⭐⭐ | 高 |
| data/ | 示例数据存储 | ⭐⭐ | 低 |
| docs/ | 项目文档与图示 | ⭐⭐⭐ | 中 |
常见问题
Q: 启动后无法访问前端界面怎么办?
A: 检查5173端口是否被占用,可通过docker-compose logs frontend查看具体错误信息。
Q: 上传文件后状态一直显示"Processing"?
A: 可能是语言模型服务未响应,可查看backend日志确认模型是否正常加载,大型文件处理可能需要3-5分钟。
🛠️ 深度解析
后端架构解析
数据处理流水线
- 文档加载:
document_sources/目录下各类数据源适配器,统一转换为文本格式 - 文本分块:
create_chunks.py实现基于语义的智能分块算法,默认大小512 tokens - 实体抽取:
llm.py中get_graph_from_llm()函数协调实体与关系抽取 - 图存储:
graphDB_dataAccess.py提供Neo4j数据库交互封装
核心技术组件
- 语言模型集成层:支持多种模型接入,默认使用GPT-4进行实体关系抽取
- 向量引擎:采用Sentence-BERT生成文本嵌入,支持高效相似性检索
- 图算法模块:实现社区发现、路径分析等图挖掘功能
前端交互设计
关键界面组件
- 文件管理面板:展示所有导入文档及其处理状态
- 图谱可视化区:交互式知识图谱展示,支持缩放、平移与节点筛选
- 聊天界面:提供多模式问答与上下文管理
- 设置面板:配置语言模型、分块策略及显示选项
技术实现
- React + TypeScript构建响应式界面
- D3.js实现高性能图谱可视化
- WebSocket实现实时处理状态更新
配置指南
环境变量配置
创建.env文件,关键配置项:
# 后端配置
NEO4J_URI=bolt://neo4j:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=your_secure_password
LLM_MODEL=gpt-4 # 可选:gpt-3.5-turbo, claude-2等
# 前端配置
VITE_BACKEND_API_URL=http://localhost:8000
配置要点
- 数据库连接:确保Neo4j服务可访问,AuraDB用户需使用提供的连接字符串
- API密钥:相关API密钥需正确配置才能使用云端语言模型
- 资源限制:根据服务器配置调整
MAX_FILE_SIZE和CONCURRENT_JOBS参数 - 日志级别:开发环境使用DEBUG,生产环境建议INFO级别
常见问题
Q: 如何更换使用的语言模型?
A: 修改.env文件中的LLM_MODEL参数,支持所有兼容的模型接口,本地部署可使用开源模型。
Q: 能否自定义实体识别规则?
A: 可以通过src/shared/schema_extraction.py文件扩展实体类型定义,或在前端"图谱增强"面板中配置自定义模式。
⚙️ 扩展配置与高级功能
性能优化
分块策略调整
修改create_chunks.py中的分块参数:
token_chunk_size:调整文本块大小(默认512 tokens)chunk_overlap:设置块间重叠比例(默认0.2)
💡 优化建议:长文档建议使用较大块大小(768-1024)保持上下文连贯,技术文档可减小块大小提高实体识别精度。
向量索引优化
# 在graphDB_dataAccess.py中调整
def drop_create_vector_index(self, isVectorIndexExist):
# 修改向量维度匹配自定义嵌入模型
query = "CREATE VECTOR INDEX chunk_embeddings IF NOT EXISTS FOR (c:Chunk) ON (c.embedding) "
query += "OPTIONS {indexConfig: {vector.dimensions: 384, vector.similarity_function: 'cosine'}}"
self.execute_query(query)
自定义实体关系
模式定义
通过src/assets/newSchema.json定义自定义实体关系模式:
{
"nodes": [
{"label": "Product", "properties": ["name", "category", "release_date"]},
{"label": "Company", "properties": ["name", "industry", "founded_year"]}
],
"relationships": [
{"type": "MANUFACTURES", "source": "Company", "target": "Product"},
{"type": "COMPETITOR", "source": "Company", "target": "Company"}
]
}
应用方法
- 在前端"图谱增强"面板上传自定义模式文件
- 启用"自定义实体抽取"选项
- 重新处理文档使配置生效
项目扩展方向
1. 多语言支持
- 扩展
llm.py中的提示模板,添加多语言支持 - 集成语言检测库自动识别文档语言
- 适配非英语文本的分块策略与实体识别规则
2. 领域知识库构建
- 开发特定行业的实体识别规则(如医疗、法律)
- 添加领域词典与专业术语表
- 构建行业特定的关系类型与属性模板
3. 自动化知识更新
- 实现RSS/Atom源监控,自动导入最新文档
- 开发知识冲突检测机制,处理新旧信息矛盾
- 构建增量图谱更新算法,避免全量重处理
常见问题
Q: 如何提高大型文档的处理速度?
A: 可启用并行处理模式(设置PARALLEL_PROCESSING=true),或调整分块大小减少处理单元数量。
Q: 能否将现有知识图谱导出为其他格式?
A: 系统支持Cypher脚本导出,可通过neo4j-admin工具将数据迁移至其他图数据库,或使用APOC插件导出为CSV/JSON格式。
📚 附录:核心配置文件说明
docker-compose.yml
配置要点:
- 定义前端、后端与Neo4j服务的依赖关系
- 配置端口映射与数据卷挂载
- 设置环境变量传递
backend/src/shared/constants.py
配置要点:
- 定义分块大小、重叠比例等处理参数
- 设置语言模型默认参数与API超时配置
- 配置日志级别与输出格式
frontend/src/utils/Constants.ts
配置要点:
- 定义前端API调用端点
- 设置UI显示参数与状态码
- 配置聊天模式与检索策略映射
通过这些核心配置文件,用户可以根据具体需求调整系统行为,平衡处理速度、资源占用与知识图谱质量。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



