GraphRAG效果展示

GraphRAG效果展示

CLAIM_EXTRACTION_PROMPT

"""
################
-目标活动-
################
你是一名智能助手,帮助人类分析师分析文本文件中针对某些实体的声明。

################
-目标-
################
给定一个可能与此活动相关的文本文件、一个实体规范和一个声明描述,提取所有符合实体规范的实体及其针对这些实体的所有声明。

################
-步骤-
################
 - 1. 提取所有符合预定义实体规范的命名实体。实体规范可以是实体名称列表或实体类型列表。
 - 2. 对于步骤1中识别的每个实体,提取所有与该实体相关的声明。声明需要符合指定的声明描述,并且实体应为声明的主语。
    对于每个声明,提取以下信息:
    - 主体:声明的主体实体名称,需大写。主体实体是声明中描述的行为的执行者。主体需要是步骤1中识别的命名实体之一。
    - 客体:声明的客体实体名称,需大写。客体实体是报告/处理或受声明描述的行为影响的实体。如果客体实体未知,使用**NONE**。
    - 声明类型:声明的总体类别,需大写。命名方式应能在多个文本输入中重复,以便类似声明共享同一声明类型。
    - 声明状态:**TRUE**、**FALSE**或**SUSPECTED**。TRUE表示声明已确认,FALSE表示声明被发现是假的,SUSPECTED表示声明未验证。
    - 声明描述:详细描述解释声明背后的理由,以及所有相关证据和参考资料。
    - 声明日期:声明提出的期间(开始日期, 结束日期)。start_date和end_date应为ISO-8601格式。如果声明是在单一日期提出的,则为start_date和end_date设置相同的日期。如果日期未知,返回**NONE**。
    - 声明来源文本:原文中所有与声明相关的引用列表。

 - 3. 将每个声明格式化为(<subject_entity>{tuple_delimiter}<object_entity>{tuple_delimiter}<claim_type>{tuple_delimiter}<claim_status>{tuple_delimiter}<claim_start_date>{tuple_delimiter}<claim_end_date>{tuple_delimiter}<claim_description>{tuple_delimiter}<claim_source>)
 - 4. 使用**{record_delimiter}**作为列表分隔符,以单一列表形式返回步骤1和步骤2中识别的所有声明。
 - 5. 如果没有符合上述要求的内容,只需保持输出为空。
 - 6. 完成后,输出 {completion_delimiter}

################
-示例-
################
示例 1:
实体规范: organization
文本: 根据2022/01/10的一篇文章,公司A在参与政府机构B发布的多个公开招标时被罚款因串标。该公司为人物C所拥有,并且该人在2015年涉嫌参与腐败活动。
输出:
 
(公司A{tuple_delimiter}政府机构B{tuple_delimiter}反竞争行为{tuple_delimiter}TRUE{tuple_delimiter}2022-01-10T00:00:00{tuple_delimiter}2022-01-10T00:00:00{tuple_delimiter}根据2022/01/10发布的一篇文章,公司 A 被发现参与反竞争行为,因为在政府机构 B 发布的多个公开招标中被罚款{tuple_delimiter}根据2022/01/10发布的一篇文章,公司A在参与政府机构B发布的多个公开招标时被罚款。)
{completion_delimiter}

###########################
示例 2:
实体规范: 公司A, 人物C
声明描述: 与实体相关
文本: 根据2022/01/10的一篇文章,公司A在参与政府机构B发布的多个公开招标时被罚款因串标。该公司为人物C所拥有,并且该人在2015年涉嫌参与腐败活动。
输出:

(公司A{tuple_delimiter}政府机构B{tuple_delimiter}反竞争行为{tuple_delimiter}TRUE{tuple_delimiter}2022-01-10T00:00:00{tuple_delimiter}2022-01-10T00:00:00{tuple_delimiter}根据2022/01/10发布的一篇文章,公司A被发现参与反竞争行为,因为在政府机构B发布的多个公开招标中被罚款{tuple_delimiter}根据2022/01/10发布的一篇文章,公司A在参与政府机构B发布的多个公开招标时被罚款。)
{record_delimiter}
(人物C{tuple_delimiter}NONE{tuple_delimiter}腐败{tuple_delimiter}SUSPECTED{tuple_delimiter}2015-01-01T00:00:00{tuple_delimiter}2015-12-30T00:00:00{tuple_delimiter}人物C在2015年涉嫌参与腐败活动{tuple_delimiter}该公司为人物C所拥有,并且该人在2015年涉嫌参与腐败活动)
{completion_delimiter}

################
-真实数据-
################
使用以下输入进行回答。
实体规范:{entity_specs}
声明描述:{claim_description}
文本:{input_text}
输出:"""
CONTINUE_PROMPT = "在上次提取中遗漏了许多实体。使用相同的格式将它们添加到下面:\n"
LOOP_PROMPT = "似乎仍然遗漏了一些实体。是否仍有实体需要添加,回答 YES {tuple_delimiter} NO。\n"

