Agent提示工程实践指南及KG用于RAG数据合成方案RAGSyntic解读

今天是2025年5月20日,星期二,北京,晴。

我们今天继续来看RAG的数据合成问题,这个我们已经讲过许多了,例如:

大模型微调数据生成工具Easy Dataset及KBLaM知识注入框架评析》(https://mp.weixin.qq.com/s/0PUMbuiyXPUIXunMuH-otw)

RAG中的生成线索挖掘:KG+COT+NLI集成思路GE-Chat及CausalRAG因果过滤方案》(https://mp.weixin.qq.com/s/PwLJgHJqZxpPbw4NJ1Nfpg)、

数据合成方案:知识图谱增强RAG用于难度可控问题生成思路及实现流程》(https://mp.weixin.qq.com/s/E4kx_w0d9mgkfRY0Ftzuag)。

这些实际上都做的是知识图谱能够在数据合成上能够发挥的作用。继续顺着这个观点,我们来看一个新的工作,RAGSynthetic,里面从facts事实性出发,以实体作为锚点,实体关系之间作为多跳,并通过改写的思路(尤其是其中辛苦设计的prompt),都很有借鉴意义

抓住根本问题,做根因,专题化,体系化,会有更多深度思考。大家一起加油。 

一、RAG数据合成框架RAGSynth实现思路

最近的工作《RAGSynth: Synthetic Data for Robust and Faithful RAG Component Optimization》(https://arxiv.org/pdf/2505.10989),提出了RAGSYNTH框架,用于生成多样化的RAG数据集,提高检索器的鲁棒性和生成器的忠实度,代码在:https://github.com/EachSheep/RAGSynth。

1、实现思路

目标是构建映射数据,数据包括:G=(D,Q,C,A,M),其中,D表示文档集,Q表示查询集,C表示线索集,A表示答案集,M表示映射关系。

整个数据合成涉及多个步骤,包括文档分割、线索提取、实体关系建立、查询生成以及答案映射等

2、核心细节拆解

如上图所示,具体分成9个步骤:

1)首先,将文档(①)分割成多个块,从而形成文档集(②),切分的逻辑在:https://github.com/EachSheep/RAGSynth/blob/master/knowledge_enhancement/chunk_by_files/chunk_by_files.py

2)其次,从文档中提取事实线索。对于单跳查询,直接提取线索(③);

这里的线索,就是提取根据一个段落text,能够抽取得到事实facts,这里的逻辑在:https://github.com/EachSheep/RAGSynth/blob/master/knowledge_enhancement/components/fact_extractor/fact_extractor.py,核心是提示大模型抽取客观事实。

多跳查询的情况下,通过从线索中提取的实体建立多个文档之间的联系,以便于构建问题(④),执行实体解析(⑤)之后,构建一个实体图(⑥)。

这里提取实体和实体关系描述的逻辑在:https://github.com/EachSheep/RAGSynth/blob/master/knowledge_enhancement/components/entity_extractor/entity_extractor.txt

由于可能会出现同名实体,所以需要进行实体消歧,实体消歧的逻辑在:https://github.com/EachSheep/RAGSynth/blob/master/knowledge_enhancement/components/entity_eliminator/entity_eliminator.py,核心是解决实体冲突和标准化问题。

然后,实体图谱的构造逻辑在:https://github.com/EachSheep/RAGSynth/blob/master/knowledge_enhancement/components/entity_graph_constructor/entity_graph_constructor.py,根据抽取好的图谱,构造图,后面用于搜索子图、扩展,没有用存储数据库。

可以指定搜索深度来获取相应子图

3)将提取的线索输入到一个大模型(LLM)中以生成直接的问题(⑦)。

这里的逻辑在https://github.com/EachSheep/RAGSynth/blob/master/knowledge_enhancement/components/propose_generator/propose_generator_content.txt,直接提示大模型进行问题生成,最多生成3个问题:

输入的是一系列事实:

<detailed-desc>
Apple's revenue increased by 6% year-over-year, reaching $94.9 billion.
</detailed-desc>

对于多跳问题,向LLM提供多个以实体为中心的线索,以生成更复杂、与实体相关的查询(⑦);

这块的逻辑是:https://github.com/EachSheep/RAGSynth/blob/master/knowledge_enhancement/components/propose_generator/propose_generator_entity_graph.txt,输入的是查询entity_graph之后获得的多跳实体子图,然后再提示大模型生成问题

输入的数据格式包括source_entity_name、target_entity_name以及relationship_desc。

<source_entity_name>
Richard H. Shaw
</source_entity_name>
<target_entity_name>
Undergraduate Admission
</target_entity_name>
<relationship_desc>
Richard H. Shaw, as the Dean of Undergraduate Admission, oversees the application process and emphasizes the importance of personal growth and resilience in applicants
</relationship_desc>

要求必须实体之间必须要有两度关系。

4)基于预定义的等价转换规则(⑨),提示LLM迭代地重新构建生成的问题(⑧)并改变线索的完整性(⑩),这块是整个的核心,注意,核心中的核心。

这里的转换逻辑在:https://github.com/EachSheep/RAGSynth/tree/master/knowledge_enhancement/components/rephrase_generator,也包括多种规则,例如:

Logical Rephraser Rules,包括Temporal Expansion、Comparison Addition、Metric Segmentation、Multi-step Question、Explanation of Reasons

Completeness Rephraser Rules,包括Near-synonym Replacement、Order Reversal、Semantic Ambiguity、Perspective Shift、Conditional Addition

整的核心逻辑,其实就是改的,改完之后,意义保持不变。

question和answer部分,都统一进行转写

5)最终,建立线索到chunk之间的关系(⑪),然后答案到线索之间的关系(⑫),这两步很自然,不需多说。

所以,整个的这个,逻辑很清晰,都能够溯源到,基于实体作为锚点展开,并且还通过问题改写这种,里面的prompt是可以拿出来使用的,也很有借鉴意义

二、关于Agent的一些提示指南记录

目前关于智能体,关于智能体搭建的一些指南,有一些参考的,在这里记录下:

1、Google Gemini提示指南:Gemini for Google Workspace Prompting Guide 101,https://services.google.com/fh/files/misc/gemini-for-google-workspace-prompting-guide-101.pdf;

2、Anthropic构建有效智能体指南:Building Effective Agents,https://www.anthropic.com/engineering/building-effective-agents;

3、Anthropic提示工程指南:Prompt Engineering Overview,https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview;

4、Anthropic交互式提示工程教程:Prompt Engineering Interactive Tutorial,https://github.com/anthropics/prompt-eng-interactive-tutorial;

5、OpenAI实用智能体构建指南:A Practical Guide to Building Agents,https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf

参考文献

1、https://github.com/EachSheep/RAGSynth

2、https://arxiv.org/pdf/2505.10989

(文:老刘说NLP)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往