上手GraphRAG心得(非GPT-4o跑通)

入坑

  • 一开始有个本地知识库连接大模型进行问答的一个思路,在部署整理本地知识库的时候,测试了两个主流的项目FastGpt和MaxKB(二者都对环境要求低,无GPU亦可使用),但是在测试命中的时候,总是不理想,如果想增加命中率就需要对知识库文件进行大量的手动修正完善,很明显,对于我这种懒人,很不友好,放弃。

  • 得大佬 @delph1s 指点,开始研究GraphRAG,从网上视频看,上下文关联做的比较好,因为我测试用的都是聊天记录,传统的截断式分段,会导致正好截断了上下文。

  • 于是,入坑。

踩坑

  • 首先,看到了一些视频和教程,要么是搬运的(博主根本自己没跑通,明显的剪辑痕迹),要么就是引用官方文档,建议跟着官方步骤去跑。
  • 然后,就跟着官方文档的案例跑了一遍,各种问题,各种报错。
  • 项目只支持openai规范的接口,找接口测试花了很多时间,甚至为了满足接口的规范,不得不想办法去改写openai的Python库,坑是越踩越深。

跑通

  • 终于在使用了 @SMNET 大佬的接口,以及参考了 @Reno 佬的帖子回复之后,经过 @delph1s 技术指导,终于,跑通了。

准备

  • 需要有一个符合openai规范的chat接口,以及apikey
  • 需要有一个符合openai规范的embeddings接口,以及apikey
  • 以上两个接口必须必须保证稳定(特别重要,不然你会怀疑人生)
  • 额度一定要足够,消耗巨大,项目训练和后面问答,都有很大的消耗。

初始化以及配置

  • 根据官方文档进行按照配置,放入训练文本,然后初始化项目
python -m graphrag.index --init --root ./ragtest 
# ./ragtest 为要初始化的项目目录,可以自己命名,训练文本在初始化前放入在它下面的input文件夹中
  • 修改配置文件, settings.yaml,chat的接口和key配置在最上面的llm的位置,embeddings的接口和key配置在embeddings下面的llm的位置。
  • 开始跑通
python -m graphrag.index --root ./ragtest 
# ./ragtest 与上面初始化的时候的目录要一致
  • 等待
  • 测试
python -m graphrag.query --root ./ragtest --method global "{你的提问内容}"

注意

因为tokens消耗可能有点大,有些接口可能有限制,所以当报错之后,重新运行一下执行命令,会续接之前正常的位置继续,reate_summarized_entities这一步可能会需要执行多次,才能完成。
所有都执行完毕,会显示一行绿色的英文,就是成功了。

如有问题可留言。

GraphRAG生成的graphml文件转echarts脚本,有需要的自取。

58 个赞

前排学习

4 个赞

学习学习!

3 个赞

一路看着你跑通,我也激动了。感谢分享!

9 个赞

看到这句就不敢用了 :sweat_smile:
有没有给穷鬼玩的代餐啊

4 个赞


有这个么,能可视化的查看词图

2 个赞

需要配合Neo4j来实现这个效果,我没搞。

6 个赞

前排学习 一路艰辛啊

2 个赞

天啦噜,你明明是金融版主

2 个赞

langchain+rag+本地向量库+远程大模型的方案不能满足要求么?

2 个赞

楼主 embedding 模型用的是哪家的?我看了一圈中文模型貌似也就智谱有 API 提供

1 个赞

现在大多数rag的原理都是,把文本(文件)以某种格式自动或手动拆分为N个小的段落,然后段落内做向量索引。

比如聊天记录这种,带有日期时间属性同时又有可能跨天的情况,怎么截断都很难做到上下文的关联性。我如果每天为一个截断,那么就会出现十二点前和十二点后聊天的内容相互不关联。

全文关联这种,必须建立一些超段落的关联属性,不然很难跨段落调用。

8 个赞

有详细的样例demo吗,我也有聊天记录相关的需求么

2 个赞

embeddings的消耗很低很低,他家注册之后送$0.2,都没必要C,差不多就够用了

昨天跑通,消耗几乎忽略不计。

8 个赞

最后实际效果怎么样? :sunglasses:

1 个赞

所以为什么市面上大部分中转不给 embeddings 呢?

1 个赞

目前这个项目,只能作为一个玩具来看待。

tokens消耗巨大,与他产生的效果严重不成正比,而且项目稳定性不太好。

而且经过测试,数据量扩大一倍,时长和tokens消耗都是非线性增长的,差不多要增长三四倍以上。

5 个赞

感谢分享,后面再试下

1 个赞

demo我正在跑,稍等等吧,有demo效果了,我发你。

6 个赞

mark

1 个赞