2025最新版微软GraphRAG 2.0.0本地部署教程:基于Ollama快速构建知识图谱

news2025/5/19 17:59:01

一、前言

微软近期发布了知识图谱工具 GraphRAG 2.0.0,支持基于本地大模型(Ollama)快速构建知识图谱,显著提升了RAG(检索增强生成)的效果。本文手把手教你如何从零部署,并附踩坑记录和性能实测!

二、环境准备

1. 创建虚拟环境

推荐使用 Python 3.12.4(亲测兼容性较佳):

conda create -n graphrag200 python=3.12.4
conda activate graphrag200

2. 拉取源码

建议通过Git下载最新代码(Windows用户需提前安装Git):

git clone https://github.com/microsoft/graphrag.git
cd graphrag

    (附:若直接下载压缩包解压,解压完后需创建一个仓库,不然后续会报错)

        创建仓库方法:

git init
git add .
git commit -m "Initial commit"

3. 安装依赖

一键安装所需依赖包:

pip install -e .

4. 创建输入文件夹

用于存放待处理的文档(Windows可以直接手动创建):

mkdir -p ./graphrag_ollama/input

将数据集放入input目录即可。

三、关键配置修改

1. 初始化项目

执行初始化命令(注意与旧版参数不同):

python -m graphrag init --root ./graphrag_ollama

2. 修改settings.yaml

核心配置项(需按需调整)

  • 模型设置:使用Ollama本地模型

 注意修改一下圈出的几个地方

