返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

最佳实践|本地跑GraphRAG

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 16:11 |阅读模式 打印 上一主题 下一主题

为在本地环境中部署GraphRAG,需配置两种模型:一是用于实体提取与摘要的LLM(大型语言模型),二是用于数据向量化的Embedding模型。当前,GraphRAG采用的是OpenAI提供的模型,故部署的核心在于选用兼容OpenAI API标准的模型以实现替代。今天带大家一起沉浸式体验本地运行GraphRAG,并且在支持中文graph构建上做了一些优化改进

点关注不迷路

一、准备环境

  • Python3.10 (推荐)
  • Pycharm
  • Qwen2-72B-Instruct (LLM 模型)
  • bge-m3 (Embedding 模型)
  • Xinference (Embedding 模型部署平台)
  • 3090 服务器 (Embedding 模型运行服务器)

二、pip安装

pipinstallgraphrag

三、准备数据

首先,创建 input 目录:

mkdir-p./ragtest/input

随后,将文本材料放到 input 目录下。注意 GraphRAG 仅支持 txt 文件,编码格式必须为 utf-8。我这里选用《红楼梦》中,林黛玉初入荣国府一节。

由于篇幅过长,具体文件已放在云盘【若需要私信关键词:2024001

也可以使用官方提供的英文材料:

curlhttps://www.gutenberg.org/cache/epub/24022/pg24022.txt>./ragtest/input/book.txt

四、初始化配置文件

首先,运行工作区初始化命令:

python-mgraphrag.index--init--root./ragtest

这一命令将在 ./ragtest 目录中创建两个文件:.envsettings.yaml

  • .env 包含运行 GraphRAG 管道所需的环境变量。如果检查该文件,您将看到定义的单个环境变量 GRAPHRAG_API_KEY=<API_KEY> 。这是 OpenAI API 或 Azure OpenAI 终结点的 API 密钥。因为我们将要替换掉 OpenAI 模型,所以不用对其进行操作更改。

  • settings.yaml 包含管道的设置。我们需要在其中对两个模型的设置进行更改,这里截取更改了的 LLM 和 Embedding 部分:

llm:
api_key{GRAPHRAG_API_KEY}
typepenai_chat#orazure_openai_chat
modelwen2-72B-Instruct
model_supports_json:false
max_tokens:2000
#request_timeout:180.0
api_base:http://11.0.0.1:8000/v1#根据部署的实际情况进行更改
tokens_per_minute:30000
requests_per_minute:30
top_p:0.99#top-psampling
embeddings:
##parallelizationverridetheglobalparallelizationsettingsforembeddings
async_mode:threaded
llm:
api_key:xinference
typepenai_embedding
model:bge-m3
api_base:http://10.0.0.1:9998/v1#根据部署的实际情况进行更改

其中,Embedding 模型用 Xinference 在 3090 服务器上运行了 bge-m3,部署和运行参考:Docker 镜像 — Xinference【https://github.com/alibaba/xinference】

另外,为了适配我们模型的参数,使得局部搜索有输出,需要把 local search 部分的 max_tokens 调小,可以选取 4000。

五、支持中文-优化改进

由于微软 GraphRAG 初始语言为英文,因此如果要运行中文文本,建议做出一定的改进措施。

  • 优化1: 文档切分策略

替换 graphrag/index/verbs/text/chunk/strategies/tokens.py 即可。官方分块把文档按照 token 数进行切分,对于中文来说容易在 chunk 之间出现乱码,参考 Langchain-ChatChat 开源项目中用中文字符数进行切分。

由于篇幅过长,具体实现已放在云盘【若需要私信关键词:2024002

  • 优化2: prompt优化

原本的四个 prompt 都由英文书写,并要求 LLM 使用英文输出。为了更好地运行中文内容,把四个 Prompt 翻译成中文,且要求中文输出。

由于篇幅过长,精心翻译的中文 prompt 文件已放在云盘【若需要私信关键关键词:2024003

六、索引构建

python-mgraphrag.index--root./ragtest

提示:All workflows completed successfully 后,即可进行查询。

七、测试查询

  • global 全局查询:
python-mgraphrag.query--root./ragtest--methodglobal"故事的主旨是什么?"

  • local 本地查询:
python-mgraphrag.query--root./ragtest--methodlocal"贾母对宝玉的态度怎么样?"

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