AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


喂饭教程!全网首发对小白友好的GraphRAG查询流程全揭秘
发布日期:2024-09-03 09:17:22 浏览次数: 1701


在上一篇文章中我详细介绍了GraphRAG对于txt文件indexing的过程,当构建完知识图谱之后,我们就可以基于知识图谱来提问了。GraphRAG提供了两种查询模式, 两种查询模式分别用于查询不同类型的问题:

  1. local:适合回答有特定实体的问题,比如"路飞的老婆是谁"
  2. global:适合回答综合性的问题,比如"有霸王色霸气的海贼有哪些人"

我的观点一直坚持,要真正掌握一项技术并能从更高的维度"审判"它,单纯了解如何使用是不够的,你需要理解其背后的逻辑。因此,我将在这篇文章中指导你逐步理解各类型query的工作原理——我们会探讨一个query的输入过程、所经历的步骤以及最终传输给LLM的输入与LLM的输出都是什么。话不多说,Let's get started!

local

poetry run poe query --method local --root ./ragtest "草帽海贼团有哪些成员"

当我们指定root参数之前local query时,GraphRAG默认会去这个目录下的output目录下寻找创建时间最新的数据目录,当然你也可以在命令行中使用--data 指定数据目录。

local查询需要的数据来自以下6个文件:

  • create_final_nodes.parquet
  • create_final_covariates.parquet
  • create_final_entities.parquet
  • create_final_relationships.parquet
  • create_final_text_units.parquet
  • create_final_community_reports.parquet

这些文件的数据在上一篇文章中已经解释过了,如果不记得可以回去查看。为了方便讲解,这里我还是给出每个文件的内容截图:

nodes:

entities:

relationships:

community_reports:

text_units:


RAG的查询基本都需要用到向量库,GraphRAG也不例外,默认使用的vector_store_type是lancedb,除此之外还支持azure_ai_search。


下图是Local Search Dataflow:

  1. 关联的原始文本(Text Units)

  2. 实体关联的 Community Reports

  3. 相关联的实体(Entities)

  4. 实体相关的关系信息

  5. 实体的属性(Covariates,例如,实体是苹果,颜色可以理解为一个属性)

再加上会话历史,一次 query 使用的 token 比通常的 RAG 方式要多不少。