测试小文件时,建议把chunks改小:

 修改结果如下:

  • ### This config file contains required core defaults that must be set, along with a handful of common optional settings.
    ### For a full list of available settings, see https://microsoft.github.io/graphrag/config/yaml/
    
    ### LLM settings ###
    ## There are a number of settings to tune the threading and token limits for LLM calls - check the docs.
    
    models:
      default_chat_model:
        type: openai_chat # or azure_openai_chat
        api_base: http://192.168.0.167:11434/v1
        # api_version: 2024-05-01-preview
        auth_type: api_key # or azure_managed_identity
        api_key: ${GRAPHRAG_API_KEY} # set this in the generated .env file
        # audience: "https://cognitiveservices.azure.com/.default"
        # organization: <organization_id>
        model: deepseek-r1:32b
        # deployment_name: <azure_model_deployment_name>
        encoding_model: cl100k_base # automatically set by tiktoken if left undefined
        model_supports_json: true # recommended if this is available for your model.
        concurrent_requests: 25 # max number of simultaneous LLM requests allowed
        async_mode: threaded # or asyncio
        retry_strategy: native
        max_retries: -1                   # set to -1 for dynamic retry logic (most optimal setting based on server response)
        tokens_per_minute: 0              # set to 0 to disable rate limiting
        requests_per_minute: 0            # set to 0 to disable rate limiting
      default_embedding_model:
        type: openai_embedding # or azure_openai_embedding
        api_base: http://192.168.0.167:11434/v1
        # api_version: 2024-05-01-preview
        auth_type: api_key # or azure_managed_identity
        api_key: ${GRAPHRAG_API_KEY}
        # audience: "https://cognitiveservices.azure.com/.default"
        # organization: <organization_id>
        model: bge-m3:latest
        # deployment_name: <azure_model_deployment_name>
        encoding_model: cl100k_base # automatically set by tiktoken if left undefined
        model_supports_json: true # recommended if this is available for your model.
        concurrent_requests: 25 # max number of simultaneous LLM requests allowed
        async_mode: threaded # or asyncio
        retry_strategy: native
        max_retries: -1                   # set to -1 for dynamic retry logic (most optimal setting based on server response)
        tokens_per_minute: 0              # set to 0 to disable rate limiting
        requests_per_minute: 0            # set to 0 to disable rate limiting
    
    vector_store:
      default_vector_store:
        type: lancedb
        db_uri: output\lancedb
        container_name: default
        overwrite: True
    
    embed_text:
      model_id: default_embedding_model
      vector_store_id: default_vector_store
    
    ### Input settings ###
    
    input:
      type: file # or blob
      file_type: text # or csv
      base_dir: "input"
      file_encoding: utf-8
      file_pattern: ".*\\.txt$$"
    
    chunks:
      size: 200
      overlap: 50
      group_by_columns: [id]
    
    ### Output settings ###
    ## If blob storage is specified in the following four sections,
    ## connection_string and container_name must be provided
    
    cache:
      type: file # [file, blob, cosmosdb]
      base_dir: "cache"
    
    reporting:
      type: file # [file, blob, cosmosdb]
      base_dir: "logs"
    
    output:
      type: file # [file, blob, cosmosdb]
      base_dir: "output"
    
    ### Workflow settings ###
    
    extract_graph:
      model_id: default_chat_model
      prompt: "prompts/extract_graph.txt"
      entity_types: [organization,person,geo,event]
      max_gleanings: 1
    
    summarize_descriptions:
      model_id: default_chat_model
      prompt: "prompts/summarize_descriptions.txt"
      max_length: 500
    
    extract_graph_nlp:
      text_analyzer:
        extractor_type: regex_english # [regex_english, syntactic_parser, cfg]
    
    extract_claims:
      enabled: false
      model_id: default_chat_model
      prompt: "prompts/extract_claims.txt"
      description: "Any claims or facts that could be relevant to information discovery."
      max_gleanings: 1
    
    community_reports:
      model_id: default_chat_model
      graph_prompt: "prompts/community_report_graph.txt"
      text_prompt: "prompts/community_report_text.txt"
      max_length: 2000
      max_input_length: 8000
    
    cluster_graph:
      max_cluster_size: 10
    
    embed_graph:
      enabled: false # if true, will generate node2vec embeddings for nodes
    
    umap:
      enabled: false # if true, will generate UMAP embeddings for nodes (embed_graph must also be enabled)
    
    snapshots:
      graphml: false
      embeddings: false
    
    ### Query settings ###
    ## The prompt locations are required here, but each search method has a number of optional knobs that can be tuned.
    ## See the config docs: https://microsoft.github.io/graphrag/config/yaml/#query
    
    local_search:
      chat_model_id: default_chat_model
      embedding_model_id: default_embedding_model
      prompt: "prompts/local_search_system_prompt.txt"
    
    global_search:
      chat_model_id: default_chat_model
      map_prompt: "prompts/global_search_map_system_prompt.txt"
      reduce_prompt: "prompts/global_search_reduce_system_prompt.txt"
      knowledge_prompt: "prompts/global_search_knowledge_system_prompt.txt"
    
    drift_search:
      chat_model_id: default_chat_model
      embedding_model_id: default_embedding_model
      prompt: "prompts/drift_search_system_prompt.txt"
      reduce_prompt: "prompts/drift_search_reduce_prompt.txt"
    
    basic_search:
      chat_model_id: default_chat_model
      embedding_model_id: default_embedding_model
      prompt: "prompts/basic_search_system_prompt.txt"
    

    四、构建知识图谱

    执行索引命令(算力警告:亲测4090-24G显卡处理2万字需3小时):

    python -m graphrag index --root ./graphrag_ollama

    五、知识图谱查询

    支持多种查询方式,按需选择:

  • 方法命令示例用途
    全局查询python -m graphrag query --method global --query "知识图谱定义"跨文档综合分析
    局部查询python -m graphrag query --method local --query "知识图谱定义"单文档精准检索
    DRIFT查询python -m graphrag query --method drift --query "知识图谱定义"动态漂移分析
    基础查询python -m graphrag query --method basic --query "知识图谱定义"传统RAG检索

六、注意事项

  1. 模型路径:确保Ollama服务已启动,且模型名称与配置一致(如deepseek-r1:32b需提前拉取)。

  2. 算力需求:小规模数据集建议使用GPU加速,CPU模式耗时可能成倍增加。

  3. 文件编码:输入文档需为UTF-8编码,否则可能报错。

  4. 配置备份:修改settings.yaml前建议备份原始文件。

