llm-graph-builder与Azure OpenAI集成:企业级知识图谱构建方案
在当今数据驱动的商业环境中,企业面临着将海量非结构化数据转化为结构化知识的挑战。llm-graph-builder作为一款强大的知识图谱构建工具,通过与Azure OpenAI服务的深度集成,为企业提供了从非结构化数据(如PDF、文档、网页等)到结构化知识图谱的完整解决方案。本文将详细介绍如何配置和使用这一集成方案,帮助企业快速构建高质量的知识图谱。
方案概述
llm-graph-builder利用大型语言模型(LLM)的能力,将非结构化数据转化为存储在Neo4j图数据库中的结构化知识图谱。通过集成Azure OpenAI服务,企业可以利用微软 Azure 云平台的安全、可扩展特性,结合OpenAI的先进语言模型,实现高效、准确的实体和关系提取。
核心优势包括:
- 支持多种数据源:本地文件、网页、YouTube视频、AWS S3、Google Cloud Storage等
- 灵活的LLM配置:支持Azure OpenAI及多种其他模型
- 强大的图谱可视化:通过Neo4j Bloom实现直观的图谱浏览
- 智能问答功能:与知识图谱进行自然语言交互
环境准备
系统要求
- Neo4j数据库 5.23或更高版本(推荐使用Neo4j Aura)
- Python 3.8+ 环境
- Node.js 14+ 环境
- Azure OpenAI服务订阅
基础架构
项目采用前后端分离架构:
- 后端:基于FastAPI构建的Python服务 backend/src/main.py
- 前端:React单页应用 frontend/src/App.tsx
- 数据库:Neo4j图数据库
项目架构
配置Azure OpenAI集成
后端配置
-
获取Azure OpenAI凭证
- 登录Azure门户,创建或选择OpenAI资源
- 获取API密钥、终结点(Endpoint)和部署名称(Deployment Name)
-
配置环境变量 编辑后端环境配置文件 backend/example.env,添加以下Azure OpenAI相关配置:
# Azure OpenAI配置示例 LLM_MODEL_CONFIG_azure_ai_gpt_35="your-deployment-name,https://your-endpoint.openai.azure.com/,your-api-key,2024-02-15-preview" LLM_MODEL_CONFIG_azure_ai_gpt_4o="gpt-4o,https://your-endpoint.openai.azure.com/,your-api-key,2024-02-15-preview"其中各参数含义:
- 第一个值:Azure OpenAI部署名称
- 第二个值:Azure OpenAI服务终结点URL
- 第三个值:Azure OpenAI API密钥
- 第四个值:API版本
-
安装依赖
cd backend python -m venv env source env/bin/activate # Windows: env\Scripts\activate pip install -r requirements.txt
前端配置
-
启用Azure OpenAI模型 编辑前端环境配置文件 frontend/example.env,在VITE_LLM_MODELS中添加Azure OpenAI模型:
VITE_LLM_MODELS="diffbot,openai_gpt_4o,azure_ai_gpt_35,azure_ai_gpt_4o" -
安装前端依赖
cd frontend yarn install
部署与运行
使用Docker Compose部署(推荐)
-
创建.env文件 在项目根目录创建.env文件,包含必要的环境变量:
# 后端配置 NEO4J_URI=neo4j+s://your-neo4j-uri.databases.neo4j.io NEO4J_USERNAME=neo4j NEO4J_PASSWORD=your-neo4j-password LLM_MODEL_CONFIG_azure_ai_gpt_4o="gpt-4o,https://your-endpoint.openai.azure.com/,your-api-key,2024-02-15-preview" # 前端配置 VITE_LLM_MODELS="azure_ai_gpt_4o,azure_ai_gpt_35" VITE_BACKEND_API_URL=http://localhost:8000 -
启动服务
docker-compose up -d
手动部署
-
启动后端服务
cd backend uvicorn score:app --reload --host 0.0.0.0 --port 8000 -
启动前端服务
cd frontend yarn run dev
使用流程
1. 连接Neo4j数据库
访问前端应用(默认地址:http://localhost:8080),在登录界面配置Neo4j连接:
可以通过三种方式连接:
- 手动输入连接URI和密码
- 上传Neo4j凭证文件
- 使用环境变量预配置
2. 选择数据源
llm-graph-builder支持多种数据源,点击相应图标选择:
支持的数据源包括:
- 本地文件上传 frontend/src/components/DataSources/Local/DropZone.tsx
- 网页内容 frontend/src/components/WebSources/Web/WebInput.tsx
- YouTube视频 frontend/src/components/WebSources/Youtube/YoutubeInput.tsx
- Wikipedia页面 frontend/src/components/WebSources/WikiPedia/WikipediaInput.tsx
- AWS S3存储 frontend/src/components/DataSources/AWS/S3Bucket.tsx
- Google Cloud Storage frontend/src/components/DataSources/GCS/GCSButton.tsx
3. 配置Azure OpenAI模型
在文件上传后,从LLM模型下拉菜单中选择Azure OpenAI模型:
4. 定义图谱 schema(可选)
在实体提取设置中,可以定义自定义schema,指定要提取的实体类型和关系类型:
项目提供了预设的schema模板 frontend/src/assets/schemas.json,也可以创建新的schema frontend/src/assets/newSchema.json。
5. 生成知识图谱
点击"Generate Graph"按钮开始处理数据并生成知识图谱:
处理状态会实时更新,大型文件可能需要较长时间。处理完成后,状态会更新为"Completed":
6. 可视化知识图谱
点击"View"按钮在Neo4j Bloom中查看生成的知识图谱:
可以同时查看多个文件的图谱,或按实体类型、关系类型进行筛选。
7. 与知识图谱交互
使用聊天功能与知识图谱进行自然语言交互:
支持多种聊天模式 frontend/src/components/ChatBot/ChatModesSwitch.tsx:
- Vector:基于向量相似性的检索
- Graph:基于图结构的检索
- Graph+Vector:混合检索模式
- Fulltext:全文检索
高级功能
图谱增强
llm-graph-builder提供多种图谱优化功能:
- 实体消歧:合并重复实体 docs/frontend/images/MergeDuplicateEntities.jpg
- 删除孤立节点 docs/frontend/images/DeleteOrphanNodes.jpg
- 实体关系丰富:通过LLM推断补充关系
多文件图谱整合
系统支持同时处理多个文件,并将它们的实体和关系整合到统一的知识图谱中:
问答指标评估
可以对问答性能进行评估,包括准确性、相关性等指标:
评估结果可帮助优化模型选择和参数配置。
性能优化建议
1. 调整分块策略
根据文档类型和长度,调整分块大小和重叠度:
# 前端环境变量
VITE_CHUNK_OVERLAP=20 # 分块重叠百分比
VITE_TOKENS_PER_CHUNK=100 # 每块的标记数
VITE_CHUNK_TO_COMBINE=5 # 合并处理的块数
2. 选择合适的Azure OpenAI模型
- 对于快速处理和成本敏感场景,推荐使用gpt-35-turbo
- 对于复杂实体和关系提取,推荐使用gpt-4o
3. 启用缓存机制
配置GCS文件缓存可以提高重复处理相同文件的效率:
# 后端环境变量
GCS_FILE_CACHE=True
常见问题解决
连接问题
如果遇到Azure OpenAI连接问题,请检查:
- API密钥和终结点URL是否正确
- 网络连接是否允许访问Azure服务
- Azure资源是否在有效期内
性能问题
处理大型文件时可能遇到性能瓶颈,可以:
- 增加分块大小 frontend/src/components/ChunkInfo.tsx
- 使用并行处理 backend/src/create_chunks.py
- 优化实体提取提示词
实体提取质量问题
如果实体或关系提取质量不佳:
- 尝试更具体的schema定义
- 使用更高能力的模型(如从gpt-35-turbo切换到gpt-4o)
- 提供示例实体和关系作为提示
总结与展望
llm-graph-builder与Azure OpenAI的集成为企业提供了强大的知识图谱构建解决方案。通过本文介绍的配置和使用方法,企业可以快速将非结构化数据转化为结构化知识,赋能智能决策和创新应用。
未来发展方向包括:
- 更丰富的实体类型和关系类型支持
- 多语言处理能力增强
- 自动化图谱验证和修正
- 与企业现有系统的深度集成
参考资源
- 官方文档:docs/project_docs.adoc
- 后端API文档:docs/backend/backend_docs.adoc
- 前端开发文档:docs/frontend/frontend_docs.adoc
- 项目源代码:README.md
- 环境配置示例:backend/example.env 和 frontend/example.env
希望本文能帮助您成功实施llm-graph-builder与Azure OpenAI的集成方案。如有任何问题或建议,请通过项目GitHub Issues反馈。
Happy Graph Building!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
