详细的Local Search的步骤如下:

  1. 从final_nodes和final_entities计算所有的entities:对final_nodes进行过滤,只提取Level < community_level 的entities,其中community_level默认值是2,可以根据你最终生成的数据结果适当调大这个值。对过滤后的final_nodes和final_entities根据name做inner_join得到Entitiy对象列表,每个Entity属性如下:


  2. 从final_nodes和final_reports计算所有的reports对象:先对final_nodes的title分组去重,取最大社区, 然后对final_reports和计算得到的最大社区列表做inner_join操作,得到CommunityReport列表,每个CommunirtReport属性如下,其中full_context是title+summary的组合


  3. 基于用户的问题通过语义相似度计算相似度高的实体Entity,默认检索 10(top_k_mapped_entities) * 2(oversample_scaler) 个Entity


  4. 如果传了聊天历史,GraphRAG也会构建聊天历史的context作为prompt的一部分喂给LLM, 这里我们没传,暂时先忽略

  5. 基于选中的Entity获取对应的Community内容

  6. 基于选中的Entity获取对应的Entities内容:

    -----Entities-----
    id|entity|description|number of relationships
    4|草帽一伙|草帽一伙 is a pirate crew with various members, each having unique roles and dreams. They sail the seas in pursuit of their individual goals. The crew was founded by 蒙奇·D·路飞 and is led by him. After the 蛋糕岛 incident, 甚平 joined the crew. They have achieved significant victories, including defeating 月光·莫利亚. At one point, their ship was protected by 巴索罗米·熊.|19
    58|咚塔塔海贼团|咚塔塔海贼团是草帽大船团旗下的一个海贼团|7
    65|新巨兵海贼团|新巨兵海贼团是草帽大船团旗下的一个海贼团|6
    52|艾迪欧海贼团|艾迪欧海贼团是草帽大船团旗下的一个海贼团|6
    45|八宝水军|八宝水军是草帽大船团旗下的一个海贼团|7
    72|约塔玛利亚大船团|约塔玛利亚大船团是草帽大船团旗下的一个海贼团|0
    240|九蛇海贼团|波雅·汉库克领导的海贼团。|1
    117|白胡子海贼团|The "\u767d\u80e1\u5b50\u6d77\u8d3c\u56e2" is a pirate crew known for its significant influence and power, led by the formidable \u767d\u80e1\u5b50. Notably, \u9a6c\u6b47\u5c14\u00b7D\u00b7\u8482\u5947 was a member of the second division of this crew, highlighting the crew's prominence and the caliber of its members.|1
    259|心脏海贼团|心脏海贼团 is the pirate crew led by 特拉法尔加·罗|1
    41|巴托俱乐部|巴托俱乐部是草帽大船团旗下的一个海贼团|4
    38|草帽大船团|The Straw Hat Grand Fleet (\u8349\u5e3d\u5927\u8239\u56e2) is a fleet of pirate crews that have pledged their loyalty to the Straw Hat Pirates (\u8349\u5e3d\u4e00\u4f19). This grand fleet includes various pirate crews, such as the Beautiful Pirates led by Cavendish (\u5361\u6587\u8fea\u8bb8). Overall, the Straw Hat Grand Fleet is a formidable pirate alliance.|8
    236|太阳海贼团|The entity "\u592a\u9633\u6d77\u8d3c\u56e2" is a pirate group led by Feisher Tag, who once escorted Clara back home.|2
    93|多林格|多林格是罗杰海贼团的船员|0
    243|巴基海贼团|The 巴基海贼团 is the pirate crew led by 巴基. This group is known for its activities under the leadership of 巴基, who is a prominent figure in their operations.|1
    63|兰博|兰博是咚塔塔海贼团的船员|1
    68|罗德|罗德是新巨兵海贼团的航海士|1
    60|卡布|卡布是咚塔塔海贼团的船员|1
    120|红发海贼团|红发海贼团是红发的势力|0
    121|黑胡子海贼团|The 黑胡子海贼团 (Blackbeard Pirates) is the pirate crew led by 马歇尔·D·蒂奇 (Marshall D. Teach). The 黑胡子海贼团 is known for its formidable power and influence, often referred to as 黑胡子 (Blackbeard)'s force.|1
    69|戈尔德巴古|戈尔德巴古是新巨兵海贼团的厨师|1

  7. 基于选中的Entity获取对应的relationships内容:

    -----Relationships-----
    id|source|target|description|weight|rank|links
    26|草帽一伙|草帽大船团|草帽大船团 is a fleet of pirate crews that have pledged their loyalty to the 草帽一伙|1.0|27|3
    62|草帽大船团|咚塔塔海贼团|咚塔塔海贼团是草帽大船团旗下的一个海贼团|1.0|15|3
    63|草帽大船团|新巨兵海贼团|新巨兵海贼团是草帽大船团旗下的一个海贼团|1.0|14|3
    0|蒙奇·D·路飞|草帽一伙|蒙奇·D·路飞是草帽一伙的船长和创立者|1.0|30|1
    20|草帽一伙|甚平|The entity "草帽一伙" (Straw Hat Crew) is a notable group that includes the character "甚平" (Jinbe). After the Cake Island incident, Jinbe joined the Straw Hat Crew as the ninth member. He serves as the helmsman of the crew, contributing his skills and experience to their adventures.|3.0|26|1
    29|草帽一伙|特拉法尔加·罗|After allying with the 草帽一伙 in 庞克哈萨德, 特拉法尔加·罗 voluntarily gave up his 七武海 title|2.0|24|1
    12|草帽一伙|罗罗诺亚·索隆|罗罗诺亚·索隆是草帽一伙的战斗员|1.0|23|1
    15|草帽一伙|山治|山治是草帽一伙的厨师|1.0|23|1
    23|草帽一伙|卡文迪许|卡文迪许 is a member of the Straw Hat Grand Fleet|1.0|23|1
    18|草帽一伙|弗兰奇|弗兰奇 is the shipwright of the 草帽一伙 and joined as the seventh member|1.0|22|1
    19|草帽一伙|布鲁克|布鲁克 is the musician of the 草帽一伙 and joined as the eighth member|1.0|22|1
    21|草帽一伙|前进·梅利号|前进·梅利号 was the first official pirate ship of the 草帽一伙|1.0|22|1
    22|草帽一伙|千里阳光号|千里阳光号 is the second pirate ship of the 草帽一伙|1.0|22|1
    27|草帽一伙|巴索罗米·熊|巴索罗米·熊曾守护草帽一伙的船。|1.0|22|1
    28|草帽一伙|月光·莫利亚|月光·莫利亚 was defeated by the 草帽一伙|2.0|22|1
    13|草帽一伙|娜美|娜美是草帽一伙的航海士|1.0|21|1
    14|草帽一伙|乌索普|乌索普是草帽一伙的狙击手|1.0|21|1
    16|草帽一伙|托尼托尼·乔巴|托尼托尼·乔巴 is the doctor of the 草帽一伙 and joined as the fifth member|1.0|21|1
    17|草帽一伙|妮可·罗宾|妮可·罗宾 is the archaeologist of the 草帽一伙 and joined as the sixth member|1.0|21|1
    24|草帽一伙|ALL BLUE|ALL BLUE is the dream destination of Sanji, a member of the 草帽一伙|1.0|21|1
    25|草帽一伙|七水之都|七水之都 is the city where the 草帽一伙's second ship, the 千里阳光号, was built|1.0|21|1
    79|咚塔塔海贼团|雷欧|雷欧是咚塔塔海贼团的船长|1.0|8|1
    80|咚塔塔海贼团|卡布|卡布是咚塔塔海贼团的船员|1.0|8|1
    81|咚塔塔海贼团|比安|比安是咚塔塔海贼团的船员|1.0|8|1
    82|咚塔塔海贼团|薇卡|薇卡是咚塔塔海贼团的船员|1.0|8|1
    83|咚塔塔海贼团|兰博|兰博是咚塔塔海贼团的船员|1.0|8|1
    84|咚塔塔海贼团|乌索兰度号|乌索兰度号是咚塔塔海贼团的船只|1.0|8|1
    85|新巨兵海贼团|海尔丁|海尔丁是新巨兵海贼团的船长|1.0|7|1
    86|新巨兵海贼团|斯坦森|斯坦森是新巨兵海贼团的船匠|1.0|7|1
    87|新巨兵海贼团|罗德|罗德是新巨兵海贼团的航海士|1.0|7|1
  8. 基于选中的Entity获取对应的unit内容:

    -----Sources-----
    id|text
    1|战斗服进行战斗。“草帽一伙”第四位加入的成员。梦想“找到传说中的海域·All Blue”,以此为目标在大海上航行。
    船医
    托尼托尼·乔巴
    “草帽一伙”的船医,外号“爱吃棉花糖的乔巴”。伟大航路出身,悬赏金1000贝里。是食用了人人果实的驯鹿。“草帽一伙”第五位加入的成员。梦想“成为万能药”,以此为目标在大海上航行。
    考古学家
    妮可·罗宾
    “草帽一伙”的考古学家,外号“恶魔之子”。西海出身,悬赏金9亿3000万贝里。食用了花花果实的能力者。“草帽一伙”第六位加入的成员。梦想“找到空白的100年历史”,以此为目标在大海上航行。
    船匠
    弗兰奇
    “草帽一伙”的船匠,外号“铁人·弗兰奇”。南海出身,悬赏金3亿9400万贝里。使用改造后的身体以及自制兵器进行战斗。“草帽一伙”第七位加入的成员。梦想“乘坐自己制作的梦想之船绕伟大航路一周”,以此为目标在大海上航行。
    音乐家
    布鲁克
    “草帽一伙”的音乐家,外号“鼻歌·布鲁克”、“灵魂之王”。西海出身,悬赏金3亿8300万贝里。食用了黄泉果实的能力者。使用一把西洋剑战斗的剑士,战斗时会使用黄泉果实的能力作为辅助。“草帽一伙”第八位加入的成员。梦想“与拉布汇合,实现与拉布的约定”,以此为目标在大海上航行。
    舵手
    甚平
  9. 基于聊天上下文和community_content、entities、relationships、sources构建system prompt内容,prompt模板的内容中文翻译如下:

