目录
引言
随着大规模语言模型(LLM)在生成式任务中的广泛应用,检索增强生成(Retrieval-Augmented Generation, RAG)成为提升答案准确性和可解释性的关键技术之一。RAG 系统通过先检索相关知识,再将检索到的内容与用户查询一起输入 LLM,从而缓解模型“幻觉”(hallucination)问题,并扩展模型对外部知识库的访问能力。本文将聚焦两种代表性 RAG 框架——LightRAG 和 GraphRAG——的实体与关系提取提示(prompt)设计,通过技术对比剖析它们在提示结构、功能覆盖、可定制性及性能成本等方面的异同,并给出选型建议。
RAG 概述
RAG 系统通常由三大组件构成:检索器(Retriever)、生成器(Generator)和知识库(Knowledge Source)。其中,检索器负责从大规模文档、向量数据库或知识图谱中检索与查询最相关的信息;生成器则将检索结果与用户提问组合,生成最终回答。近年来,基于知识图的 RAG(GraphRAG)方法和轻量级 RAG(LightRAG)方法得到了广泛关注,分别在复杂关系建模与快速部署成本方面展现出不同优势。
LightRAG 实体与关系提取提示
LightRAG 在文档切分后,通过高度结构化的 prompt 驱动 LLM 提取实体、关系及内容级关键词,并将其存入可检索的知识图与向量库。其核心提示(entity_extraction
)包含五大步骤:
-
实体识别:列出实体名称、类型与描述;
-
关系识别:对每对实体抽取关系描述、强度与关键词;
-
关键词提取:总结文本主旨;
-
结果整理:按指定分隔符输出实体与关系列表;
-
结束标记:输出完成符号结束任务。
示例模板如下:
---Goal---
Given a text document... and a list of entity types...
---Steps---
1. Identify all entities...[格式] ("entity"{tuple_delimiter}<entity_name>{tuple_delimiter}<entity_type>{tuple_delimiter}<entity_description>)
2. Identify all relationships...[格式] ("relationship"{tuple_delimiter}<source_entity>{tuple_delimiter}<target_entity>{tuple_delimiter}<relationship_description>{tuple_delimiter}<relationship_keywords>{tuple_delimiter}<relationship_strength>)
3. Identify high-level key words...[格式] ("content_keywords"{tuple_delimiter}<high_level_keywords>)
4. Return output in {language} as a single list... Use {record_delimiter}
5. When finished, output {completion_delimiter}
---Examples---
{examples}
---Real Data---
Entity_types: [{entity_types}]
Text: {input_text}
Output:
该设计不仅提供了多层次的结构化信息(包含关系关键词),还支持可配置的分隔符与语言参数,以及针对低置信度的“gleaning”重提取机制,极大提升了提取召回与可定制性 (Graph Database & Analytics)。
GraphRAG 实体与关系提取提示
GraphRAG 则在纯文本检索之上,构建基于知识图记忆的模块化 RAG 流水线,其实体/关系提取提示(GRAPH_EXTRACTION_PROMPT
)设计相对简洁,涵盖四个步骤:
-
实体识别:列出实体名称(大写)、类型与描述;
-
关系识别:对实体对抽取关系描述与强度;
-
结果输出:按指定分隔符返回所有实体与关系列表;
-
完成标记:输出完成符号。
示例模板如下:
-Goal-
Given a text document... and a list of entity types...
-Steps-
1. Identify all entities... Format: ("entity"{tuple_delimiter}<entity_name>{tuple_delimiter}<entity_type>{tuple_delimiter}<entity_description>)
2. Identify all relationships... Format: ("relationship"{tuple_delimiter}<source_entity>{tuple_delimiter}<target_entity>{tuple_delimiter}<relationship_description>{tuple_delimiter}<relationship_strength>)
3. Return output in English as a single list... Use {record_delimiter}
4. When finished, output {completion_delimiter}
此外,GraphRAG 还配备了简单的继续提取与循环确认提示(CONTINUE_PROMPT
、LOOP_PROMPT
),以保障遗漏实体的补充提取 (GitHub)。
深度对比分析
提示设计复杂度
-
LightRAG:采用五步流程,额外提取内容级关键词(content_keywords)并支持多级分隔符与多语言输出,提示模板更为详尽。
-
GraphRAG:四步流程,聚焦核心实体与关系,模板简洁,便于快速上手。
功能覆盖与输出格式
-
LightRAG:支持关系关键词、关系强度(numeric score)、高层次关键词总结、few-shot 示例注入;可导出 CSV、Markdown、Excel 等多种格式。
-
GraphRAG:侧重实体与关系基础提取,输出仅包含实体与关系,对关键词与多媒体辅助则依赖后续社区摘要组件。
可定制性与扩展性
-
LightRAG:可通过
PROMPTS["DEFAULT_ENTITY_TYPES"]
、分隔符等全局配置覆盖;内置“gleaning”重提取机制,增强低置信度场景的召回率。 -
GraphRAG:通过修改
GRAPH_EXTRACTION_PROMPT
及相关继续/循环提示来自定义;更倾向与 Azure 生态中一键部署的解决方案结合,模块化程度高。
性能与成本考量
-
LightRAG:双路径并行检索(向量+图),可减少对 LLM 的过度调用,适合 GPU 资源有限或 API 成本敏感的场景。
-
GraphRAG:侧重社区摘要与多跳推理,对大规模全局查询有优势,但索引与摘要预生成成本较高。
场景适用性与选型建议
-
快速上线与成本敏感:推荐 LightRAG,轻量化提示与并行检索策略可迅速部署并控制 API 调用成本。
-
全局概览与复杂推理:推荐 GraphRAG,模块化社区摘要和知识图多跳检索能力,适合复杂数据集的全局问答与决策支持。
-
混合打法:在部分子任务采用 LightRAG 的高速提取、部分全局分析采用 GraphRAG,实现性能与准确性的动态平衡。
结论与展望
LightRAG 与 GraphRAG 在实体与关系提取提示层面各有侧重:前者通过细粒度步骤与关键词扩展提升召回与可解释性,后者以简洁模板与模块化流程兼顾可扩展与全局推理能力。未来,可结合两者优势,引入自适应提示选择机制或混合提示模板,以在不同查询类型之间智能切换,进一步强化 RAG 系统的效率与准确性。