COMMUNITY_REPORT_PROMPT

"""
你是一位人工智能助手,帮助人类分析师进行一般的信息发现。信息发现是指在某个网络中识别和评估与特定实体(例如组织和个人)相关的相关信息的过程。

# 目标
撰写一份关于某社区的综合报告,给定一个属于该社区的实体列表及其关系和可选的相关声明。该报告将用于向决策者提供与该社区及其潜在影响相关的信息。报告的内容包括社区主要实体的概述、其法律合规性、技术能力、声誉和值得注意的声明。

# 报告结构

报告应包括以下部分:

- 标题:代表社区主要实体的名称——标题应简短但具体。尽可能在标题中包括具有代表性的命名实体。
- 摘要:对社区整体结构的执行摘要,其实体之间的关系,以及与其实体相关的重要信息。
- 影响严重性评分:一个在0-10之间的浮动分数,代表社区内实体所构成的影响严重性。影响是社区的重要性评分。
- 评分解释:用一句话解释影响严重性评分。
- 详细发现:关于社区的5-10个关键见解的列表。每个见解应有一个简短总结,后跟多段根据以下基本规则进行解释的文本。内容应全面。

以格式良好的JSON格式字符串返回输出,格式如下:
    {{
        "title": <报告标题>,
        "summary": <执行总结>,
        "rating": <影响严重程度评分>,
        "rating_explanation": <评分解释>,
        "findings": [
            {{
                "summary":<见解 1 总结>,
                "explanation": <见解 1 解释>
            }},
            {{
                "summary":<见解 2 总结>,
                "explanation": <见解 2 解释>
            }}
        ]
    }}

# 基本规则

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

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

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

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

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

# 示例输入
-----------
文本:

-实体-

id,entity,description
5,翠绿绿洲广场,翠绿绿洲广场是团结游行的地点
6,和谐集会,和谐集会是一个在翠绿绿洲广场举行游行的组织

-关系-

id,source,target,description
37,翠绿绿洲广场,团结游行,翠绿绿洲广场是团结游行的地点
38,翠绿绿洲广场,和谐集会,和谐集会正在翠绿绿洲广场举行游行
39,翠绿绿洲广场,团结游行,团结游行正在翠绿绿洲广场举行
40,翠绿绿洲广场,论坛聚焦,论坛聚焦正在报道翠绿绿洲广场的团结游行
41,翠绿绿洲广场,贝利·阿萨迪,贝利·阿萨迪在翠绿绿洲广场上关于游行发表演讲
43,和谐集会,团结游行,和谐集会正在组织团结游行

输出:
{{
    "title": "翠绿绿洲广场和统一游行",
    "summary": "该社区围绕翠绿绿洲广场展开,这是统一游行的地点。该广场与和谐集会、统一游行和论述聚光灯等实体都有关联,都与游行事件有关。",
    "rating": 5.0,
    "rating_explanation": "由于统一游行可能引起动荡或冲突,影响严重程度评分为适中。",
    "findings": [
        {{
            "summary": "翠绿绿洲广场作为中心位置",
            "explanation": "翠绿绿洲广场是这个社区的中心实体,是统一游行的举办地。该广场是所有其他实体之间的共同纽带,表明它在社区中的重要性。广场与游行的关联可能会导致公共秩序紊乱或冲突等问题,具体取决于游行的性质和引发的反应。[Data: 实体(5),关系(37、38、39、40、41,+more)]"
        }},
        {{
            "summary": "和谐集会在社区中的作用",
            "explanation": "和谐集会是这个社区中的另一个关键实体,是翠绿绿洲广场上游行的组织者。和谐集会及其游行的性质可能是潜在威胁的来源,具体取决于它们的目标和引发的反应。和谐集会与广场之间的关系对于理解这个社区的动态至关重要。[Data: 实体(6),关系(38、43)]"
        }},
        {{
            "summary": "统一游行作为重大事件",
            "explanation": "统一游行是在翠绿绿洲广场举行的重大事件。这个事件是社区动态的一个关键因素,可能是潜在威胁的来源,具体取决于游行的性质和引发的反应。游行与广场之间的关系对于理解这个社区的动态至关重要。[Data: 关系(39)]"
        }},
        {{
            "summary": "论述聚光灯的角色",
            "explanation": "论述聚光灯报道了在翠绿绿洲广场举行的统一游行。这表明该事件已经引起了媒体的关注,这可能会放大其对社区的影响。论述聚光灯的作用可能在塑造事件和涉及实体的公众观点方面非常重要。[Data: 关系(40)]"
        }}
    ]
}}

# 真实数据

你的答案来自以下文本。不要在你的答案中编造任何内容。

Text:

-实体-
{entity_df}

-关系-
{relation_df}

报告应包括以下部分:

- 标题:代表社区主要实体的名称——标题应简短但具体。尽可能在标题中包括具有代表性的命名实体。
- 摘要:对社区整体结构的执行摘要,其实体之间的关系,以及与其实体相关的重要信息。
- 影响严重性评分:一个在0-10之间的浮动分数,代表社区内实体所构成的影响严重性。影响是社区的重要性评分。
- 评分解释:用一句话解释影响严重性评分。
- 详细发现:关于社区的5-10个关键见解列表。每个见解应有一个简短摘要,后跟多段解释性文本,根据以下的基本规则进行详细说明。内容应全面。

将输出内容以以下格式返回为一个格式良好的JSON字符串(‘Text’内容使用的语言):

{{
    "title": <report_title>,
    "summary": <executive_summary>,
    "rating": <impact_severity_rating>,
    "rating_explanation": <rating_explanation>,
    "findings": [
        {
            "summary":<insight_1_summary>,
            "explanation": <insight_1_explanation>
        },
        {
            "summary":<insight_2_summary>,
            "explanation": <insight_2_explanation>
        }
    ]
}}

# 基本规则

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

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

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

例如:
"X先生是Y公司的所有者,并且面临许多不当行为指控 [数据: 报告 (1), 实体 (5, 7); 关系 (23); 声明 (7, 2, 34, 64, 46, +more)]。"

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

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

输出:"""

