本地化部署GraphRAG+Ollama,实现基于知识图谱的智能问答

citing from https://medium.com/@vamshirvk/unlocking-cost-effective-local-model-inference-with-graphrag-and-ollama-d9812cc60466

之前写过一篇使用deepseek和智谱AI实现《红楼梦》中人物关系智能问答的随笔
但deepseek提供的免费tokens只有500万个,GraphRAG构建图谱的索引和问答过程,对token的消耗是巨量的
因此亟需找到一种本地化部署的方案,不用依赖在线大模型的api形式。

看到国外博客上有人公布了GraphRAG+Ollama的本地化部署方案,按照博客内容进行了复现,这里做一个详细记录。

本地化部署方案的优点:

  • 本地大模型构建图谱和问答,可以利用Ollama随时拉取最新大模型,并进行切换;
  • 无需消耗token,极大降低了成本;
  • 启动简单,可以实现快速部署和实验。

本地部署步骤:

  1. 在本地新建conda环境,可以确保所有新建的依赖环境是独立的
conda create -n graphrag-ollama-local python=3.10
conda activate graphrag-ollama-local
  1. 安装Ollama,支持pip install形式安装
    也可以访问官网查看更多安装细节https://ollama.com/
pip install ollama
  1. 使用Ollama拉取大模型,实现GraphRAG的索引和向量化流程
ollama pull mistral #llm
ollama pull nomic-embed-text #embedding
  1. 从github拉取GraphRAG+Ollama项目
git clone https://github.com/TheAiSingularity/graphrag-local-ollama.git
  1. 进去上述项目中
cd graphrag-local-ollma/
  1. 安装GraphRAG包
pip install -e .
  1. 类似GraphRAG方案中,需要新建input地址来存放外部文档
mkdir -p ./ragtest/input
  1. 在GraphRAG-local-ollama项目中,提供了部分样例文档,这部分英文文档可以进行初始化测试(跑成功)
cp input/* ./ragtest/input
  1. 初始化ragtest,生成settings.yaml文件
python -m graphrag.index --init --root ./ragtest
  1. 将本项目中的settings.yaml文件直接复制到安装好的graphrag包中,项目样例配置文件,已经将llm和embedding对应的大模型,分别配置为mistral和nomic-embed-text
mv settings.yaml ./ragtest
  1. 配置完成后,可以开始GraphRAG的索引流程
python -m graphrag.index --root ./ragtest
  1. 上述索引过程大概耗时30分钟,索引构建完成,就可以看到样例文档的图谱文件,此时可以进行文档的智能问答
python -m graphrag.query --root ./ragtest --method global "What is machine learning?"
  1. 除了智能问答以为,我们还想看看样例文档的图谱构建结果如何,也就是图谱长什么样子,可以借助如下命令进行

修改配置文件settings.yaml中的参数

snapshots:
  graphml: true
  1. 此时构建索引过程中,样例文档的图谱文件会自动生成一份graphml文件,可以通过python中的graphml包对这个文件机型读取

graphml文件的保存路径为output/20240708-161630/artifacts/summarized_graph.graphml

可以使用项目中visualize-graphml.py文件对graphml进行可视化,可以看到样例文档的图谱形状,包括各个实体及关系。

python visualize-graphml.py
posted @   egalistmir  阅读(2461)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示