背景

之前在试着提高解题正确率,目标100%,发现外部知识不足仅依靠大模型的话比较困难。而试题人工生产成本巨大。

本质因为大模型生成内容会有幻觉特点,也就是说解答的试题正确性不太好评判,直接解答试题生产场景不太可控。

后面考虑调用OpenAI解题的时候,像xxx那样通过输出置信度来帮助判断答案的正确性 or 其他形式只要能保证LLM生成答案是可靠(程序判断)的。

目录

  • RAG知识库现状
  • 测评1
  • 初次测评结果
  • 分析与优化
  • 优化后测评
  • 测评2
  • 测评3

RAG知识库现状

想要一定程度避免解题内容为幻觉,必须依靠外部知识(RAG知识库)。

可以考虑构建Agent Workflow用于幻觉检查,只输出依靠RAG之后有依据一定正确的 答案和解析,不确定的输出如 “当前AI Agent 没有十足把握生成正确答案…” 而判断的依据就是根据RAG、web search的知识。

  • 测试数据量:RAG知识库使用ES的 qbm_rag_ques_knowledge,高中英语单选题型数据量184532。
  • 知识格式:【题干】xxx,【答案】:xxx,【解析】:xxx。

测评1

随机选取100道高中英语单选测试集,使用GPT-4o-mini模型

构建Agent Workflow,优化流程,优化提示词。

AI实践与学习8-AI Agent Workflow助力解题和验证答案置信度_Agent

初次测评结果

test-ai-answer-result-gpt4o-mini-check-hallucination.json 幻觉检查、答案评估输出 “AI Agent暂时没有十足的把握确定答案…” 的试题有31个。
通过幻觉检查、答案确定通过的输出答案的题69个,其中错误的4个

  • 2267372320546816
  • 2267372320530432
  • 2265225605718017
  • 2238952535252993

分析与优化

经过分析BAD CASE优化点

  • 优化知识库质量:知识库剔除不包含没有解析的试题 or 文档评分的时候调整提示词将该文档判断为不相关,重建courseId=28的知识库,总数据量196235,去除低质量知识后184532。
  • 优化流程结点:web search的内容也需要grade_documents 和 hallucination_grade,发现网络召回的内容还是会干扰,比如只是语意相关,会干扰解题,因此取消web search节点。
  • 重排序:取消莱文斯坦算法第二次重拍,因为不一定要求是题干相似的题。
  • 优化RAG召回:增加另外的召回思路,之前使用的是单独MLT,现在加入选项内容关键字搜索,如果MLT召回内容经过评分后不相关,就进行第二次关键字召回。

优化后的流程节点

1、取消web search节点:web search搜索大概率是语意相关的,召回试题的概率不是很大,语意相关的知识意义不大。

AI实践与学习8-AI Agent Workflow助力解题和验证答案置信度_解答试题_02

取消了web search 并修改为更严格的提示词,通过幻觉检查的数量急剧减少。

2、加另外一种关键字召回

AI实践与学习8-AI Agent Workflow助力解题和验证答案置信度_AIGC_03

3、优化无用流程:后发现如果召回的知识被判断为不相关,直接结束就行,不在generate生成答案解析,节省token和时间。

AI实践与学习8-AI Agent Workflow助力解题和验证答案置信度_人工智能_04

优化后再次测评

[test-ai-answer-result-gpt4o-mini-check-hallucination-without-websearch(4).json]

幻觉检查通过的13道试题,均解答正确

测评2

随机选取200道高中英语单选测试集,使用GPT-4o-mini模型

Agent workflow使用下面的

AI实践与学习8-AI Agent Workflow助力解题和验证答案置信度_AIGC_05

[test-ai-answer-result-gpt4o-mini-check-hallucination-without-websearch(5).json]

幻觉检查通过的18道试题,均解答正确

测评3

随机选取100道高中英语单选测试集,使用GPT-4o-mini模型

Agent workflow使用下面的

AI实践与学习8-AI Agent Workflow助力解题和验证答案置信度_AIGC_05


[test-ai-answer-result-gpt4o-mini-check-hallucination-without-websearch(6).json]

幻觉检查通过3道题,均解答正确。

Agent幻觉检查流程

以2270753096671232为例子,说明整个解题流程

当前节点 :retrieve,节点数据:

{
	"maxRetrieveCount": 2,
	"kpointIds": [42242, 42250],
	"questionId": "2270753096671232",
	"question": "Busy_with his new machines, the engineer had no time to make the new information_to his colleagues. A. experimenting; known B. to experiment; known C. to experiment; to be known D. experimenting; to be known",
	"typeId": "2803",
	"maxTransformQueryCount": 0,
	"maxWebSearchCount": 0,
	"courseId": 28,
	"maxHallucinationGraderCount": 2
}

部分Agent输出日志

--- 召回的知识----
省略
 ---决策:文件相关:
【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing;
---决策:存在文档与问题相关,准备生成,参考文档 documents : 
[【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing;【答案】D;【解析】devote…to..中 to是介词,后面接动名词 ]
- 当前试题:
 Busy_with his new machines, the engineer had no time to make the new information_to his colleagues. 
A. experimenting; known 
B. to experiment; known 
C. to experiment; to be known 
D. experimenting; to be known,
生成依据的上下文:
[【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing;【答案】D;【解析】devote…to..中 to是介词,后面接动名词]
- 生成一次答案:
【答案】:B;
【解析】:考查语法知识和词汇辨析。句意:忙于他的新机器,这位工程师没有时间将新信息告知他的同事们。
1. 选项A和D中的"experimenting"是现在分词形式,表示正在进行的动作,但句子中需要的是不定式形式"to experiment"来表示目的,因此A和D错误。
2. 选项C中的"to be known"是被动不定式形式,表示将来被动,但句子中需要的是已知的状态,因此C错误。
3. 选项B中的"to experiment"表示目的,"known"表示已知的状态,符合句意。
故选B。
【置信度】:95%

---检查幻觉---- 检查幻觉的结果,是否根据文档知识得出的结果 : 否
---决策:答案不以文档为基础,准备重新生成答案,剩余次数:2---
 - 当前试题:
 Busy_with his new machines, the engineer had no time to make the new information_to his colleagues. A. experimenting; known B. to experiment; known C. to experiment; to be known D. experimenting; to be known,
生成依据的上下文:
[【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing;【答案】D;【解析】devote…to..中 to是介词,后面接动名词]
- 生成一次答案:【答案】:A  
【解析】:考查语法知识和词汇辨析。句意:忙于他的新机器,这位工程师没有时间将新信息告知他的同事们。  
1. 选项A中的"experimenting"是现在分词,表示正在进行的动作,符合句意中的“忙于他的新机器”;"known"是过去分词,表示被动,符合句意中的“将新信息告知他的同事们”。  
2. 选项B中的"to experiment"是动词不定式,表示目的,不符合句意中的“忙于”;"known"是过去分词,符合句意。  
3. 选项C中的"to experiment"是动词不定式,表示目的,不符合句意中的“忙于”;"to be known"是动词不定式的被动形式,不符合句意中的“将新信息告知他的同事们”。  
4. 选项D中的"experimenting"是现在分词,符合句意中的“忙于”;"to be known"是动词不定式的被动形式,不符合句意中的“将新信息告知他的同事们”。  
故选A。  
【置信度】:95%

 ---检查幻觉---- 检查幻觉的结果,是否根据文档知识得出的结果 : 否
---决策:答案不以文档为基础,准备重新生成答案,剩余次数:1---
---生成结果---
准备生成一次答案:
GenerationTool.Arguments(question=Busy_with his new machines, the engineer had no time to make the new information_to his colleagues. A. experimenting; known B. to experiment; known C. to experiment; to be known D. experimenting; to be known, context=[【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing;【答案】D;【解析】devote…to..中 to是介词,后面接动名词], backQuestion=null)

 - 生成一次答案:【答案】:A  
【解析】:考查语法知识和词汇辨析。句意:忙于他的新机器,这位工程师没有时间将新信息告知他的同事们。  
1. 选项A中的"experimenting"是现在分词,表示正在进行的动作,符合句意"忙于他的新机器"。  
2. "known"是过去分词,表示被动含义,符合句意"将新信息告知他的同事们"。  
3. 选项B中的"to experiment"是动词不定式,不符合句意,因为句子需要表示正在进行的动作。  
4. 选项C中的"to be known"是动词不定式的被动形式,不符合句意,因为句子需要表示将新信息告知同事们的动作已经完成。  
5. 选项D中的"to be known"同样不符合句意,因为句子需要表示将新信息告知同事们的动作已经完成。  
故选A。  
【置信度】:95%

---检查幻觉---检查幻觉的结果,是否根据文档知识得出的结果 : 否
---决策:答案不以文档为基础,达到最大检查幻觉次数,准备进行答案评估---
- 当前节点序号:【4】,节点转移到:__END__

 - 当前第 75 题, costTime:31 s, answer:A , ai answer:AI Agent暂时没有十足的把握确定答案...
- 当前第 75 题,写入文件成功

结论与后续优化点

从目前来看,随机测试集400高中英语单选,通过幻觉检查的确定答案的是34道(大概10%)解答正确率100%,大量验证并进行下面优化之后,大概率可以直接将Agent投入解题生产。

测试使用的模型为GPT-4o-mini,本地测试单题解题时间区间大概[5-44]s

  • 提示词优化:目前初步调整提示词比较严格,后续可以大量测试下,调整优化提示词在提高答案通过幻觉检查的试题数量。
  • 召回率优化:目前拓展的第二个选择题选项关键词RAG召回仍需要优化,提高召回质量。
  • 幻觉检查优化:比如可以考虑使用 triger 给试题预测知识点(试题生产前的打标是否已经确定知识点?)然后提示词告诉大模型,用于检查生成的答案是否来自这些知识点。

[AI解题测评思路]