GraphRAG 的官方文档是主要参考,但实际落地时往往需要结合具体环境调整。这次我们在 Linux 环境下尝试部署 GraphRAG,并接入 Ollama 进行本地模型推理。
本次测试环境基于 openEuler 22.03 LTS-SP3,Python 版本控制在 3.10 到 3.12 之间。值得注意的是,如果没有 GPU 支持,索引构建过程可能会非常慢甚至超时,配置项需要反复调试才能跑通。
环境搭建
创建虚拟环境
官网建议创建一个项目空间和 Python 虚拟环境来安装 graphrag。我使用的是 Anaconda,这里直接展示关键命令:
# 创建虚拟环境 conda create -n AutoGenStudio python=3.10
激活环境后,确保 Python 版本符合要求。
安装与初始化
python -m pip install graphrag
graphrag init
运行 init 后会生成 .env、settings.yaml 和 input 目录。这里有个坑,官网文档里的初始化说明可能已经滞后,生成的文件结构略有不同,需以实际生成为准。
准备数据
官方示例是纯英文的,为了测试中文效果,我准备了一些中文语料。不过全量中文数据索引太慢,最后用了一句简单的测试句来验证流程:
mkdir input
curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt -o ./input/book.txt
# 或者使用自定义中文测试文本 echo "张三是小学语文老师,他的哥哥张三丰是中学数学老师,他们都在郑州。" > ./input/test.txt
配置本地模型
核心在于修改 settings.yaml,将模型提供商从 OpenAI 切换为 Ollama。由于是在本地无 GPU 服务器测试,尽量选择小参数量的模型。
首先确认 Ollama 服务可用:
curl http://localhost:11434/api/tags
然后更新配置文件,注意 api_base 不要带 /v1 后缀,否则容易报错:
models:
default_chat_model:
type: chat
model_provider: ollama
auth_type: api_key
api_key: dummy_key
model: qwen2.5:0.5b
api_base: http://localhost:11434
model_supports_json: true
concurrent_requests: 1
async_mode: threaded
retry_strategy: exponential_backoff
max_retries: 1
request_timeout: 1800
default_embedding_model:
type: embedding
model_provider: ollama
auth_type: api_key
api_key: dummy_key
model: nomic-embed-text:latest
api_base: http://localhost:11434
concurrent_requests: 1
request_timeout: 1800
async_mode: threaded
retry_strategy: exponential_backoff
max_retries: 1
chunks:
size: 64
overlap: 8
group_by_columns: [id]
extract_graph:
extractor_type: nlp
extract_graph_nlp:
text_analyzer:
extractor_type: regex_english
async_mode: asyncio
创建索引
执行以下命令开始构建知识图谱:
graphrag index
运行过程中会输出日志到 logs/indexing-engine.log。如果遇到类似 404 page not found 的错误,通常是 api_base 路径多了 /v1 导致的,请检查配置。
成功后的截图如下:
[图:索引构建完成示意]
查询测试
配置完成后,可以分别使用全局查询和本地查询模式进行测试。
全局查询:
graphrag query -m global -q "郑州有几个老师?"
输出结果通常会比较谨慎,例如:
对不起,我无法回答这个问题。根据提供的信息,我们只知道有两个老师在郑州工作,但没有提供具体的数量或详细的信息。
本地查询:
graphrag query -m local -q "郑州的这两个老师什么关系?"
本地模式下的回答逻辑会有所不同,可能会尝试推断实体间的关系:
在提供的数据中,我们无法直接找到关于'郑州的两个老师'之间具体关系的信息。然而,我们可以从其他相关数据中推断出一些可能的关系...
总结
这次部署有几个关键点值得注意:
- 文档时效性:官网的部署流程并非最新,部分配置项已变更,需以实际生成为准。
- 硬件限制:没有 GPU 的服务器初始化及问答的效果都不理想,显存和算力对大模型推理影响很大。
- 配置细节:API 路径错误(如多写
/v1)会导致连接失败,本地测试时尽量调低模型参数量和分块大小以提升速度。
整体来看,在无 GPU 环境下通过 Ollama 跑通 GraphRAG 是可行的,但需要根据实际情况不断微调配置参数。

