最近爆火的GraphRAG是什么 真的能用于商业运行吗
GraphRag处置了什么疑问
在豪华的RAG(自我检索生成模型)中,咱们经常使用一个向量库作为咱们的常识库。当用户提出查问时,该系统从向量库中婚配顶部K个元素作为高低文,并将这个高低文与提醒和查问一同交给大型言语模型(LLM)启动回答。
如今,让咱们假定这个向量库是指向企业常识的。有两个示例查问:
关于第一个疑问,因为它是十分详细的,常识库的搜查或者会找到相应的消息块或经常出现疑问解答。关于这种类型的疑问,豪华的RAG理论会表现得很好。
关于第二个疑问,这是一个微观层面的查问,须要将企业常识库中一切与技术团队相关的名目搜集起来并启动总结。关键在于找到与技术团队成绩相关的各类消息,而后以某种模式关联起来以得出答案。这种方法也被称为 "connecting the dots"。你可以参考这篇文章了解更多:️-connecting-the-dots-how-to-improve-rag-with-knowledge-graphs-092c32024326
在这里,“dots”指的是扩散在不同中央的关键消息。那么,豪华RAG是否有效处置这类疑问?虽然咱们可以强迫经常使用豪华RAG来寻觅答案,但其效果很或者不会十分现实。
关于这类疑问,咱们的一种处置战略是预先整顿消息。例如,咱们首先抽取与技术团队相关的一切消息。当咱们提出相关疑问时,可以基于这些曾经抽取的消息进一步启动总结。这个环节实践上就是构建常识图谱的环节。
举个例子,假定咱们有少量文本,其中蕴含了技术团队口头的各种名目标消息。在咱们构建的常识图谱中,咱们有多个节点,代表技术团队和名目,并经过相关将它们衔接起来。这样,当咱们想了解他们成功了哪些上班时,只无关注与这些节点相关的部分,便可得知技术团队已成功的义务。
这个构建常识图谱的环节理论可以用大型模型来成功,这也是GraphRAG模型提出的一个关键思维:预先提取并整顿好消息,而后基于这些整顿后的消息启动回答。
进一步来说,关于第二个疑问,相关的提问模式有很多。例如:
这里出现的是一个档次结构,因此在GraphRAG模型中,做了进一步的操作: 创立这种档次结构。咱们预先整顿出相关的关键消息,这样的档次结构是基于常识图谱失掉的。因此,咱们对这个常识图启动了相似的聚类,而后将这些实体的消息兼并在一同,再对这些兼并后的消息启动整顿。从常识图谱到这里,GraphRAG驳回了一些社区开掘算法,这是GraphRAG的第二个关键思维。
那么,这套方法是否在商业环境中实施呢?我以为目前来说更像是一个原型。
虽然如此,GraphRag作为一个新的RAG流程还是有必要学习一下的。
GraphRAG入门
环境性能
称号 |
装置 |
目标 |
Python 3.10 |
下载(opens in a new tab) |
该库基于 Python 开发。 |
经常使用说明(opens in a new tab) |
Poetry 用于 Python 代码库的包治理和虚构环境治理。 |
下载源码,装置依赖
git clonegraphragpoetry install
假设你本地poetry install比拟慢,可以在名目标pyproject.toml文件末尾减少:
[[tool.poetry.source]]name = "aliyun"url = "https://mirrors.aliyun.com/pypi/simple/"
并口头poetry lock重重生成poetry.lock, 再口头poetry install即可
对数据建索引
首先让咱们预备一个示例数据集:
mkdir -p ./ragtest/input
curl> ./ragtest/input/book.txt
在目录预备初始化:
poetry run poe index --init --root ./ragtest
它会在目录创立output、prompts目录,以及.env文件和settings.yaml性能文件。
接着咱们口头一条命令会智能索引数据,构建常识图谱,只是环节比拟慢,耐烦期待即可:
poetry run poe index --root ./ragtest
查问
GraphRag的查问分为两种类型:
全局查问
poetry run poe query --root ./ragtest --method global '这个故事的主题是什么?'
输入结果如下:
SUCCESS: Global Search Response: ### 故事主题概述本故事的外围主题围绕着**转变与救赎**,经过Ebenezer Scrooge从悭吝鬼到小气小气的模范的转变,展现了团体扭转的或者性和关键性。Scroogts (12, 15, 16, 20)]。### 人物互动与社会相关故事经过Scrooge与Cratchit家庭以及各种鬼魂的互动,强调了慈善、残酷以及团体扭转的关键性。这些互动不只展现了团体扭转的或者性,还突出, 16, 18, 20)]。### 社会影响与团体行为Scrooge的旅程提醒了集体经过善行和小气对社区发生的踊跃影响。故事讨论了宿愿、韧性和圣诞精气的主题,经过Tiny Tim和Cratchit家庭的笼统,展现了即使在艰巨中也能表现出圣诞精气的模范 [Data: Reports (16, 18)]。### 超人造疏导与反思故事还讨论了超人造导游在促使反思和扭转中的作用,经过圣诞节过去、如今和未来的鬼魂的访问,促使Scrooge反思自己的生存和行为。此外,故正告来表现 [Data: Reports (12, 21)]。### 社会正义与家庭社区的关键性最后,故事还深化讨论了社会不公和家庭及社区的关键性。Scrooge与Bob Cratchit和Tiny Tim的互动,不只提醒了社会不公的主题,也强调了家庭和社区在团体生存中的价值 [Data: Reports (12)]。综上所述,本故事经过Scrooge的转变之旅,讨论了救赎、慈善、社会责任和团体扭转的关键性,以及这些主题如何在团体、家庭和更宽泛社区中发生深远影响。
部分检索
poetry run poe query --root ./ragtest --method local 'Scrooge 这个故事的客人公是谁,他的关键相关是什么?'
输入结果如下:
SUCCESS: Local Search Response: # 客人公与关键相关## 客人公简介故事的客人公是Ebenezer Scrooge,他是《A Christmas Carol》中的中心人物。Scrooge最后被描述为一个贪心、悭吝的老人,对圣诞节和周围人的苦难不闻不问。他的性情和态度通 (18, 23)]。## 关键相关### 与Bob Cratchit的相关Bob Cratchit是Scrooge的职员,一个支出微薄但心肠残酷的人。Scrooge最后对Cratchit的待遇冷漠有情,但在故事的开头,Scrooge提高了Cratchit的工资,并成为了他家庭的恩人 [Data: Relationships (14); Entities (9, 28)]。### 与Jacob Marley的相关Jacob Marley是Scrooge已故的商业同伴,他的鬼魂在圣诞夜访问Scrooge,正告他扭转自己的生存模式,免得死后遭受雷同的命运。Marley的访问为Scrooge的转变开启了序幕 [Data: Relationships (63, 41); Entities (50, 44)]。### 与三个圣诞鬼魂的相关三个圣诞鬼魂(圣诞节的过去、如今和未来)区分访问Scrooge,展现了他的过去、如今和或者的未来。这些访问深入影响了Scrooge,促使他反思自己的生存并最终扭转了他的行为和态度 [Data: Relationships (72, 86); Entities (47)]。### 与Tiny Tim的相关Tiny Tim是Bob Cratchit的儿子,他的肥壮状况和幸福成为Scrooge扭转的一个关键能源。Scrooge从一个冷漠的旁观者变成了Tiny Tim的守护者和家庭的允许者 [Data: Relationships (86)]。### 与侄子Fred的相关Scrooge的侄子Fred代表了圣诞节的精气和失望态度,虽然Scrooge最后拒绝了Fred的圣诞约请,但最终他接受了Fred的好意,并与他和其余家庭成员建设了踊跃的相关 [Data: Entitiationships (52)]。## 论断Ebenezer Scrooge的故事是一个关于救赎和转变的经典故事。经过与Bob Cratchit、Jacob Marley、三个圣诞鬼魂、Tiny Tim和他的侄子Fred等关键角色的互动,Scrooge从一个孤独、间的咨询、同情和了解的关键性。
总结
本文首先引见了GraphRAG相比传统的豪华RAG的长处以及其在商业落地上的局限性,而后解说了GraphRAG的基本经常使用,在实践操作环节中发现还是比拟消耗token的,那token究竟消耗在哪,其外部运转的流程又是怎样样的呢?带着这些疑问,接上去我会用两篇图文并茂的文章详细引见一下:
原文链接: