全网土壕级 GraphRAG 测试:89万字《水浒传》全本知识图谱训练

摘要:王豫翔,拥有20余年编程经验,Microsoft AI MVP,一直致力于分享 Azure AI 相关技术。曾在多个大型研讨会担任讲者,包含 TechEd、Tech Summit、Ignite China、Al Bootcamp 等。专注人工智能领域技术创新,

M

作者:王豫翔 - 微软最有价值专家(MVP)

排版:Alan Wang

王豫翔

微软最有价值专家(MVP)

王豫翔,拥有20余年编程经验,Microsoft AI MVP,一直致力于分享 Azure AI 相关技术。曾在多个大型研讨会担任讲者,包含 TechEd、Tech Summit、Ignite China、Al Bootcamp 等。专注人工智能领域技术创新,尤其是自然语言对话方向的颠覆性机会。

上次《微软 GraphRAG 应该怎么用?》后,我就打算做一个全网土豪级的 GraphRAG 效果测试。我对知识源的要求:文件内容非常大;人物、事件关系极其复杂;大家要熟知,对结果才能验证。这样四大名著显然就是最佳的对象。选择水浒,并不是我对这本书有偏好,仅仅是恰恰,我电脑里有水浒的全本文件。

安装 GraphRAG 环境

我在本地建立了一个 graph 目录,然后在目录的 cmd 下执行命令:pip install graphrag然后执行以下命令,将 graph 目录设置为 GraphRAG 工作区:python -m graphrag.index --init

然后再当前目录下你会看到两个文件:.env 和 settings.yaml。

.env 里面就填写 Azure Open AI 的 key 就可以,

settings.yaml 文件有两个区域要编辑:

llm:typemodelapi_base:api_base:embeddings:type:modelapi_basedeployment_name

然后在 graph 目录下建立一个子目录:input,在这个目录里面保存我的水浒传全本。

到此为止,环境都完成了。

构建 GraphRAG Index

执行命令:

python -m graphrag.index --root

然后我们将进入一个漫长的等待:

create_base_extracted_entities 花费三个多小时

create_summarized_entities 大约1个多小时

create_final_community_reports 大约1个多小时

总体耗费了5小时构建知识图谱。

测试 GraphRAG 回答

执行命令:

python -m graphrag.query --method global "query"

这个故事的主题是什么?

### 故事的主题

《水浒传》的故事围绕着梁山好汉展开,主要讲述了他们的军事行动、战略合作以及彼此之间的忠诚。以下是故事的几个主要主题:

#### 军事行动与战略合作

梁山好汉在宋江的领导下,进行了一系列的军事行动和战略合作。他们的战斗不仅仅是为了生存,更是为了反抗腐败的官员,追求正义。关键人物如吴用、卢俊义、李逵等在各种战斗和战略行动中发挥了重要作用 [Data: Reports (228, 276, 230, 267, 242, +more)]。

#### 忠诚与领导

忠诚是梁山好汉之间最重要的纽带。宋江作为领导者,不仅在军事上展现了卓越的才能,还在内部调解矛盾,维持团队的团结。他的领导风格和战略决策对梁山好汉的成功起到了至关重要的作用 [Data: Reports (228, 243, 244, 245, 272, +more)]。

#### 个人关系与团队合作

梁山好汉之间的复杂关系和团队合作也是故事的重要组成部分。人物如杨志、燕青、柴进等不仅在战斗中表现出色,还通过个人关系和团队合作,增强了整个团队的凝聚力 [Data: Reports (394, 353, 387, 219, 252, +more)]。

#### 反抗与正义

梁山好汉的反抗行动不仅是对个人恩怨的报复,更是对社会不公的反抗。他们的行动体现了对正义的追求,反映了当时社会的腐败和不公 [Data: Reports (490, 476, 377, 429, 330, +more)]。

#### 战略地点的重要性

故事中多次提到战略地点的重要性,如梁山泊、东昌府、独鹿山等。这些地点不仅是战斗的场所,也是梁山好汉进行战略部署和行动的关键 [Data: Reports (272, 334, 380, 283, 46, +more)]。

### 结论

《水浒传》通过描绘梁山好汉的军事行动、战略合作、忠诚与领导、个人关系与团队合作,以及反抗与正义等主题,展现了一个充满英雄主义和复杂人性的世界。这些主题不仅使故事更加丰富多彩,也反映了当时社会的现实和人们对正义的渴望。

公子点评:

这个回答中规中矩,没有表现出什么特色

和宋江有关的女人有哪些人?列出他和这些女人的关系

### 宋江与阎婆惜

阎婆惜是宋江的情人,但他们的关系非常复杂且充满冲突。阎婆惜希望与宋江分手并改嫁张三,甚至要求宋江写一份同意书。然而,随着时间的推移,宋江对阎婆惜的兴趣逐渐减弱,导致他们之间的争执不断升级。最终,宋江在一次激烈的冲突中杀害了阎婆惜 [Data: Reports (233, 250, 297, 429, 434)]。

### 宋江与李瑞兰

李瑞兰是东平府的一名妓女,宋江曾经拜访过她的家。在一次拜访中,宋江被捕,这表明他们之间有复杂的个人关系和宋江面临的挑战 [Data: Reports (284)]。

### 宋江与李师师

李师师是宋江的朋友,她帮助宋江与朝廷沟通,争取招安。她在她的卧房中接待了宋江,表明他们之间有一定的互动和关系 [Data: Reports (172, 250, 429)]。

### 宋江与扈三娘

扈三娘是梁山好汉中的一位著名女将,以卓越的战斗技能和领导能力闻名。她在多次军事行动中与宋江合作,并在关键任务中发挥了重要作用。尽管他们之间没有直接的爱情关系,但扈三娘是宋江的忠实追随者 [Data: Reports (39, 250, 429)]。

### 宋江与琼英

琼英是宋军中的一位著名女将,以卓越的武艺和战略才能著称。宋江认可并奖励了琼英在战斗中的贡献,并与她合作实现战略目标 [Data: Reports (314)]。

### 宋江与金芝公主

金芝公主在宋江领导的对东宫的攻击中自杀。这一事件突显了公主所经历的动荡和悲剧 [Data: Reports (382)]。

### 宋江与其他女性角色

宋江还与其他一些女性角色有间接关系。例如,潘金莲是宋江的朋友,她的丈夫武大郎被西门庆杀害后,宋江帮助她报仇 [Data: Reports (429)]。此外,宋江与潘巧云、李巧奴、顾大嫂等女性角色也有一定的互动和关系 [Data: Reports (92, 250, 429)]。

这些关系展示了宋江在其生活和事业中与多位女性的复杂互动,这些互动不仅影响了他的个人生活,也对他的事业产生了深远的影响。

公子点评:

刘高媳妇‌和秦明老婆在水浒里面没有具体提到名字,对这样的人物无法构建实体,所以 GraphRAG 缺失了信息。

GraphRAG 认为潘金莲是宋江的朋友,她的丈夫武大郎被西门庆杀害后,宋江帮助她报仇显然是非常奇怪的推理。

梁山上所有将领的名字,按他们的排名顺序告诉我他们的名字,花名,和加入梁山之前的角色,以及最后书里面描述的他的结局

### 梁山将领排名及信息

以下是梁山将领的名字、花名、加入梁山之前的角色以及他们在书中的结局:

1. **宋江**

- **花名**: 宋公明

- **加入梁山之前的角色**: 梁山泊的领导者

- **结局**: 宋江在书中被毒死 [Data: Reports (261)]

2. **卢俊义**

- **花名**: 卢俊义

- **加入梁山之前的角色**: 被任命为副先锋,协助宋江对抗田虎,并作为副指挥官镇压方腊的叛乱

- **结局**: 书中未详细描述 [Data: Reports (359)]

3. **宋万**

- **花名**: 云里金刚

- **加入梁山之前的角色**: 第三排名的将领

- **结局**: 宋万在战斗中牺牲,是三位在战斗中牺牲的将领之一 [Data: Reports (261)]

4. **杜迁**

- **花名**: 摸着天

- **加入梁山之前的角色**: 军事战略家

- **结局**: 杜迁在战斗中受重伤,最终作为宋江的将领之一牺牲 [Data: Reports (261)]

5. **朱仝**

- **花名**: 美髯公

- **加入梁山之前的角色**: 郓城县的捕头

- **结局**: 朱仝在战斗中牺牲 [Data: Reports (263)]

6. **雷横**

- **花名**: 插翅虎

- **结局**: 雷横在战斗中牺牲 [Data: Reports (263)]

7. **李逵**

- **花名**: 黑旋风

- **加入梁山之前的角色**: 润州的指挥官

- **结局**: 李逵在润州期间中毒身亡 [Data: Reports (379)]

8. **石进**

- **花名**: 九纹龙

- **加入梁山之前的角色**: 军事领袖和战略家

- **结局**: 石进在战斗中牺牲,宋江深受其死影响,并被宋军追授荣誉 [Data: Reports (284)]

9. **薛永**

- **花名**: 病大虫

- **加入梁山之前的角色**: 军事战略家和领导者

- **结局**: 薛永在战斗中牺牲 [Data: Reports (438)]

10. **李云**

- **花名**: 青眼虎

- **加入梁山之前的角色**: 军事领导者,负责后勤和指导

- **结局**: 李云在战斗中牺牲,作为宋江的忠实部下 [Data: Reports (271)]

### 其他将领

- **彭王己**

- **花名**: 无

- **加入梁山之前的角色**: 副将之一,参与多次战斗并俘虏敌将

- **结局**: 书中未详细描述 [Data: Reports (211)]

- **张顺**

- **花名**: 无

- **加入梁山之前的角色**: 参与多次战术行动

- **结局**: 书中未详细描述 [Data: Reports (379)]

- **刘梦龙**

- **花名**: 无

- **加入梁山之前的角色**: 海军指挥官

- **结局**: 被李俊俘虏 [Data: Reports (274)]

这些将领在梁山泊的故事中扮演了重要角色,他们的忠诚和勇敢在书中得到了充分的体现。

公子点评:

