本地部署 GraphRAG

张开发
2026/5/4 3:54:46 15 分钟阅读
本地部署 GraphRAG
本地部署 GraphRAG 主要有两种主流方案使用微软官方 GraphRAG 命令行工具或使用集成 UI 的生态项目。下面按步骤说明最实用的本地部署方案。 方案对比方案特点适合人群方案一微软官方 GraphRAG功能完整支持全局/局部搜索但仅限命令行开发者、技术调研方案二GraphRAG-Local-UI带可视化界面支持本地模型Ollama不想用 OpenAI、喜欢 GUI 的用户方案三GraphRAG-SDK支持图数据库FalkorDB/Neo4j和多智能体企业级应用、复杂场景 方案一微软官方 GraphRAG命令行版1. 环境准备# 创建虚拟环境Python 3.10-3.12conda create-ngraphragpython3.11conda activate graphrag# 安装 GraphRAGpipinstallgraphrag2. 准备数据与初始化# 创建项目目录mkdir-p./ragtest/input# 放入测试文档支持 txt/pdf/docx# 例如下载示例文本curlhttps://www.gutenberg.org/cache/epub/24022/pg24022.txt-o./ragtest/input/book.txt# 初始化配置python-mgraphrag.index--init--root./ragtest初始化后目录结构如下ragtest/ ├── .env # API密钥配置 ├── settings.yaml # 模型、切片等参数 └── prompts/ # 实体抽取等提示词模板3. 配置 API 密钥编辑./ragtest/.envGRAPHRAG_API_KEYyour_openai_api_key编辑./ragtest/settings.yaml使用 OpenAI 兼容 API如 DeepSeek 或硅基流动llm:api_key:${GRAPHRAG_API_KEY}type:openai_chatmodel:gpt-4o-mini# 或 deepseek-chatapi_base:https://api.openai.com/v1# 替换为自定义 endpointmodel_supports_json:trueembeddings:llm:api_key:${GRAPHRAG_API_KEY}type:openai_embeddingmodel:text-embedding-3-small4. 构建知识图谱索引python-mgraphrag.index--root./ragtest这一步会调用 LLM 提取实体、关系并进行社区检测耗时取决于文档大小和 API 速率。索引完成后./ragtest/output/目录会生成entities.parquet- 实体表relationships.parquet- 关系表communities.parquet- 社区结构5. 执行查询# 全局查询适合主题性问题python-mgraphrag.query--root./ragtest--methodglobal故事的核心主题是什么# 局部查询适合实体细节python-mgraphrag.query--root./ragtest--methodlocal主角有哪些主要关系️ 方案二GraphRAG-Local-UI带界面支持本地模型如果你不想依赖 OpenAI API可以使用这个带完整 UI 的开源项目。1. 安装 Ollama 并下载模型# 安装 Ollama参考 ollama.comollama pull llama3.1:8b# LLM 模型ollama pull nomic-embed-text# 嵌入模型2. 克隆并安装项目gitclone https://github.com/your-repo/GraphRAG-Local-UI.gitcdGraphRAG-Local-UI# 创建虚拟环境conda create-ngraphrag-localpython3.11conda activate graphrag-local# 安装依赖pipinstall-e./graphrag pipinstall-rrequirements.txt3. 启动服务# 终端1启动 API 服务器python api.py--host0.0.0.0--port8012--reload# 终端2如使用 Ollama 嵌入启动嵌入代理python embedding_proxy.py--port11435--hosthttp://localhost:11434# 终端3启动索引和提示调优 UIgradio index_app.py# 终端4启动主交互 UIgradio app.py访问索引 UIhttp://localhost:7861主应用 UIhttp://localhost:78604. 通过 UI 完成索引与查询在index_app.py界面中配置settings.yaml指向本地 Ollama上传文档到./indexing/input/运行索引任务在主应用中执行查询并可视化知识图谱️ 方案三GraphRAG-SDK图数据库 多智能体适合需要持久化存储、大规模图谱或智能体协作的企业场景。1. 启动图数据库FalkorDBdockerrun-p6379:6379-p3000:3000-it--rm-v./data:/data falkordb/falkordb:latest2. 安装 SDKpipinstallgraphrag_sdk3. 配置环境变量exportFALKORDB_HOSTlocalhostexportFALKORDB_PORT6379exportOPENAI_API_KEYyour-key# 或使用 Ollama4. 创建知识图谱并查询fromgraphrag_sdkimportKnowledgeGraph,Ontologyfromgraphrag_sdk.sourceimportURLfromgraphrag_sdk.models.litellmimportLiteModel# 定义数据源sources[URL(https://example.com/doc1),URL(https://example.com/doc2)]# 自动检测本体modelLiteModel(model_nameopenai/gpt-4.1)ontologyOntology.from_sources(sourcessources,modelmodel)# 创建知识图谱kgKnowledgeGraph(namemy_knowledge_graph,model_configKnowledgeGraphModelConfig.with_model(model),ontologyontology,hostlocalhost,port6379)# 处理文档实体提取 关系构建kg.process_sources(sources)# 查询chatkg.chat_session()responsechat.send_message(这些文档的主要内容是什么)print(response)⚠️ 常见问题与优化建议问题解决方案API 费用过高使用 Ollama 本地模型或选择 DeepSeek/硅基流动等便宜 API索引速度慢调整settings.yaml中concurrent_requests: 5增加并发内存不足减少chunk_size如 600→300降低社区检测分辨率中文支持差使用中文嵌入模型如BAAI/bge-large-zh-v1.5并确保 prompt 模板包含中文示例实体抽取不准修改prompts/entity_extraction.txt自定义entity_types如[人物,地点,事件] 总结你的需求推荐方案快速体验、技术调研方案一微软官方 GraphRAG OpenAI API不想花钱、喜欢图形界面方案二GraphRAG-Local-UI Ollama企业级、大规模知识库方案三GraphRAG-SDK FalkorDB/Neo4j建议先从方案一入手理解 GraphRAG 的核心流程实体提取 → 社区检测 → 全局/局部查询再根据实际需求切换到其他方案。

更多文章