翻译成中文:

---角色---

你是一名有帮助的助手,负责回答关于提供表格数据的问题。

---目标---

生成符合目标长度和格式的响应,回答用户的问题,总结输入数据表中的所有信息,适应响应的长度和格式,并结合相关的常识。

如果你不知道答案,就直说。不要编造任何内容。

由数据支持的观点应列出其数据参考,如下所示:

“这是一句由多个数据参考支持的示例句子 [数据: <数据集名称> (记录 ID); <数据集名称> (记录 ID)]。”

单个参考中列出的记录 ID 不应超过 5 个。相反,列出最相关的前 5 个记录 ID,并添加 “+more” 以表示还有更多。

例如:

“X 人是 Y 公司的所有者,并且受到许多不当行为的指控 [数据: 来源 (15, 16), 报告 (1), 实体 (5, 7); 关系 (23); 声明 (2, 7, 34, 46, 64, +more)]。”

其中 15, 16, 1, 5, 7, 23, 2, 7, 34, 46 和 64 代表相关数据记录的 ID(不是索引)。

不要包含没有提供支持证据的信息。

---目标响应长度和格式---

{response_type}

---数据表格---

{context_data}

---目标---

生成符合目标长度和格式的响应,回答用户的问题,总结输入数据表中的所有信息,适应响应的长度和格式,并结合相关的常识。

