GithubHelp home page GithubHelp logo

nowindnowave / graphrag-more Goto Github PK

View Code? Open in Web Editor NEW

This project forked from guoyao/graphrag-more

0.0 0.0 0.0 4.15 MB

A modular graph-based Retrieval-Augmented Generation (RAG) system

Home Page: https://microsoft.github.io/graphrag/

License: MIT License

Shell 0.05% JavaScript 0.08% Python 95.32% CSS 0.14% Jupyter Notebook 3.69% Nunjucks 0.54% Jinja 0.19%

graphrag-more's Introduction

GraphRAG More

基于 微软GraphRAG ,支持使用百度千帆、阿里通义、Ollama本地模型。

👉 官方文档

使用步骤如下:

要求 Python 3.10-3.12,建议使用 pyenv 来管理多个python版本

1. 安装 graphrag-more

pip install graphrag-more

如需二次开发或者调试的话,也可以直接使用源码的方式,步骤如下:

下载 graphrag-more 代码库

git clone https://github.com/guoyao/graphrag-more.git

安装依赖包 这里使用 poetry 来管理python虚拟环境

# 安装 poetry 参考:https://python-poetry.org/docs/#installation

cd graphrag-more
poetry install

2. 准备demo数据

# 创建demo目录
mkdir -p ./ragtest/input

# 下载微软官方demo数据
curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt

3. 初始化demo目录

python -m graphrag.index --init --root ./ragtest

4. 移动和修改 settings.yaml 文件

根据选用的模型(千帆、通义、Ollama)将 example_settings 文件夹对应模型的 settings.yaml 文件复制到 ragtest 目录,覆盖初始化过程生成的 settings.yaml 文件。

# 千帆
cp ./example_settings/qianfan/settings.yaml ./ragtest

# or 通义
cp ./example_settings/tongyi/settings.yaml ./ragtest

# or ollama
cp ./example_settings/ollama/settings.yaml ./ragtest

每个settings.yaml里面都设置了默认的 llm 和 embeddings 模型,根据你自己要使用的模型修改 settings.yaml 文件的 model 配置

  • 千帆默认使用 qianfan.ERNIE-4.0-Turbo-8K 和 qianfan.bge-large-zh ,注意:必须带上 qianfan 前缀 !!!
  • 通义默认使用 tongyi.qwen-plus 和 tongyi.text-embedding-v2 ,注意:必须带上 tongyi 前缀 !!!
  • Ollama默认使用 mistral:latest 和 ollama.quentinz/bge-large-zh-v1.5:latest,注意:其llm模型不用带前缀,embeddings模型必须带 ollama 前缀 !!!

5. 构建前的准备

根据选用的模型,配置对应的环境变量,若使用Ollama需要安装并下载对应模型

  • 千帆:需配置环境变量 QIANFAN_AK、QIANFAN_SK ,如何获取请参考官方文档
  • 通义:需配置环境变量 TONGYI_API_KEY ,如何获取请参考官方文档
  • Ollama:
    • 安装:https://ollama.com/download ,安装后启动
    • 下载模型
      ollama pull mistral:latest
      ollama pull quentinz/bge-large-zh-v1.5:latest

6. 构建索引

python -m graphrag.index --root ./ragtest

构建过程可能会触发 rate limit (限速)导致构建失败,重复执行几次,或者尝试调小 settings.yaml 中 的 requests_per_minute 和 concurrent_requests 配置,然后重试

7. 执行查询

# global query
python -m graphrag.query \
--root ./ragtest \
--method global \
"What are the top themes in this story?"

# local query
python -m graphrag.query \
--root ./ragtest \
--method local \
"Who is Scrooge, and what are his main relationships?"

查询过程可能会出现json解析报错问题,原因是某些模型没按要求输出json格式,可以重复执行几次,或者修改 settings.yaml 的 llm.model 改用其他模型

graphrag-more's People

Contributors

alonsoguevara avatar dependabot[bot] avatar guoyao avatar darthtrevino avatar jgbradley1 avatar ha2trinh avatar kylinmountain avatar natoverse avatar nievespg1 avatar ah-merii avatar alexchaomander avatar andresmor-ms avatar dayesouza avatar fskpf avatar eltociear avatar j2whiting avatar ksachdeva avatar ckartik avatar stevetru1 avatar jackyyangpassion avatar zineanteoh avatar benx13 avatar s106916 avatar mggger avatar wangjuncoder avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.