1
微软GraphRAG兼容千帆通义等大模型
大模型开发/技术交流
- LLM
- 开源大模型
- 大模型推理
7月25日1683看过
7月初,微软发布最强 RAG 知识库开源方案 GraphRAG,截至7.24号其Github Star数量已经达到 12.6 k,可见其火爆程度。可惜的是目前其方案与 OpenAI / AzureOpenAI 强绑定,没法直接使用国内百度千帆、阿里通义等以及开源模型,国内使用 OpenAI / AzureOpenAI 诸多不便,因此fork了官方代码创建了个新代码库:graphrag-more,在其基础上做了小部分修改,支持使用百度千帆、阿里通义、Ollama。
官方demo虽然很简单,但是token消耗可是一点都不含糊,使用 AzureOpenAI 跑一遍完整demo文档,预计得消耗5~10刀,初始化默认使用的是 gpt-4-turbo 模型,改用 gpt-3.5-turbo-16k 也得消耗2~3刀。
接下来介绍如何使用百度千帆、阿里通义、Ollama来跑微软官方的demo。
详细步骤如下:
官方文档详见:https://microsoft.github.io/graphrag/posts/get_started/
1. 安装 graphrag-more
pip install graphrag-more
如需二次开发或者调试的话,也可以直接使用源码的方式,步骤如下:下载 graphrag-more 代码库git clone https://github.com/guoyao/graphrag-more.gitcd graphrag-morepoetry install
2. 准备demo数据
# 创建demo目录mkdir -p ./ragtest/input# 下载微软官方demo数据curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt
3. 初始化demo目录
python -m graphrag.index --init --root ./ragtest
4. 移动和修改 settings.yaml 文件
根据选用的模型(千帆、通义、Ollama)将 example_settings 文件夹对应模型的 settings.yaml 文件复制到 ragtest 目录,覆盖初始化过程生成的 settings.yaml 文件。
# 千帆cp ./example_settings/qianfan/settings.yaml ./ragtest# or 通义cp ./example_settings/tongyi/settings.yaml ./ragtest# or ollamacp ./example_settings/ollama/settings.yaml ./ragtest
每个settings.yaml里面都设置了默认的 llm 和 embeddings 模型,根据你自己要使用的模型修改 settings.yaml 文件的 model 配置
-
千帆默认使用 qianfan.ERNIE-4.0-Turbo-8K 和 qianfan.bge-large-zh ,注意:必须带上 qianfan 前缀 !!!
-
通义默认使用 tongyi.qwen-plus 和 tongyi.text-embedding-v2 ,注意:必须带上 tongyi 前缀 !!!
-
Ollama默认使用 mistral:latest 和 ollama.quentinz/bge-large-zh-v1.5:latest,注意:其llm模型不用带前缀,embeddings模型必须带 ollama 前缀 !!!
5. 构建前的准备
根据选用的模型,配置对应的环境变量,若使用Ollama需要安装并下载对应模型
-
千帆:需配置环境变量 QIANFAN_AK、QIANFAN_SK ,如何获取请参考官方文档
-
通义:需配置环境变量 TONGYI_API_KEY ,如何获取请参考官方文档
-
Ollama:
-
安装:https://ollama.com/download ,安装后启动
-
下载模型
-
ollama pull mistral:latestollama pull quentinz/bge-large-zh-v1.5:latest
6. 构建索引
python -m graphrag.index --root ./ragtest
构建过程可能会触发 rate limit (限速)导致构建失败,重复执行几次,或者尝试调小 settings.yaml 中的 requests_per_minute 和 concurrent_requests 配置,然后重试
7. 执行查询
# global querypython -m graphrag.query \--root ./ragtest \--method global \"What are the top themes in this story?"# local querypython -m graphrag.query \--root ./ragtest \--method local \"Who is Scrooge, and what are his main relationships?"
查询过程可能会出现json解析报错问题,原因是某些模型没按要求输出json格式,可以重复执行几次,或者修改 settings.yaml 的 llm.model 改用其他模型
评论