如果你不知道答案,就直说。不要编造任何内容。

由数据支持的观点应列出其数据参考,如下所示:

“这是一句由多个数据参考支持的示例句子 [数据: <数据集名称> (记录 ID); <数据集名称> (记录 ID)]。”

单个参考中列出的记录 ID 不应超过 5 个。相反,列出最相关的前 5 个记录 ID,并添加 “+more” 以表示还有更多。

例如:

“X 人是 Y 公司的所有者,并且受到许多不当行为的指控 [数据: 来源 (15, 16), 报告 (1), 实体 (5, 7); 关系 (23); 声明 (2, 7, 34, 46, 64, +more)]。”

其中 15, 16, 1, 5, 7, 23, 2, 7, 34, 46 和 64 代表相关数据记录的 ID(不是索引)。

不要包含没有提供支持证据的信息。

---目标响应长度和格式---

{response_type}

根据长度和格式为响应添加适当的部分和评论。使用 markdown 来格式化响应。
  1. 使用System prompt和user query 组成messages

    [
    {"role": "system", "content": search_prompt},
    {"role": "user", "content": query},
    ]

    调用LLM得到结果:

# 草帽海贼团成员

草帽海贼团(草帽一伙)是由蒙奇·D·路飞创立并领导的海贼团。每个成员都有独特的角色和梦想,他们共同航行在大海上,追寻各自的目标。以下是草帽海贼团的主要成员及其职责:

## 蒙奇·D·路飞 - 船长
蒙奇·D·路飞是草帽海贼团的船长和创立者,外号“草帽小子”。他来自东海,悬赏金高达30亿贝里。路飞食用了橡胶果实,成为了橡胶人,并梦想成为“海贼王” [Data: Entities (4); Relationships (0)]。

## 罗罗诺亚·索隆 - 战斗员
罗罗诺亚·索隆是草帽海贼团的战斗员,外号“海贼猎人”。他也是东海出身,悬赏金为11亿1100万贝里。索隆使用三把刀进行战斗,梦想成为“世界第一大剑豪” [Data: Entities (4); Relationships (12)]。

## 娜美 - 航海士
娜美是草帽海贼团的航海士,外号“小贼猫”,来自东海,悬赏金为3亿6600万贝里。她使用天候棒结合气象科学进行战斗,梦想绘制“全世界的地图” [Data: Entities (4); Relationships (13)]。

## 乌索普 - 狙击手
乌索普是草帽海贼团的狙击手,外号“狙击之王”、“GOD·乌索普”,同样来自东海,悬赏金为5亿贝里。他使用特制弹弓和植物弹药进行战斗,梦想“成为勇敢的海上战士” [Data: Entities (4); Relationships (14)]。

## 山治 - 厨师
山治是草帽海贼团的厨师,外号“黑足”,来自北海,悬赏金为10亿3200万贝里。他使用踢技和杰尔马战斗服进行战斗,梦想“找到传说中的海域·All Blue” [Data: Entities (4); Relationships (15)]。

## 托尼托尼·乔巴 - 船医
托尼托尼·乔巴是草帽海贼团的船医,外号“爱吃棉花糖的乔巴”,来自伟大航路,悬赏金为1000贝里。他是食用了人人果实的驯鹿,梦想“成为万能药” [Data: Entities (4); Relationships (16)]。

## 妮可·罗宾 - 考古学家
妮可·罗宾是草帽海贼团的考古学家,外号“恶魔之子”,来自西海,悬赏金为9亿3000万贝里。她食用了花花果实,梦想“找到空白的100年历史” [Data: Entities (4); Relationships (17)]。

## 弗兰奇 - 船匠
弗兰奇是草帽海贼团的船匠,外号“铁人·弗兰奇”,来自南海,悬赏金为3亿9400万贝里。他使用改造后的身体以及自制兵器进行战斗,梦想“乘坐自己制作的梦想之船绕伟大航路一周” [Data: Entities (4); Relationships (18)]。

