之前写过一篇使用deepseek和智谱AI实现《红楼梦》中人物关系智能问答的随笔
但deepseek提供的免费tokens只有500万个,GraphRAG构建图谱的索引和问答过程,对token的消耗是巨量的
因此亟需找到一种本地化部署的方案,不用依赖在线大模型的api形式。
看到国外博客上有人公布了GraphRAG+Ollama的本地化部署方案,按照博客内容进行了复现,这里做一个详细记录。
本地化部署方案的优点:
- 本地大模型构建图谱和问答,可以利用Ollama随时拉取最新大模型,并进行切换;
- 无需消耗token,极大降低了成本;
- 启动简单,可以实现快速部署和实验。
本地部署步骤:
- 在本地新建conda环境,可以确保所有新建的依赖环境是独立的
conda create -n graphrag-ollama-local python=3.10
conda activate graphrag-ollama-local
- 安装Ollama,支持pip install形式安装
也可以访问官网查看更多安装细节https://ollama.com/
pip install ollama
- 使用Ollama拉取大模型,实现GraphRAG的索引和向量化流程
ollama pull mistral #llm
ollama pull nomic-embed-text #embedding
- 从github拉取GraphRAG+Ollama项目
git clone https://github.com/TheAiSingularity/graphrag-local-ollama.git
- 进去上述项目中
cd graphrag-local-ollma/
- 安装GraphRAG包
pip install -e .
- 类似GraphRAG方案中,需要新建input地址来存放外部文档
mkdir -p ./ragtest/input
- 在GraphRAG-local-ollama项目中,提供了部分样例文档,这部分英文文档可以进行初始化测试(跑成功)
cp input/* ./ragtest/input
- 初始化ragtest,生成settings.yaml文件
python -m graphrag.index --init --root ./ragtest
- 将本项目中的settings.yaml文件直接复制到安装好的graphrag包中,项目样例配置文件,已经将llm和embedding对应的大模型,分别配置为mistral和nomic-embed-text
mv settings.yaml ./ragtest
- 配置完成后,可以开始GraphRAG的索引流程
python -m graphrag.index --root ./ragtest
- 上述索引过程大概耗时30分钟,索引构建完成,就可以看到样例文档的图谱文件,此时可以进行文档的智能问答
python -m graphrag.query --root ./ragtest --method global "What is machine learning?"
- 除了智能问答以为,我们还想看看样例文档的图谱构建结果如何,也就是图谱长什么样子,可以借助如下命令进行
修改配置文件settings.yaml中的参数
snapshots:
graphml: true
- 此时构建索引过程中,样例文档的图谱文件会自动生成一份graphml文件,可以通过python中的graphml包对这个文件机型读取
graphml文件的保存路径为output/20240708-161630/artifacts/summarized_graph.graphml
可以使用项目中visualize-graphml.py文件对graphml进行可视化,可以看到样例文档的图谱形状,包括各个实体及关系。
python visualize-graphml.py
标签:Ollama,GraphRAG,graphrag,本地化,ragtest,graphml,图谱,ollama
From: https://www.cnblogs.com/egalistmir/p/18347600