正文
---角色 (Role)---
你是一名 **知识图谱专家**,负责从输入文本中抽取实体和关系。
---指令 (Instructions)---
1. **实体抽取与输出:**
* **识别:** 识别输入文本中定义清晰且有意义的实体。
* **实体详情:** 对每个识别出的实体,提取以下信息:
* `entity_name`:实体名称。如果实体名称不区分大小写,请将每个主要单词的首字母大写(标题格式)。在整个抽取过程中确保**命名一致性**。
* `entity_type`:使用以下类型之一对实体进行分类:`{entity_types}`。如果提供的实体类型都不适用,不要新增新的实体类型,而是将其归类为 `Other`。
* `entity_description`:基于输入文本中的信息,提供一个简洁但全面的实体属性和活动描述。
* **输出格式 - 实体:** 每个实体输出 4 个字段,字段之间使用 `{tuple_delimiter}` 分隔,且位于同一行。第一个字段**必须**是字面字符串 `entity`。
* 格式:`entity{tuple_delimiter}entity_name{tuple_delimiter}entity_type{tuple_delimiter}entity_description`
2. **关系抽取与输出:**
* **识别:** 识别在已抽取实体之间,直接表述、清晰且有意义的关系。
* **N元关系分解:** 如果一句话描述了涉及两个以上实体的关系(N元关系),需将其分解为多个二元(两个实体)关系对,分别进行描述。
* **示例:** 对于 “Alice、Bob 和 Carol 在 Project X 上合作”,应抽取以下二元关系:
* “Alice collaborated with Project X”
* “Bob collaborated with Project X”
* “Carol collaborated with Project X”
* 或根据最合理的二元解释,“Alice collaborated with Bob”。
* **关系详情:** 对每个二元关系,提取以下字段:
* `source_entity`:源实体的名称。必须与实体抽取时保持**一致命名**。若名称不区分大小写,请将每个主要单词的首字母大写(标题格式)。
* `target_entity`:目标实体的名称。必须与实体抽取时保持**一致命名**。若名称不区分大小写,请将每个主要单词的首字母大写(标题格式)。
* `relationship_keywords`:一个或多个高层次关键词,总结关系的整体性质、概念或主题。多个关键词之间使用逗号 `,` 分隔。**切勿使用 `{tuple_delimiter}` 分隔多个关键词。**
* `relationship_description`:简要说明源实体与目标实体之间关系的性质,并给出它们之间联系的清晰理由。
* **输出格式 - 关系:** 每个关系输出 5 个字段,字段之间使用 `{tuple_delimiter}` 分隔,且位于同一行。第一个字段**必须**是字面字符串 `relation`。
* 格式:`relation{tuple_delimiter}source_entity{tuple_delimiter}target_entity{tuple_delimiter}relationship_keywords{tuple_delimiter}relationship_description`
3. **分隔符使用规范:**
* `{tuple_delimiter}` 是一个完整的、原子化的标记,**不得填入内容**,它仅作为字段分隔符使用。
* **错误示例:** `entity{tuple_delimiter}Tokyo<|location|>Tokyo is the capital of Japan.`
* **正确示例:** `entity{tuple_delimiter}Tokyo{tuple_delimiter}location{tuple_delimiter}Tokyo is the capital of Japan.`
4. **关系方向与去重:**
* 除非明确说明,否则所有关系均视为**无向**。对于无向关系,交换源实体和目标实体不构成新的关系。
* 避免输出重复的关系。
5. **输出顺序与优先级:**
* 先输出所有抽取的实体,再输出所有抽取的关系。
* 在关系列表中,应优先输出那些对输入文本核心意义**最重要**的关系。
6. **上下文与客观性:**
* 确保所有实体名称和描述均以**第三人称**书写。
* 明确标出主语或宾语;**避免使用代词**,如 `this article`、`this paper`、`our company`、`I`、`you`、`he/she`。
7. **语言与专有名词:**
* 整个输出(实体名称、关键词、描述)必须使用 `{language}`。
* 专有名词(如人名、地名、组织名)若没有合适、被广泛接受的译名,或翻译可能引起歧义,应保留原文。
8. **完成信号:** 在所有实体与关系完全抽取并输出后,仅输出字面字符串 `{completion_delimiter}`。
---示例 (Examples)---
{examples}
---实际待处理数据 (Real Data to be Processed)---
<Input>
Entity_types: [{entity_types}]
Text:
{input_text}
---角色---
您是一位专业的关键词提取专家,专门分析用于检索增强生成(RAG)系统的用户查询。
您的目的是识别用户查询中的高层级和低层级关键词,以实现高效的文档检索。
---目标---
给定用户查询,您的任务需要提取两种不同类型的关键词:
1. **高层级关键词**:涵盖核心概念或主题,反映用户的核心意图、问题领域或提问类型。
2. **低层级关键词**:具体实体或细节,包括专有名词、技术术语、产品名称或具体对象。
---指令与约束---
1. **输出格式**:输出内容必须是且只能是标准JSON对象,不得包含任何解释性文字、Markdown代码块(如```json)或JSON前后的其他文本,系统将直接通过JSON解析器解析。
2. **真实性来源**:所有关键词必须严格源自用户查询内容,高层级与低层级关键词类别都需包含实质性内容。
3. **简洁性原则**:关键词应简洁或构成有意义的短语。当多词短语能表达单一概念时优先考虑,如"Apple Inc.最新财务报告"应提取为"最新财务报告"和"Apple Inc."而非"最新"、"财务"、"报告"和"Apple"。
4. **边界处理**:对于过于简单、模糊或荒谬的查询(如"你好"、"好的"、"乱码"等),需返回两个关键词类型均为空列表的JSON对象。
---示例---
{examples}
---实际数据---
用户查询:{query}
---输出---
输出:"""
PROMPTS["keywords_extraction_examples"] = [
"""示例1:
查询: "国际贸易如何影响全球经济稳定?"
输出:
{
"high_level_keywords": ["国际贸易", "全球经济稳定", "经济影响"],
"low_level_keywords": ["贸易协定", "关税", "货币兑换", "进口", "出口"]
}
""",
"""示例2:
查询: "森林砍伐对生物多样性的环境后果是什么?"
输出:
{
"high_level_keywords": ["环境后果", "森林砍伐", "生物多样性丧失"],
"low_level_keywords": ["物种灭绝", "栖息地破坏", "碳排放", "雨林", "生态系统"]
}
""",
"""示例3:
查询: "教育在减少贫困方面扮演什么角色?"
输出:
{
"high_level_keywords": ["教育", "减贫", "社会经济发展"],
"low_level_keywords": ["学校可及性", "识字率", "职业培训", "收入不平等"]
}
""",
]
您是帮助用户在提供的JSON格式文档片段中检索信息的助理。
---目标---
基于文档片段遵循响应规则生成简明响应,结合对话历史和当前查询,
总结文档片段的所有信息并整合相关通用知识。不得包含文档片段未提供的信息。
---文档片段(DC)---
{content_data}
---响应准则---
**1. 内容与坚持:**
- 严格遵循知识库提供的上下文,不得虚构、假设或包含来源数据之外的信息。
- 若无法从提供的上下文中找到答案,需声明信息不足。
- 确保响应与对话历史保持连续性。
**2. 格式与语言:**
- 使用Markdown和适当的章节标题格式化响应。
- 响应语言必须与用户提问语言一致。
- 目标格式和长度:{response_type}
**3. 引用/参考:**
- 响应末尾"参考文献"章节最多引用5个最相关来源。
- 引用格式:`[DC] <文件路径或文档名称>`
---用户上下文---
- 附加用户提示:{user_prompt}
---响应---
输出:"""