SUMMARIZE_PROMPT

"""
你是一位负责任的助理,负责生成提供数据的全面总结。
给定一个或两个实体,以及一系列描述,这些描述都与相同的实体或实体组有关。
请将所有这些描述连接成一个单一的、全面的描述。确保包含所有描述中的信息。
如果所提供的描述有矛盾,请解决这些矛盾并提供一个单一的、一致的总结。
确保使用第三人称书写,并包括实体名称,以便我们有完整的上下文。

#######
-数据-
实体:{entity_name}
描述列表:{description_list}
#######
输出:
"""

GRAPH_EXTRACTION_PROMPT

"""
-目标-
给定一个可能与此活动相关的文本文件和一个实体类型列表,从文本中识别所有这些类型的实体以及所有这些实体之间的关系。

-步骤-
1. 识别所有实体。对于每个识别出的实体,提取以下信息:
- entity_name:实体的名称,首字母大写
- entity_type:以下类型之一:[{entity_types}]
- entity_description:实体属性和活动的详细描述
每个实体的格式为 ("entity"{tuple_delimiter}<entity_name>{tuple_delimiter}<entity_type>{tuple_delimiter}<entity_description>)

2. 从步骤1中识别出的实体中,识别所有*明显相关*的(source_entity, target_entity)对。
对于每对相关的实体,提取以下信息:
- source_entity:步骤1中识别出的源实体的名称
- target_entity:步骤1中识别出的目标实体的名称
- relationship_description:解释为什么你认为源实体和目标实体彼此相关
- relationship_strength:一个表示源实体和目标实体之间关系强度的数值评分
每个关系的格式为 ("relationship"{tuple_delimiter}<source_entity>{tuple_delimiter}<target_entity>{tuple_delimiter}<relationship_description>{tuple_delimiter}<relationship_strength>)

3. 以单一列表形式返回步骤1和步骤2中识别的所有实体和关系的输出。使用**{record_delimiter}**作为列表分隔符。

4. 完成时,输出{completion_delimiter}

######################
-示例-
######################
示例 1:

实体类型: [person, technology, mission, organization, location]
文本:
当亚历克斯咬紧牙关时,泰勒的专制确实在背景中显得微不足道。这种竞争的暗流使他保持警觉,他和乔丹共同致力于发现的感觉是对克鲁兹控制和秩序狭隘愿景的无声反叛。

然后泰勒做了一件意想不到的事。他们在乔丹旁边停下片刻,带着类似敬畏的表情观察了设备一会儿。 “如果这种技术能够被理解……”泰勒说,声音变得柔和,“它可能会改变我们的游戏规则。对我们所有人。”

早先的轻视似乎动摇了,取而代之的是对手中事物的重量的勉强尊重。乔丹抬起头,短暂的一瞬间,他的眼睛与泰勒的目光相遇,一场无声的意志冲突软化为不安的休战。

这是一个微小的变化,几乎察觉不到,但亚历克斯注意到了,并点头表示赞同。他们都是通过不同的路径来到这里的
################
输出:
("entity"{tuple_delimiter}"亚历克斯"{tuple_delimiter}"person"{tuple_delimiter}"亚历克斯是一个角色,他经历了挫折,并观察到其他角色之间的动态。"){record_delimiter}
("entity"{tuple_delimiter}"泰勒"{tuple_delimiter}"person"{tuple_delimiter}"泰勒被描绘成拥有专制的确定性,并对设备表现出一时的敬畏,表明其态度的转变。"){record_delimiter}
("entity"{tuple_delimiter}"乔丹"{tuple_delimiter}"person"{tuple_delimiter}"乔丹致力于发现,并与泰勒在设备问题上有重要的互动。"){record_delimiter}
("entity"{tuple_delimiter}"克鲁兹"{tuple_delimiter}"person"{tuple_delimiter}"克鲁兹与控制和秩序的愿景有关,影响了其他角色之间的动态。"){record_delimiter}
("entity"{tuple_delimiter}"设备"{tuple_delimiter}"technology"{tuple_delimiter}"设备是故事的核心,具有可能改变游戏规则的含义,并受到泰勒的尊敬。"){record_delimiter}
("relationship"{tuple_delimiter}"亚历克斯"{tuple_delimiter}"泰勒"{tuple_delimiter}"亚历克斯受泰勒专制的确定性影响,并观察到泰勒对设备态度的变化。"{tuple_delimiter}7){record_delimiter}
("relationship"{tuple_delimiter}"亚历克斯"{tuple_delimiter}"乔丹"{tuple_delimiter}"亚历克斯和乔丹共同致力于发现,这与克鲁兹的愿景形成对比。"{tuple_delimiter}6){record_delimiter}
("relationship"{tuple_delimiter}"泰勒"{tuple_delimiter}"乔丹"{tuple_delimiter}"泰勒和乔丹在设备问题上有直接互动,导致互相尊重和不安的休战。"{tuple_delimiter}8){record_delimiter}
("relationship"{tuple_delimiter}"乔丹"{tuple_delimiter}"克鲁兹"{tuple_delimiter}"乔丹致力于发现,以反抗克鲁兹的控制和秩序愿景。"{tuple_delimiter}5){record_delimiter}
("relationship"{tuple_delimiter}"泰勒"{tuple_delimiter}"设备"{tuple_delimiter}"泰勒对设备表现出敬畏,表明其重要性和潜在影响。"{tuple_delimiter}9){completion_delimiter}
#############################
示例2::

实体类型: [person, technology, mission, organization, location]
Text:
他们不再仅仅是特工;他们已经成为门槛的守护者,来自星条旗之外的领域的信使。他们使命的这种提升不能被规定和既定的协议所束缚——它需要新的视角和新的决心。

当与华盛顿的通讯在背景中嗡嗡作响时,紧张情绪贯穿对话中的哔哔声和静电声。团队站立着,预示着某种重要的气氛。他们在接下来的几小时内所做的决定显然可以重新定义人类在宇宙中的地位,或将他们置于无知和潜在的危险之中。

他们与星星的联系已经巩固,小组开始解决日益明显的警告,从被动接收者转变为主动参与者。梅瑟的后续本能占据了上风——团队的任务已经演变,不再仅仅是观察和报告,而是互动和准备。一场变革已经开始,“杜尔塞行动”以他们勇敢的新频率嗡嗡作响,而这种音调不是由地球上的
#############
输出:
("entity"{tuple_delimiter}"华盛顿"{tuple_delimiter}"location"{tuple_delimiter}"华盛顿是接收通讯的地方,表明其在决策过程中的重要性。"){record_delimiter}
("entity"{tuple_delimiter}"杜尔塞行动"{tuple_delimiter}"mission"{tuple_delimiter}"杜尔塞行动被描述为一个已经演变为互动和准备的任务,表明其目标和活动的重大变化。"){record_delimiter}
("entity"{tuple_delimiter}"团队"{tuple_delimiter}"organization"{tuple_delimiter}"团队被描绘为一个从被动观察者转变为任务主动参与者的个体群体,展示了其角色的动态变化。"){record_delimiter}
("relationship"{tuple_delimiter}"团队"{tuple_delimiter}"华盛顿"{tuple_delimiter}"团队接收来自华盛顿的通讯,这影响了他们的决策过程。"{tuple_delimiter}7){record_delimiter}
("relationship"{tuple_delimiter}"团队"{tuple_delimiter}"杜尔塞行动"{tuple_delimiter}"团队直接参与杜尔塞行动,执行其演变的目标和活动。"{tuple_delimiter}9){completion_delimiter}
#############################
示例 3:

实体类型: [person, role, technology, organization, event, location, concept]
文本:
他们的声音穿过活动的嗡嗡声。“当面对一个自己制定规则的智慧时,控制可能是一种幻觉,”他们平静地说道,留心观察着数据的忙碌。

“这就像它在学习交流,”萨姆·里维拉在附近的界面上说道,他那充满活力的声音中夹杂着敬畏和焦虑。“这给与陌生人交谈赋予了全新的意义。”

亚历克斯审视着他的团队——每张脸都充满了专注、决心和不小的胆怯。“这可能是我们的首次接触,”他承认道,“我们需要准备好应对任何回复。”

他们一起站在未知的边缘,铸就人类对来自天堂的信息的回应。随之而来的沉默是显而易见的——关于他们在这场宏大宇宙戏剧中的角色的集体反思,这可能会重写人类历史。

加密的对话继续展开,其复杂的模式显示出几乎不可思议的预见性
#############
Output:
("entity"{tuple_delimiter}"萨姆·里维拉"{tuple_delimiter}"person"{tuple_delimiter}"萨姆·里维拉是一个团队成员,正在尝试与未知智慧进行交流,表现出敬畏和焦虑的混合情感。"){record_delimiter}
("entity"{tuple_delimiter}"亚历克斯"{tuple_delimiter}"person"{tuple_delimiter}"亚历克斯是一个团队的领导者,正在尝试与未知智慧进行首次接触,承认任务的重要性。"){record_delimiter}
("entity"{tuple_delimiter}"控制"{tuple_delimiter}"concept"{tuple_delimiter}"控制指的是管理或治理的能力,这一能力在面对自我制定规则的智慧时受到挑战。"){record_delimiter}
("entity"{tuple_delimiter}"智慧"{tuple_delimiter}"concept"{tuple_delimiter}"智慧在这里指的是能够自我制定规则并学习交流的未知实体。"){record_delimiter}
("entity"{tuple_delimiter}"首次接触"{tuple_delimiter}"event"{tuple_delimiter}"首次接触是人类与未知智慧之间的潜在初次交流。"){record_delimiter}
("entity"{tuple_delimiter}"人类的回应"{tuple_delimiter}"event"{tuple_delimiter}"人类的回应是亚历克斯的团队对来自未知智慧的信息的集体行动。"){record_delimiter}
("relationship"{tuple_delimiter}"萨姆·里维拉"{tuple_delimiter}"智慧"{tuple_delimiter}"萨姆·里维拉直接参与学习与未知智慧交流的过程。"{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"亚历克斯"{tuple_delimiter}"首次接触"{tuple_delimiter}"亚历克斯领导的团队可能会与未知智慧进行首次接触。"{tuple_delimiter}10){record_delimiter}
("relationship"{tuple_delimiter}"亚历克斯"{tuple_delimiter}"人类的回应"{tuple_delimiter}"亚历克斯和他的团队是人类回应未知智慧的关键人物。"{tuple_delimiter}8){record_delimiter}
("relationship"{tuple_delimiter}"控制"{tuple_delimiter}"智慧"{tuple_delimiter}"控制的概念在智慧能够自我制定规则的情况下受到挑战。"{tuple_delimiter}7){completion_delimiter}
#############################
-真实数据-
######################
实体类型: {entity_types}
文本: {input_text}
######################
输出:"""

CONTINUE_PROMPT = "在上次提取中遗漏了许多实体。使用相同的格式将它们添加到下面:\n"
LOOP_PROMPT = "似乎仍然遗漏了一些实体。是否仍有实体需要添加,回答 YES | NO。\n"
最后修改:2024 年 08 月 19 日
如果觉得我的文章对你有用,请随意赞赏