当前位置: 首页 > news >正文

Nano-GraphRAG复现——只使用Ollama,无需API Key

在微软GraphRAG复现过程中,因其复杂的程序和源代码的错误,导致很难复现。因此,github中出现了graphrag的精简版本——NanoGraphRAG,该项目提供了一个更小、更快、更干净的 GraphRAG,同时保留了核心功能。 但是很多小伙伴困扰于没有OpenAI的API key,因此本文介绍了如何使用Ollama跑通Graphrag,只需简单的操作即可!欢迎点赞收藏!
在这里插入图片描述

一、项目代码获取

使用git命令从github中下载代码:

git clone https://github.com/gusye1234/nano-graphrag.git

二、环境配置

安装依赖项:

cd nano-graphrag
pip install -e .

三、修改文件

因为我们使用的是ollama的embedding和LLM模型,因此需要修改的文件是nano-graphrag/examples/using_ollama_as_llm_and_embedding.py,主要需要修改的有几个地方:
LLM和Embedding模型名称,需要和后面的ollama pull的模型保持一致:

# Assumed llm model settings
MODEL = "llama3.2"

# Assumed embedding model settings
EMBEDDING_MODEL = "nomic-embed-text"
EMBEDDING_MODEL_DIM = 768
EMBEDDING_MODEL_MAX_TOKENS = 8192

定义Query函数,修改Query的具体内容:

def query():
    rag = GraphRAG(
        working_dir=WORKING_DIR,
        best_model_func=ollama_model_if_cache,
        cheap_model_func=ollama_model_if_cache,
        embedding_func=ollama_embedding,
    )
    print(
        rag.query(
            "What are the top themes in this story?", param=QueryParam(mode="global")
        )
    )

通过下面的指令下载测试知识库:

curl https://raw.githubusercontent.com/gusye1234/nano-graphrag/main/tests/mock_data.txt > ./book.txt

修改Insert函数,主要修改知识库的位置

def insert():
    from time import time

    with open(f"{WORKING_DIR}/book.txt", encoding="utf-8-sig") as f:
        FAKE_TEXT = f.read()

    remove_if_exist(f"{WORKING_DIR}/vdb_entities.json")
    remove_if_exist(f"{WORKING_DIR}/kv_store_full_docs.json")
    remove_if_exist(f"{WORKING_DIR}/kv_store_text_chunks.json")
    # remove_if_exist(f"{WORKING_DIR}/kv_store_community_reports.json")
    remove_if_exist(f"{WORKING_DIR}/graph_chunk_entity_relation.graphml")

    rag = GraphRAG(
        working_dir=WORKING_DIR,
        enable_llm_cache=True,
        best_model_func=ollama_model_if_cache,
        cheap_model_func=ollama_model_if_cache,
        embedding_func=ollama_embedding,
    )
    start = time()
    rag.insert(FAKE_TEXT)
    print("indexing time:", time() - start)
    # rag = GraphRAG(working_dir=WORKING_DIR, enable_llm_cache=True)
    # rag.insert(FAKE_TEXT[half_len:])

四、Ollama 开启服务

首先需要保证你已经在服务器上下载好了ollama,没有下载的话可以看这篇教程去下载:ollama下载链接。
开启ollama服务:

ollama serve

拉取LLM和embedding模型,需要和前面保持一致:

ollama pull llama3.2
ollama pull nomic-embed-text
ollama run llama3.2

五、测试代码

配置好之后即可开始测试:

cd examples
python using_ollama_as_llm_and_embedding.py

至此,使用ollama复现Nano-GraphRAG完成!

相关文章:

  • 质量属性场景描述
  • IO基础练习4
  • CogToolBlock和CogIDTool工具
  • ES时序数据库的性能优化
  • C++ Primer 拷贝、赋值与销毁
  • 如何改变怂怂懦弱的气质(2)
  • 记录一次利用条件索引优化接口性能的实践
  • golang并发编程如何学习
  • unsloth-llama3-8b.py 中文备注版
  • 汽车零部件厂如何选择最适合的安灯系统解决方案
  • ESLint 深度解析:原理、规则与插件开发实践
  • C# Unity 面向对象补全计划 之 索引器与迭代器
  • Spring AI 1.0.0-M6 快速开始(一)
  • MySQL批量生成建表语句
  • 解决CentOS 8.5被恶意扫描的问题
  • 美国国家航空航天局(NASA)的PUNCH任务
  • 第十章,防火墙带宽管理
  • Flink深入浅出之02
  • 软件系统属性
  • Java集合面试篇
  • 魔都眼|邮轮港国际帆船赛启动,120名中外选手展开角逐
  • 东部沿海大省浙江,为何盯上内河航运?
  • 官方通报汕头违建豪宅“英之园”将强拆:对有关人员严肃追责问责
  • 终于,俄罗斯和乌克兰谈上了
  • 小雨伞保险经纪母公司手回集团通过港交所聆讯
  • 中国军网:带你揭开3所新调整组建军队院校的神秘面纱