为什么不直接跑微软的Graphrag源码,而要ollama部署到本地呢?答案也是非常简单,直接跑这个项目的话,需要openai的apikey,花tokens,很烧money!!!而通过ollama部署到本地,就可以轻松免费玩Graphrag。
代码大家可以去github上下载到本地 :https://github.com/NanGePlus/GraphragTest
1、预备任务
如果要在服务器上跑,需要在服务器中下载Anaconda、ollama。
如果是可视化的服务器比如autodl,那么需要将代码上传到服务器上。
如果是学生党用实验室的服务器,那么就需要将pycharm与服务器连上。
在下边这篇文章中写了如何在服务器中下载ollama,如何在ollama中下载模型,有需要的可以参考。如何下载Anaconda,待我整理后分享给大家。写文章-优快云创作中心https://mp.youkuaiyun.com/mp_blog/creation/editor/144485640
如果在本地跑,就在本地下好Anaconda和ollama。
2、创建虚拟环境(在pycharm开终端或者其他常用的地方都可以)
#创建虚拟环境
conda create --name graphragollama python==3.11
出现以下提示,输入y,按回车
然后激活虚拟环境
#激活虚拟环境
conda activate graphragollama
3、安装依赖
进入项目所在包下
安装所有依赖
#安装依赖
pip install -r requirements.txt
如果没有安装成功就打开 requirements.txt文件用pip install 命令一个一个的安装。
#安装graphrag包
pip install graphrag==0.3.0
安装完成通过pip list 查看所有包
4、新建该项目所需文件夹
mkdir ragollama2.5
cd ragollama2.5
mkdir input
mkdir inputs
mkdir cache
完成后就是这样的
5、准备数据
将other/text/下的所有数据复制到刚刚新建的input文件夹下,如果想先测试一下模型有没有错误,可以先复制一部分,因为全部复制下来后边构建索引很费时间。
6、开启ollama服务
启动ollama服务,并且下载好所需要的模型,在上边那篇文章中有详细讲解,大家可以去看看
#启动ollama
ollama serve
7、进行初始化
python -m graphrag.index --init --root ./
完成以后会自动新建一些文件
更改.env和settings.yaml文件内容:直接把other/temp/文件夹下的.env和settings.yaml 文件中的内容复制到里边,可以把.env中注释掉的部分删除,把模型改为自己的模型,这里我用的llm模型是qwen2.5。
setting.yaml中需要修改以下地方
8、优化提示词
这步可做可不做,优化提示词后,可以让模型的回复更加接近与你所提供的文档
python -m graphrag.prompt_tune --config ./settings.yaml --root ./ --no-entity-types --language Chinese --output ./prompts
这步需要等一下,出现以下内容就成功了。
同时,prompt中的给大模型的示例会变为与提供的数据相关的内容
9、构建索引
这步是最重要的,能不能成功就看这步,并且需要花费很长时间
#构建索引
python -m graphrag.index --root ./
在构建的时候,如果看到有十几分钟都是0%,也是正常的。(前提需要将ollama服务启动,构建索引的时候就可以看看开启ollama服务的终端有没有反应)
成功以后就是这样的
并且在inputs/artifacts/文件夹下会新增许多以.parquet结尾的文件
如果没有成功,可以看一下日志文件,找到出错的地方,我在开始的时候用的qwen2模型,构建base_entity_graph一直不成功,像下面图片中一样。我就换了一个模型,llama3.1:latest (8b) 和qwen2.5:latest (7b) 模型都是可以成功的。
10、测试graphrag
将other下的utils文件夹,整个复制到ragollama2.5 文件夹下。修改main.py中的INPUT_DIR地址,通过pwd查看地址,复制过去,千万不要忘记/inputs/artifacts
model改为自己用的模型
Embedding模型也改为自己的
然后进入utils文件夹下,要先运行main.py脚本
cd utils
python main.py
然后再开一个终端,进入utils文件夹,运行apiTest.py文件(这个文件中可以选择要进行本地搜索还是全局搜索)