没有完整的回答出所有将领的排名,只有宋江和卢俊义是对的,其他都错。

卢俊义的花名没有识别出来。

祝家庄三兄弟是谁,攻打祝家庄是梁山哪些将领

### 祝家庄三兄弟

祝家庄的三兄弟分别是祝彪(祝彪)、祝龙(祝龙)和祝虎(祝虎)。他们是祝家庄的主要领导者,负责村庄的防御和战略操作 [Data: Reports (457, 267, 394, 173, 447, 237, 324, 277, 323, 467, 342, 347, 52, 488, 258, 359, 284, 379, 250, 253, 358, 289, 308, 498, 509, 186, 303, 286, 259, 413, 455, 56, 445, 333, 248, +more)]。

### 攻打祝家庄的梁山将领

攻打祝家庄的梁山将领包括宋江、吴用、花荣、秦明、林冲、呼延灼、朱仝、雷横、鲁智深、武松、杨志、石秀、解珍和解宝等。这些将领在攻打祝家庄的战斗中发挥了重要作用 [Data: Reports (507, 457, 283, 46, 363, 336, 229, 310, 250, 253, 358, 289, 308, 498, 509, 186, 303, 286, 259, 413, 455, 56, 248, 445, 333, +more)]。

其中,宋江作为梁山的核心人物,协调了对祝家庄的攻击 [Data: Reports (267, 394, 173, 447, 272, 243, 264, 39, 439, 33, 448, 485, 449, 418, 293, 328, 422, 191, 326, 429, 330, 377, 477, 266)]。其他重要的将领如吴用、花荣、秦明、林冲等也在战斗中发挥了关键作用 [Data: Reports (507, 457, 283, 46, 363, 336, 229, 310, 250, 253, 358, 289, 308, 498, 509, 186, 303, 286, 259, 413, 455, 56, 248, 445, 333, +more)]。

### 总结

祝家庄的三兄弟祝彪、祝龙和祝虎在村庄的防御中起到了重要作用,而梁山的众多将领在攻打祝家庄的战斗中展现了他们的战略和战斗能力。这场战斗不仅展示了梁山将领的勇猛和智慧,也突显了祝家庄三兄弟的防御策略和领导能力。

公子点评:

祝家庄的三兄弟是祝彪(祝彪)、祝龙(祝龙)和祝虎(祝虎)。回答正确

攻打祝家庄的梁山将领包括宋江、吴用、花荣、秦明、林冲、呼延灼、朱仝、雷横、鲁智深、武松、杨志、石秀、解珍和解宝等。

但是呼延灼、朱仝、雷横、鲁智深、武松、杨志、解珍和解宝好像没有参与攻打祝家庄。

梁山的将领最后出家的有哪些人

梁山的将领中有几位最终选择了出家修行,他们的故事各具特色,展现了从战士到僧人的转变过程。

### 鲁智深

鲁智深是梁山的将领之一,原名鲁达。他的故事从一个勇猛的战士开始,最终出家成为一名受人尊敬的僧人。他的精神和哲学之旅包括与僧人的哲学对话,对政府赦免的怀疑,以及表现出同情心的时刻。他与智真长老和其他精神人物的互动反映了他的成长和转变 [Data: Reports (276, 290, 296, 473, +more)]。

### 武松

武松也是梁山的将领之一,以其英勇的战斗表现而闻名。最终,他选择了出家修行,追求内心的平静和精神的升华 [Data: Reports (473)]。

### 史进

史进同样是梁山的将领之一,最后也选择了出家。他与鲁智深有着深厚的关系,并且在梁山的战斗中表现出色 [Data: Reports (284)]。

### 戴宗

戴宗在泰安府出家,标志着他从军事角色向僧人生活的转变 [Data: Reports (115)]。

这些将领的出家之路不仅反映了他们个人的精神追求,也展示了他们在经历了战斗和动荡之后,寻求内心平静和精神升华的共同愿望。

公子点评:

史进是被庞万春射中后,与石秀、陈达、杨春、李忠、薛永等人一起被乱箭射死‌‌。

本次 GraphRAG 评测结论

GraphRAG 对这样一篇信息极大、人物极多、花名多、事件多,且关系极其复杂的情况下,处理的还是不够精确。当然了,基线 RAG 对这样的内容也无法进行良好的训练。我这篇并不是说 GraphRAG 不行,而是说 GraphRAG 对这样复杂的场景和基线一样不适合。

微软最有价值专家(MVP)

微软最有价值专家是微软公司授予第三方技术专业人士的一个全球奖项。31年来,世界各地的技术社区领导者,因其在线上和线下的技术社区中分享专业知识和经验而获得此奖项。

MVP 是经过严格挑选的专家团队,他们代表着技术最精湛且最具智慧的人,是对社区投入极大的热情并乐于助人的专家。MVP 致力于通过演讲、论坛问答、创建网站、撰写博客、分享视频、开源项目、组织会议等方式来帮助他人,并最大程度地帮助微软技术社区用户使用 Microsoft 技术。

更多详情请登录官方网站:

新浪微博|微软中国MSDN

来源:opendotnet

相关推荐