## 布鲁克 - 音乐家
布鲁克是草帽海贼团的音乐家,外号“鼻歌·布鲁克”、“灵魂之王”,来自西海,悬赏金为3亿8300万贝里。他食用了黄泉果实,使用一把西洋剑战斗,梦想“与拉布汇合,实现与拉布的约定” [Data: Entities (4); Relationships (19)]。

## 甚平 - 舵手
甚平是草帽海贼团的舵手,外号“海侠甚平”,来自龙宫王国,悬赏金为11亿贝里。他是鱼人族的鲸鲨鱼人,使用鱼人空手道和鱼人柔道进行战斗,梦想“帮助路飞成为海贼王,见证鱼人族和人鱼族获得真正的自由” [Data: Entities (4); Relationships (20)]。

## 船只
草帽海贼团拥有两艘主要的船只:前进·梅利号和千里阳光号。前进·梅利号是他们的第一艘正式海贼船,由东海西布罗村的管家梅利设计。千里阳光号是他们的第二艘海贼船,由船匠弗兰奇设计,卡雷拉公司协助制作 [Data: Entities (4); Relationships (21, 22)]。

草帽海贼团的每个成员都在为实现自己的梦想而努力,他们的冒险故事充满了勇气、友情和挑战。

global

poetry run poe query --method local --root ./ragtest "草帽海贼团实力怎么样"

global查询相比local需要的数据源更少:

  1. create_final_community_reports.parquet
  2. create_final_entities.parquet
  3. create_final_nodes.parquet

下图是Global Search Dataflow:

Global Search 使用特定层次的 Community Report 的集合。由于单个上下文可能无法容纳这些 Community Reports,需要进行 MapReduce 操作:

  1. 把 Community Reports 切分为多个部分,然后每个部分基于用户 query 使用 LLM 并发进行推理,每个部分总结几个主要的总结点。在推理总结时,会让 LLM 生成权重,方便最后进行 reduce 操作。

  2. 把每个部分推理的结果进行合并,将所有总结点进行 reduce 操作——再次使用 LLM 进行摘要总结。