七、总结

GraphRAG 2.0.0大幅优化了知识图谱的构建效率,结合本地模型可实现隐私安全的行业级应用。若遇到部署问题,欢迎在评论区留言交流!

相关资源

 GraphRAG GitHub仓库

Ollama模型库

原创声明:本文为作者原创,未经授权禁止转载。如需引用请联系作者。


点赞关注,技术不迷路! 👍
你的支持是我更新的最大动力! ⚡

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2337514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

libevent服务器附带qt界面开发(附带源码)

本章是入门章节&#xff0c;讲解如何实现一个附带界面的服务器&#xff0c;后续会完善与优化 使用qt编译libevent源码演示视频qt的一些知识 1.主要功能有登录界面 2.基于libevent实现的服务器的业务功能 使用qt编译libevent 下载这个&#xff0c;其他版本也可以 主要是github上…

智能体数据分析

数据概览&#xff1a; 展示智能体的累计对话次数、累计对话用户数、对话满意度、累计曝光次数。数据分析&#xff1a; 统计对话分析、流量分析、用户分析、行为分析数据指标&#xff0c;帮助开发者完成精准的全面分析。 ps&#xff1a;数据T1更新&#xff0c;当日12点更新前一天…

STM32(M4)入门: 概述、keil5安装与模板建立(价值 3w + 的嵌入式开发指南)

前言&#xff1a;本教程内容源自信盈达教培资料&#xff0c;价值3w&#xff0c;使用的是信盈达的405开发版&#xff0c;涵盖面很广&#xff0c;流程清晰&#xff0c;学完保证能从新手入门到小高手&#xff0c;软件方面可以无基础学习&#xff0c;硬件学习支持两种模式&#xff…

采用若依vue 快速开发系统功能模块

文章目录 运行若依项目 科室管理科室查询-后端代码实现科室查询-前端代码实现科室名称状态搜索科室删除-后端代码实现科室删除-前端代码实现科室新增-后端代码实现科室新增-前端代码实现科室修改-后端代码实现前端代码实现角色权限实现 运行若依项目 运行redis 创建数据库 修改…

HTML:表格数据展示区

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>人员信息表</title><link rel"styl…

Oracle测试题目及笔记(单选)

所有题目来自于互联网搜索 当 Oracle 服务器启动时&#xff0c;下列哪种文件不是必须的&#xff08;D&#xff09;。 A&#xff0e;数据文件 B&#xff0e;控制文件 C&#xff0e;日志文件 D&#xff0e;归档日志文件 数据文件、日志文件-在数据库的打开阶段使用 控制文件-在数…

Jmeter创建使用变量——能够递增递减的计数器

Jmeter创建使用变量——能够递增递减的计数器 如下图所示&#xff0c;创建一个 取值需限定为0 2 4这三个值内的变量。 Increment&#xff1a;每次迭代后 递增的值&#xff0c;给计数器增加的值 Maximum value&#xff1a;计数器的最大值&#xff0c;如果超过最大值&#xff0…

数据结构之BFS广度优先算法(腐烂的苹果)

队列这个数据结构在很多场景下都有使用&#xff0c;比如在实现二叉树的层序遍历&#xff0c;floodfill问题(等等未完成)中&#xff0c;都需要借助队列的先进先出特性&#xff0c;下面给出这几个问题的解法 经典的二叉树的层序遍历 算法图示&#xff0c;以下图所示的二叉树为例…

火车头采集动态加载Ajax数据(无分页瀑布流网站)

为了先填充好数据在上线&#xff0c;在本地搭建了一个网站&#xff0c;并用火车头采集数据填充到里面。 开始很上手&#xff0c;因为找的网站的分类中是有分页的。很快捷的找到页面标识。 但是问题来了&#xff0c;如今很多网站都是采用的Ajax加载数据&#xff0c;根本没有分…

