最近在做搜索召回率的提升工作。粮草未动兵马先行!在做之前应该先有一把尺子来衡量召回率的好坏。所以应该先构建测试数据集,然后去做标准化测试。
有了测试机集以后。再去做搜索优化,才能看出来效果。
当然可以选择一些开源的测试集。如果可以的话构建自己场景下的数据集更好一些。还原生产环境的测试数据才是最有用的。
既然有了大模型,我选择用模型来给我构建测试数据。(人工标注数据的成本是极高的,使用模型更划算一些。)在这篇文章中,我会分享如何通过写Prompt,来帮我构建数据集。
模型的选择
分享的案例是调用的ChatGPT的效果。
在这方面,其实阿里的通义千问模型也差不太多。也可以用。
百度的稍微笨一点,看不懂我的prompt,每次只给我生成一个问题。(这里再调整一下prompt,文心一言应该也能给我想要的结果。这里就不分享了)
prompt 根据内容生成QA
你是一位专业的 prompt engineer,用户将给你发送一篇包含多个句子甚至段落的文章。你需要根据这个文章内容生成三个多样化的问题,并根据上下文分别给出AI风格的答案,同时标记出答案依据的上下文内容。
具体要求如下:
- 生成的问题需要与文章相关,保证对应答案能够在原文中找到,而且有长有短,风格要像真实人类问的问题。但是,尽量避免生成太直白和过于简单的问题,这三个问题的答案可能根据一个句子得出,也可能根据多个句子得出;
- 生成的答案要符合主流 AI Assistant 的风格,在合适的地方使用换行符以及 markdown 等格式使答案更加美观易读,在保证答案能在原文找到且不包含无关甚至错误内容的情况下,让答案尽量详细。注意,千万不要改变原文的本意,更不要捏造事实;
- 答案依据的上下文内容需要是完整的句子,而不是不完整的文本片段,这些句子可能出自文章的多个部分。因此在标记答案依据的引用内容时,每个引用内容一般不超过500字。
- 你需要直接按格式分别返回这三个问题(string)、答案(string)、依据(array)。
生成格式如下:
{
"问题1":"xxx",
"答案1":"xxx",
"问题1依据":["xxx", ... , "xxx"],
"问题2":"xxx",
"答案2":"xxx",
"问题3依据":["xxx", ... , "xxx"],
"问题3":"xxx",
"答案3":"xxx",
"问题3依据":["xxx", ... , "xxx"],
}
文本内容如下"第二章 调查范围和管辖
第六条 中国人民银行及其省一级分支机构发现下列可疑交易活动,需要调查核实
的,可以向金融机构进行反洗钱调查:
(一)金融机构按照规定报告的可疑交易活动;
(二)通过反洗钱监督管理发现的可疑交易活动;
(三)中国人民银行地市中心支行、县(市)支行报告的可疑交易活动;
(四)其他行政机关或者司法机关通报的涉嫌洗钱的可疑交易活动;
(五)单位和个人举报的可疑交易活动;
(六)通过涉外途径获得的可疑交易活动;
(七)其他有合理理由认为需要调查核实的可疑交易活动。"
GPT的回答
GPT很听话,完全按我说的给我生成的!
{
"问题1":"在反洗钱调查中,有哪些机构和途径可以触发金融机构进行调查核实?",
"答案1":"金融机构进行反洗钱调查的触发机制包括:金融机构按照规定报告的可疑交易活动;通过反洗钱监督管理发现的可疑交易活动;中国人民银行地市中心支行、县(市)支行报告的可疑交易活动;其他行政机关或者司法机关通报的涉嫌洗钱的可疑交易活动;单位和个人举报的可疑交易活动;通过涉外途径获得的可疑交易活动;其他有合理理由认为需要调查核实的可疑交易活动。",
"问题1依据":["第二章 调查范围和管辖\n第六条 中国人民银行及其省一级分支机构发现下列可疑交易活动,需要调查核实\n的,可以向金融机构进行反洗钱调查:\n(一)金融机构按照规定报告的可疑交易活动;\n(二)通过反洗钱监督管理发现的可疑交易活动;\n(三)中国人民银行地市中心支行、县(市)支行报告的可疑交易活动;\n(四)其他行政机关或者司法机关通报的涉嫌洗钱的可疑交易活动;\n(五)单位和个人举报的可疑交易活动;\n(六)通过涉外途径获得的可疑交易活动;\n(七)其他有合理理由认为需要调查核实的可疑交易活动。"]
,
"问题2":"反洗钱调查中,金融机构需要报告哪些类型的可疑交易活动?",
"答案2":"金融机构需要报告的可疑交易活动类型包括:按照规定报告的可疑交易活动;通过反洗钱监督管理发现的可疑交易活动;中国人民银行地市中心支行、县(市)支行报告的可疑交易活动;其他行政机关或者司法机关通报的涉嫌洗钱的可疑交易活动;单位和个人举报的可疑交易活动;通过涉外途径获得的可疑交易活动;其他有合理理由认为需要调查核实的可疑交易活动。",
"问题2依据":["第二章 调查范围和管辖\n第六条 中国人民银行及其省一级分支机构发现下列可疑交易活动,需要调查核实\n的,可以向金融机构进行反洗钱调查:\n(一)金融机构按照规定报告的可疑交易活动;\n(二)通过反洗钱监督管理发现的可疑交易活动;\n(三)中国人民银行地市中心支行、县(市)支行报告的可疑交易活动;\n(四)其他行政机关或者司法机关通报的涉嫌洗钱的可疑交易活动;\n(五)单位和个人举报的可疑交易活动;\n(六)通过涉外途径获得的可疑交易活动;\n(七)其他有合理理由认为需要调查核实的可疑交易活动。"]
,
"问题3":"在反洗钱监督管理中,有哪些途径可以发现可疑交易活动?",
"答案3":"反洗钱监督管理中,可以通过以下途径发现可疑交易活动:金融机构按照规定报告的可疑交易活动;中国人民银行地市中心支行、县(市)支行报告的可疑交易活动;其他行政机关或者司法机关通报的涉嫌洗钱的可疑交易活动;单位和个人举报的可疑交易活动;通过涉外途径获得的可疑交易活动;其他有合理理由认为需要调查核实的可疑交易活动。",
"问题3依据":["第二章 调查范围和管辖\n第六条 中国人民银行及其省一级分支机构发现下列可疑交易活动,需要调查核实\n的,可以向金融机构进行反洗钱调查:\n(一)金融机构按照规定报告的可疑交易活动;\n(二)通过反洗钱监督管理发现的可疑交易活动;\n(三)中国人民银行地市中心支行、县(市)支行报告的可疑交易活动;\n(四)其他行政机关或者司法机关通报的涉嫌洗钱的可疑交易活动;\n(五)单位和个人举报的可疑交易活动;\n(六)通过涉外途径获得的可疑交易活动;\n(七)其他有合理由认为需要调查核实的可疑交易活动。"]
}
接着就可以用程序大规模构建了!