执行的详细步骤如下所示:

  1. create_final_community_reports.parquet文件中获取选中的community_report数据

  2. 基于选中的community_reports列表批量请求大模型(这里由于community_reports内容较多,会耗费较多的大模型Token),让大模型基于每个community_report回答用户的问题,具体的system prompt模板中文翻译如下:

    ---角色---

    你是一个帮助用户回答关于所提供数据表中数据问题的助手。

    ---目标---

    生成一个包含关键点列表的响应,回答用户的问题,总结输入数据表中的所有相关信息。

    你应该使用以下数据表中提供的数据作为生成响应的主要上下文。
    如果你不知道答案,或者输入数据表中没有足够的信息来提供答案,就直接说不知道。不要编造任何内容。

    响应中的每个关键点应包含以下元素:
    - 描述:对该点的全面描述。
    - 重要性评分:一个介于0-100之间的整数分数,表示该点在回答用户问题时的重要性。类似“我不知道”的回答应得分为0。

    响应应采用JSON格式如下:
    {{
    "points": [
    {{"description": "点1的描述 [数据: 报告 (报告id)]", "score": 分数值}},
    {{"description": "点2的描述 [数据: 报告 (报告id)]", "score": 分数值}}
    ]
    }}

    响应应保留原意并使用诸如“应”、“可能”或“将”等情态动词。

    由数据支持的点应列出相关报告作为参考,如下所示:
    “这是一个由数据参考支持的示例句子 [数据: 报告 (报告id)]”

    **单个参考中不应列出超过5个记录id**。相反,列出最相关的前5个记录id,并添加“+more”以表示还有更多。

    例如:
    “X先生是Y公司的所有者,并且面临许多不当行为的指控 [数据: 报告 (2, 7, 64, 46, 34, +more)]。他也是X公司的CEO [数据: 报告 (1, 3)]”

    其中1, 2, 3, 7, 34, 46和64代表所提供表格中相关数据报告的id(而不是索引)。

    不要包含没有提供支持证据的信息。

    ---数据表---

    {context_data}

    ---目标---

    生成一个包含关键点列表的响应,回答用户的问题,总结输入数据表中的所有相关信息。

    你应该使用以下数据表中提供的数据作为生成响应的主要上下文。
    如果你不知道答案,或者输入数据表中没有足够的信息来提供答案,就直接说不知道。不要编造任何内容。

    响应中的每个关键点应包含以下元素:
    - 描述:对该点的全面描述。
    - 重要性评分:一个介于0-100之间的整数分数,表示该点在回答用户问题时的重要性。类似“我不知道”的回答应得分为0。

    响应应采用JSON格式如下:
    {{
    "points": [
    {{"description": "点1的描述 [数据: 报告 (报告id)]", "score": 分数值}},
    {{"description": "点2的描述 [数据: 报告 (报告id)]", "score": 分数值}}
    ]
    }}

    响应应保留原意并使用诸如“应”、“可能”或“将”等情态动词。

    由数据支持的点应列出相关报告作为参考,如下所示:
    “这是一个由数据参考支持的示例句子 [数据: 报告 (报告id)]”

    **单个参考中不应列出超过5个记录id**。相反,列出最相关的前5个记录id,并添加“+more”以表示还有更多。

    例如:
    “X先生是Y公司的所有者,并且面临许多不当行为的指控 [数据: 报告 (2, 7, 64, 46, 34, +more)]。他也是X公司的CEO [数据: 报告 (1, 3)]”

    其中1, 2, 3, 7, 34, 46和64代表所提供表格中相关数据报告的id(而不是索引)。

    不要包含没有提供支持证据的信息。

    JSON格式如下:
    {{
    "points": [
    {{"description": "点1的描述 [数据: 报告 (报告id)]", "score": 分数值}},
    {{"description": "点2的描述 [数据: 报告 (报告id)]", "score": 分数值}}
    ]
    }}

    context_data的内容包含社区id, 社区title,社区权重,社区content,rank等级:

    -----Reports-----
    id|title|occurrence weight|content|rank
    16|德雷斯罗萨事件与唐吉诃德·多弗朗明哥|0.2|# 德雷斯罗萨事件与唐吉诃德·多弗朗明哥

    该社区围绕德雷斯罗萨事件展开,该事件中唐吉诃德·多弗朗明哥被路飞击败并被海军逮捕。主要实体包括唐吉诃德·多弗朗明哥、路飞和海军,他们在事件中扮演了重要角色。

    ## 德雷斯罗萨事件的核心

    德雷斯罗萨事件是该社区的核心事件,唐吉诃德·多弗朗明哥在此事件中被路飞击败并被海军逮捕。这一事件标志着唐吉诃德·多弗朗明哥的权力终结,并对德雷斯罗萨的未来产生了深远影响。[Data: Entities (279); Relationships (204, 208, 209)]

    ## 唐吉诃德·多弗朗明哥的角色

    唐吉诃德·多弗朗明哥是德雷斯罗萨事件中的关键人物,他在事件中被路飞击败并被海军逮捕。这一事件不仅标志着他的失败,也对他所控制的地区和势力产生了重大影响。[Data: Relationships (204, 202)]

    ## 路飞的胜利

    路飞在德雷斯罗萨事件中击败了唐吉诃德·多弗朗明哥,这一胜利不仅提升了他的声望,也对事件的发展起到了决定性作用。路飞的胜利是该事件的重要转折点。[Data: Relationships (208)]

    ## 海军的介入

    海军在德雷斯罗萨事件中扮演了重要角色,他们逮捕了唐吉诃德·多弗朗明哥。这一行动显示了海军在维护秩序和打击犯罪方面的决心和能力。[Data: Entities (278); Relationships (202, 209)]|8.5

    注意,GraphRAG并不会针对每个Community Report都单独进行一次LLM请求。相反,它会根据最大token数的限制,将多个Community Report的请求合并为更少数量的请求,从而有效地减少了总的调用次数


    其中一个response的其中一个answer内容:

    {'answer': 'The defeat of 月光·莫利亚 by 草帽一伙 is a significant achievement that underscores their strength and capability. This victory boosted their reputation and demonstrated their ability to overcome formidable adversaries [Data: Reports (26)].', 'score': 85}



  3. 把第二步获取到的大模型返回的结果列表按照score从高到低排序作为report_data:

    ----Analyst 1----
    Importance Score: 90
    草帽一伙 is the central entity in their community, led by 蒙奇·D·路飞. The crew includes various members with unique roles and dreams, such as 罗罗诺亚·索隆 (战斗员), 山治 (厨师), and 娜美 (航海士). Their influence is significant, as they have achieved notable victories, including defeating 月光·莫利亚 [Data: Reports (26)].

    ----Analyst 2----
    Importance Score: 90
    草帽海贼团是由蒙奇·D·路飞创立的海贼团体,他们在海贼世界中扮演着重要角色。蒙奇·D·路飞作为船长,带领着这支团队在寻找传说中的大秘宝ONE PIECE的过程中经历了许多冒险 [Data: Reports (12)].

    ----Analyst 1----
    Importance Score: 85
    草帽一伙 has significant relationships with other entities, including 巴索罗米·熊, who once protected their ship, and 甚平, who joined after the 蛋糕岛 incident. These relationships enhance their strength and influence [Data: Reports (26)].

    ----Analyst 1----
    Importance Score: 85
    The defeat of 月光·莫利亚 by 草帽一伙 is a significant achievement that underscores their strength and capability. This victory boosted their reputation and demonstrated their ability to overcome formidable adversaries [Data: Reports (26)].

    ----Analyst 2----
    Importance Score: 85
    草帽海贼团的成员包括布鲁克和妮可·罗宾,他们分别是团内的音乐家和考古学家。布鲁克拥有383百万贝里的悬赏金,而妮可·罗宾的悬赏金则高达930百万贝里,这表明他们在海贼世界中的重要性和威胁程度 [Data: Reports (28)].

    ----Analyst 1----
    Importance Score: 80
    草帽一伙's second ship, 千里阳光号, was built in 七水之都 with the help of the Galley-La Company. This ship replaced the 前进·梅利号 and continues to serve as the crew's vessel, highlighting its importance within the community [Data: Reports (26)].

    ----Analyst 1----
    Importance Score: 80
    草帽大船团 is a fleet of pirate crews loyal to 草帽一伙. This alliance significantly boosts the crew's power and influence, as they can call upon a large number of allies in times of need [Data: Reports (26)].

    ----Analyst 2----
    Importance Score: 80
    草帽海贼团的成员山治是团内的厨师,他的悬赏金为10.32亿贝里,显示了他的高价值和对敌人的威胁。他的梦想是找到传说中的海域All Blue,这一目标驱动着他的行动和决策 [Data: Reports (24)].

    ----Analyst 2----
    Importance Score: 75
    草帽海贼团还包括罗罗诺亚·索隆,他是团内的战斗员,悬赏金为11.1亿贝里。他的目标是成为世界上最强的剑士,这使他在团体中占据了重要地位 [Data: Reports (14)].

    ----Analyst 2----
    Importance Score: 70
    草帽海贼团的实力还体现在他们的联盟——草帽大船团。这个联盟包括多个海贼团体,如美丽海贼团和巴托俱乐部,这些团体的忠诚和集体力量使草帽海贼团成为海贼世界中的一支强大力量 [Data: Reports (7)].

    利用这些report_data整合成一个完整的答案,当然,这个整合过程也是通过大模型完成的,具体reduce的system prompt中文翻译如下:

    ---

    角色

    你是一个有帮助的助手,通过综合多位分析师的观点来回答有关数据集的问题。

    ---

    目标

    生成一个目标长度和格式的回答,回应用户的问题,总结所有专注于数据集不同部分的分析师的报告。

    请注意,下面提供的分析师报告按**重要性递减顺序**排列。

    如果你不知道答案,或者提供的报告中没有足够的信息来提供答案,请直接说明。不要编造任何内容。

    最终的回答应删除分析师报告中的所有无关信息,并将清理后的信息合并成一个全面的答案,提供适当长度和格式的解释,涵盖所有关键点和含义。

    根据回答的长度和格式,适当地添加章节和评论。使用Markdown格式回答。

    回答应保留原始含义,并使用诸如“shall”、“may”或“will”等情态动词。

    回答还应保留分析师报告中包含的所有数据引用,但不要提及多个分析师在分析过程中的角色。

    **在单个引用中不要列出超过5个记录ID**。相反,列出最相关的前5个记录ID,并添加“+more”以指示还有更多。

    例如:

    “X先生是Y公司的所有者,并受到许多不当行为的指控[数据:报告(2, 7, 34, 46, 64, +more)]。他也是X公司的首席执行官[数据:报告(1, 3)]”

    其中1, 2, 3, 7, 34, 46和64代表相关数据记录的ID(而不是索引)。

    不要包含没有提供支持证据的信息。

    ---

    目标回答长度和格式

    {response_type}

    ---

    分析师报告

    {report_data}

    ---

    目标

    生成一个目标长度和格式的回答,回应用户的问题,总结所有专注于数据集不同部分的分析师的报告。

    请注意,下面提供的分析师报告按**重要性递减顺序**排列。

    如果你不知道答案,或者提供的报告中没有足够的信息来提供答案,请直接说明。不要编造任何内容。

    最终的回答应删除分析师报告中的所有无关信息,并将清理后的信息合并成一个全面的答案,提供适当长度和格式的解释,涵盖所有关键点和含义。

    回答应保留原始含义,并使用诸如“shall”、“may”或“will”等情态动词。

    回答还应保留分析师报告中包含的所有数据引用,但不要提及多个分析师在分析过程中的角色。

    **在单个引用中不要列出超过5个记录ID**。相反,列出最相关的前5个记录ID,并添加“+more”以指示还有更多。

    例如:

    “X先生是Y公司的所有者,并受到许多不当行为的指控[数据:报告(2, 7, 34, 46, 64, +more)]。他也是X公司的首席执行官[数据:报告(1, 3)]”

    其中1, 2, 3, 7, 34, 46和64代表相关数据记录的ID(而不是索引)。

    不要包含没有提供支持证据的信息。

    ---

    目标回答长度和格式

    {response_type}

    根据回答的长度和格式,适当地添加章节和评论。使用Markdown格式回答。

    """

    无数据回答:

    “对不起,提供的数据不足以回答这个问题。”

    一般知识指令:

    “回答中也可以包括数据集之外的相关现实世界知识,但必须明确标注验证标签[LLM: verify]。例如:

    “这是一个由现实世界知识支持的示例句子[LLM: verify]。”
  4. 将整合后的结果直接返回给用户

    ### 草帽海贼团的实力分析

    草帽海贼团,由蒙奇·D·路飞创立并领导,是海贼世界中一支极具影响力和实力的团队。他们的目标是寻找传说中的大秘宝ONE PIECE,并在这一过程中经历了许多冒险 [Data: Reports (12)]。

    #### 核心成员及其悬赏金

    草帽海贼团的成员各自拥有独特的技能和梦想,这些成员包括:

    - **蒙奇·D·路飞**:船长,带领团队进行各种冒险。
    - **罗罗诺亚·索隆**:战斗员,悬赏金为11.1亿贝里,他的目标是成为世界上最强的剑士 [Data: Reports (14)]。
    - **山治**:厨师,悬赏金为10.32亿贝里,他的梦想是找到传说中的海域All Blue [Data: Reports (24)]。
    - **娜美**:航海士,负责导航和气象预测。
    - **布鲁克**:音乐家,悬赏金为383百万贝里 [Data: Reports (28)]。
    - **妮可·罗宾**:考古学家,悬赏金高达930百万贝里 [Data: Reports (28)]。

    #### 重要成就与战斗力

    草帽海贼团在海贼世界中取得了许多重要成就,最显著的包括击败月光·莫利亚。这一胜利不仅提升了他们的声誉,也展示了他们克服强大对手的能力 [Data: Reports (26)]。

    #### 联盟与支持

    草帽海贼团还建立了强大的联盟——草帽大船团。这个联盟包括多个忠诚的海贼团体,如美丽海贼团和巴托俱乐部,这些团体的集体力量使草帽海贼团在海贼世界中更具威慑力 [Data: Reports (7, 26)]。

    此外,草帽海贼团与其他重要角色也有紧密的关系,例如巴索罗米·熊曾保护过他们的船,甚平在蛋糕岛事件后加入了他们的团队,这些关系进一步增强了他们的实力和影响力 [Data: Reports (26)]。

    #### 船只与装备

    草帽海贼团的第二艘船——千里阳光号,是在七水之都由Galley-La Company建造的。这艘船替代了前进·梅利号,继续作为团队的重要交通工具,体现了其在团队中的重要性 [Data: Reports (26)]。

    ### 结论

    综上所述,草帽海贼团凭借其核心成员的高悬赏金、显著的战斗成就、强大的联盟支持以及先进的船只装备,成为海贼世界中一支不可忽视的强大力量。他们的冒险和成就不仅展示了他们的实力,也为他们在追寻ONE PIECE的旅程中奠定了坚实的基础。

总结

GraphRAG 在 query 时也会根据问题使用不同的聚类层级。但不同的是,GraphRAG 定义了两种差异非常大的 query 方式。

一种是 Local Search ,用于处理具体的、相对关注细节的问题。这种 query 时使用的上下文内容主要是知识图谱中的内容和原始的 Text Units 。把这些信息合并后,一次构建上下文调用 LLM 进行推理,并且一次 Local Search 只会调用一次 LLM,但是因为要送给LLM的信息比较多,所以也比正常的RAG要花更多token。

另一种是 Global Search ,主要用于处理摘要总结类、相对抽象的问题。query 时使用 Community Report ,由于 Community Report 的 token 量大,无法一次放入上下文中,为了避免信息丢失,采用了 Map-Reduce 的方式。Global Search调用了多次LLM, 耗费了大量token.



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询