入坑
-
一开始有个本地知识库连接大模型进行问答的一个思路,在部署整理本地知识库的时候,测试了两个主流的项目FastGpt和MaxKB(二者都对环境要求低,无GPU亦可使用),但是在测试命中的时候,总是不理想,如果想增加命中率就需要对知识库文件进行大量的手动修正完善,很明显,对于我这种懒人,很不友好,放弃。
-
得大佬 @delph1s 指点,开始研究GraphRAG,从网上视频看,上下文关联做的比较好,因为我测试用的都是聊天记录,传统的截断式分段,会导致正好截断了上下文。
-
于是,入坑。
踩坑
- 首先,看到了一些视频和教程,要么是搬运的(博主根本自己没跑通,明显的剪辑痕迹),要么就是引用官方文档,建议跟着官方步骤去跑。
- 然后,就跟着官方文档的案例跑了一遍,各种问题,各种报错。
- 项目只支持openai规范的接口,找接口测试花了很多时间,甚至为了满足接口的规范,不得不想办法去改写openai的Python库,坑是越踩越深。
跑通
准备
- 需要有一个符合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脚本,有需要的自取。