Node.js模块化与npm

目录 一、模块化简介 二、CommonJS 规范 1. 基本语法 2. 导出模块 3. 导入模块 三、ECMAScript 标准&#xff08;ESM&#xff09; 1. 启用 ESM 一、默认导出与导入 1. 基本语法 2. 默认导出&#xff08;每个模块仅一个&#xff09; 3. 默认导入 二、命名导出与导入…

nginx中的代理缓存

1.缓存存放路径 对key取哈希值之后&#xff0c;设置cache内容&#xff0c;然后得到的哈希值的倒数第一位作为第一个子目录&#xff0c;倒数第三位和倒数第二位组成的字符串作为第二个子目录&#xff0c;如图。 proxy_cache_path /xxxx/ levels1:2 2.文件名哈希值

【前端vue生成二维码和条形码——MQ】

前端vue生成二维码和条形码——MQ 前端vue生成二维码和条形码——MQ一、安装所需要的库1、安装qrcode2、安装jsbarcode 二、使用步骤1、二维码生成2、条形码生成 至此&#xff0c;大功告成&#xff01; 前端vue生成二维码和条形码——MQ 一、安装所需要的库 1、安装qrcode 1…

flutter 桌面应用之窗口自定义

在开发桌面软件的时候我们经常需要配置软件的窗口的大小以及位置 我们有两个框架选择:window_manager和bitsdojo_window 对比bitsdojo_window 特性bitsdojo_windowwindow_manager自定义标题栏✅ 支持❌ 不支持控制窗口行为&#xff08;大小/位置&#xff09;✅&#xff08;基本…

华为OD机试真题——MELON的难题(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析&#xff1b; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式&#xff01; 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《MELON的…

【C++】深入浅出之继承

目录 继承的概念及定义继承的定义继承方式和访问限定符protected与private的区别 默认继承方式继承类模板基类和派生类对象赋值兼容转换继承中的作⽤域(隐藏关系)相关面试题⭐ 派生类的默认成员函数⭐构造函数拷贝构造赋值重载析构函数 继承与友元继承与静态成员继承的方式菱形…

在 macOS 上切换默认 Java 版本

下载javasdk 打开android studio -> setting -> build.execution,dep -> build tools -> gradle -> Gradle JDK -> download JDK… 点击下载&#xff0c;就下载到了 ~/Library/Java/JavaVirtualMachines/ 安装 jenv brew install jenv将 jenv 集成到 Shell …

【安卓开发】【Android Studio】Menu(菜单栏)的使用及常见问题

一、菜单栏选项 在项目中添加顶部菜单栏的方法&#xff1a; 在res目录下新建menu文件夹&#xff0c;在该文件夹下新建用于菜单栏的xml文件&#xff1a; 举例说明菜单栏的写法&#xff0c;只添加一个选项元素&#xff1a; <?xml version"1.0" encoding"ut…

jenkins凭据管理(配置github密钥)

凭据分类 Jenkins可以保存下面几种凭证&#xff1a; Secret text&#xff1a;例如 API Token&#xff08;例如GitHub的个人access token&#xff09;。Username with password&#xff1a;指的是登录GitHub的用户名和密码&#xff0c;可以作为单独的组件处理&#xff0c;也可以…

数据结构|排序算法(三)选择排序 堆排序 归并排序

一、选择排序 1.算法思想 选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法&#xff0c;其基本思想是&#xff1a;每次都从待排序部分中选出最小的一个数据和待排序的第一个数据交换。 将待排序序列分为已排序和未排序两部分&#xff0c;初始时已排…

MAC Mini M4 上测试Detectron2 图像识别库

断断续续地做图像识别的应用&#xff0c;使用过各种图像识别算法&#xff0c;一开始使用openCV 做教室学生计数的程序。以后又使用YOLO 做医学伤口检测程序。最近&#xff0c;开始使用meta 公司的Detectron2.打算做OCR 文档结构分析 Detectron2 的开发者是 Meta 的 Facebook AI…