今天是2024年12月27日,星期五,北京,天气晴。
关于AI搜索,我们已经讲过多个工作了,如12个开源AI搜索引擎项目及关于Ai搜索的一些思考,https://mp.weixin.qq.com/s/IwfC87e2uWnVjuQmigl91w
并且专门有个关于AI搜索的主题,https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzAxMjc3MjkyMg==&action=getalbum&album_id=3343144609316749320
从源码侧和原理侧来理解AI搜索,总会有更多的思考,我们今天来看一个工作Level-Navi Agent,其工作挺有意思。
另一个,我们来看最近开源的prompt自动优化框架,PromptWizard,其中也是agent的思路,也可看看,github地址已经开源,大家反馈都不错。
关注技术,并关注应用落地,把技术学扎实,总会有更多的收获。
供各位参考,多思考,多总结,多实践;
一、Level-Navi Agent用于AI搜索场景
《Level-Navi Agent: A Framework and benchmark for Chinese Web Search Agents》(https://chinaxiv.org/user/view.htm?uuid=6cff63a4-fdbd-4ec4-9501-8d1d688c8272&filetype=pdf)的这个工作可以看看,其提出了一个Level-Navi Agent的网络搜索代理框架,并提供了一个新的中文网络搜索数据集Web24和一个新的评估指标,以评估大模型在执行中文任务时的性能。
看两个点:
一个是框架设计:
该框架包括Planner和SearchAgent两个主要组件。
Planner通过链式思维过程分解用户问题,并生成子问题列表。SearchAgent根据子问题进行在线搜索,收集信息并反馈给Planner。Planner根据反馈信息迭代地调整计划,直到收集到足够的信息来回答问题。
Planner通过链式思维过程逐步分解问题。首先,将用户问题添加到历史上下文中,然后通过链式思维过程生成子问题列表。Planner根据子问题列表并行搜索相关信息,并将搜索结果添加到上下文中。重复此过程,直到收集到足够的信息来回答问题。
SearchAgent根据子问题进行在线搜索,使用搜索引擎API返回网页摘要。Planner根据返回的摘要信息判断是否需要进一步打开相关网站。如果需要,SearchAgent会调用函数选择并打开相关网站,获取更多信息后总结并回答。
一个是数据集,Web24数据集包含了145个问题的详细信息,分为金融、游戏、体育、电影、事件五个领域,每个领域有23个问题。问题类型包括简单、条件、比较和多跳四种。所有问题和答案均来自中国互联网的新闻报道。
一个是评估指标,为了全面评估LLMs在网络搜索任务中的能力,采用了四个评分指标:正确性得分(Sco)、语义相似度得分(Ssimi)、相关性得分(Srele)和搜索次数(Sc)。最终得分为这四个指标加权和。
其中:
正确性得分(Sco)通过一个LLM评估器来评估生成的答案与真实答案的一致性和准确性,评分范围为0到1,比传统的F1分数更能反映模型回答的准确性;
语义相似度得分(Ssimi)使用嵌入模型直接计算文本向量的相似度,提供另一个角度评估模型回答的准确性,反映了模型执行网络搜索任务的综合能力;
相关性得分(Srele)基于LLM生成的回答,另一个评估LLM会生成多个推断问题,并计算这些推断问题与原始问题的语义相似度,取最大值作为最终得分,反映了模型对任务执行轨迹的忠实度和总结能力;
搜索次数(Sc)评估LLM理解和分解问题的能力,计算每个任务中Level-Info Agent被调用的次数,调用次数越少,表明LLM的分解能力越强,任务处理速度越快,成本越低。
最后看下其结论,随着模型参数规模的增加,性能提升的边际效应逐渐减弱,未来的研究应关注如何过滤和获取更高质量的信息源。
二、PromptWizard用于prompt自动优化
最近关于prompt有个进展,微软开发了PromptWizard(PW)《PROMPTWIZARD: TASK-AWARE PROMPT OPTIMIZATION FRAMEWORK》(https://arxiv.org/pdf/2405.18369),这是一个自动化和简化提示优化过程的研究框架,本质做的事情是,从初始提示指令和问题描述开始,使用LLMs生成变体并进行评分和批判。
如上图所示,PromptWizard的输入是用户输入,包括问题描述、初始提示指令和一些训练示;输出的是经过细化和优化的提示指令集合,以及精心策划的上下文少量示例。
分成两个阶段。
一个是提示指令的细化。这个阶段专注于细化提示的任务指令。PromptWizard生成多个候选指令,使用LLM的反馈进行评估,并迭代综合改进版本。
其中涉及到四个组件,变异组件(MutateComponent)使用预定义的认知启发式或思维风格生成提示变体,这些启发式指导LLM创建对问题的多样化视角,确保提示指令多样且丰富。例如,风格可能会鼓励提出“我如何简化问题?”或“存在哪些其他视角?”这样的问题。这种有针对性的变异生成与随机方法相比提高了提示指令的多样性。
可以看一个具体的例子:
一步步来看:
评分组件(ScoringComponen)评估生成变体的性能,选择最佳提示,评分基于每个提示在包含真实标签的5个训练样本的小批量上的表现,可以使用传统指标(如F1分数)或大模型作为评估器。
批判组件(CritiqueComponent)通过分析LLMs在处理困难案例时的表现,提供有针对性的反馈;
综合组件(SynthesizeComponent)根据批判反馈,重新表述和增强指令,生成更任务特定的优化提示。
每个模块对应的prompt集合如下:
一个是指令和示例的联合优化。从第一阶段获得的细化提示与精心挑选的示例结合,两者一起优化。通过批评和综合机制,PromptWizard确保提示和示例之间的一致性,同时综合新示例以增强任务性能。
最后来看执行效率,先看整个的调用次数:
根据其github(https://github.com/microsoft/PromptWizard)的建议,mutate_refine_iterations,mutation_rounds,refine_task_eg_iterations to be 3 or 5,与instinct,evprompt这些的性能对比如下:
感兴趣的可以去试试。
总结
本文主要讲了两个工作,分别围绕AI搜索以及prompt自动优化,两者都是agent的思想。
感兴趣的可以深入研究报告内容本身,很有趣。
参考文献
1、https://chinaxiv.org/user/view.htm?uuid=6cff63a4-fdbd-4ec4-9501-8d1d688c8272&filetype=pdf
2、https://arxiv.org/pdf/2405.18369
关于我们
老刘,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入