百万上下文RAG,Agent还能这么玩

在AI技术飞速发展的今天,我们见证了许多令人惊叹的突破。最近,Qwen2模型的开源引起了广泛的关注,它不仅展示了超越闭源模型的能力,还带来了一个全新的框架——Qwen-Agent

Qwen-Agent的设计思路虽然与LangChain相似,但其发布几个的Agent示例却很有意思。今天本文将深入探讨如何使用Qwen-Agent将上下文记忆扩展到百万量级,让Agent的智能得到更广泛的应用。

暴力关键字检索优于向量方案

在处理大规模文本数据时,一个关键的挑战是如何快速准确地定位到最相关的信息块。Qwen-Agent通过一种看似“暴力”的方法——,基于LLM判断相关性 AND 基于关键字检索,解决了这一难题。这种方法虽然简单,但在实际操作中却显示出了意想不到的效果。

关键字检索的基本原理

关键字检索是一种直接且高效的方法,尤其是在面对大规模文本数据时。通过预先定义的关键字,我们可以快速定位到包含这些关键字的文本块。这种方法的优势在于其速度和简单性,尤其是在处理大规模数据时。

实现关键字检索的步骤
  1. 预处理文本数据:将大规模文本数据分块。
  2. 基于LLM判断相关性:并行处理每个分块,让聊天模型评估其与用户查询的相关性, 如果相关则输出相关句子用于后续检索。

  1. 分析用户指令,提取关键字:通过LLM对用户指令进行两个方面的预处理。1.区分指令信息与非指令信息。2.从查询的信息部分推导出多语言关键词

  1. 最终检索:运用BM25这一传统的基于关键词的检索方法,找出与提取关键词最相关的块并生成最终答案,这一步骤的实现方式与通常的RAG相同。。
示例代码
from qwen_agent.agents import Assistant
from qwen_agent.gui import WebUI

def test():
    bot = Assistant(llm={'model': 'qwen-plus'})
    messages = [{'role': 'user', 'content': [{'text': '介绍图一'}, {'file': 'https://arxiv.org/pdf/1706.03762.pdf'}]}]
    for rsp in bot.run(messages):
        print(rsp)

def app_gui():
    # Define the agent
    bot = Assistant(llm={'model': 'qwen-plus'},
                    name='Assistant',
                    description='使用RAG检索并回答,支持文件类型:PDF/Word/PPT/TXT/HTML。')
    chatbot_config = {
        'prompt.suggestions': [
            {
                'text': '介绍图一'
            },
            {
                'text': '第二章第一句话是什么?'
            },
        ]
    }
    WebUI(bot, chatbot_config=chatbot_config).run()

if __name__ == '__main__':
    # test()
    app_gui()

实践案例

假设我们有一个包含100万字的维基百科语料库,其中包含了大量关于历史、科学、文化等方面的知识。现在,用户想要查询 爱因斯坦在1905年发表了什么重要的理论?用英语回答

传统的向量检索方法:

  1. 将整个维基百科语料库转换为向量表示,并存储在向量数据库中。
  2. 将用户查询转换为向量,并在向量数据库中进行相似度检索。
  3. 返回与用户查询向量最相似的文本块。

由于维基百科语料库包含了大量关于爱因斯坦的信息,传统的向量检索方法很可能会返回很多与用户查询不直接相关的文本块,例如爱因斯坦的生平介绍、其他科学家的理论等等,导致检索精度下降。

Qwen-Agent的关键字检索方法:

  1. 将维基百科语料库切分为多个小的文本块,每个文本块包含512字。
  2. 将用户问题通过LLM转换为检索关键字,例如“爱因斯坦”、“1905年”、“理论”。并区分检索信息与指令
{
"信息": ["爱因斯坦在1905年发表了什么重要的理论"], 
"指令": ["用英文回复"]
} 

3. 基于检索信息(爱因斯坦在1905年发表了什么重要的理论),并行过滤所有分块,查询相关性,并抽取相关语句。 4. 基于检索关键字(“爱因斯坦”、“1905年”、“理论”)检索分块。 5. 将匹配到的文本块输入到Qwen模型中,模型会根据这些文本块的内容推理出答案:“爱因斯坦在1905年发表了狭义相对论。”

通过这种方式,Qwen-Agent可以更精准地定位到与用户查询相关的文本块,避免了无关信息的干扰,提高了检索效率和答案的准确性。

检索之前先做推理,多跳问题又快又准

在基于文档的问题回答中,一个典型的挑战是多跳推理。多跳推理是指需要结合多个文档的信息才能回答用户问题的情况。例如,用户可能会问“《红楼梦》的作者是谁的粉丝?”,要回答这个问题,就需要先找到《红楼梦》的作者是曹雪芹,然后找到曹雪芹是哪个朝代的人,最后才能找到答案。

什么是多跳推理

多跳推理是指在回答一个问题时,需要跨越多个不同的文本块或信息源,逐步推理得到最终答案。这种方法能够提供更准确和全面的回答,但也增加了计算复杂度。

多跳推理的实现步骤
  1. 初步推理:首先将用户问题转化分解为逐级递进的子问题。
  2. 子问题检索:调用上述RAG的能力,进行问题检索与回答。
  3. 多跳推理:逐步在推理链上进行推理,得到最终答案。

实践案例

例如,考虑回答问题:“与第五交响曲创作于同一世纪的交通工具是什么?

  1. 首先将问题转化为子问题“贝多芬的第五交响曲是在哪个世纪创作的?“
  2. 通过RAG获取答案为:19世纪
  3. 提出新的子问题:“19世纪期间发明了什么交通工具?“
  4. 通过RAG获取答案为:自行车
  5. 最后推理出与第五交响曲创作于同一世纪的交通工具是自行车。

以用促训,Agent智能反哺模型

官方实验结果表明,4k-智能体在处理长上下文方面的表现优于32k-模型。这种分块阅读所有上下文的方式,使得Agent能够克服原生模型在长上下文训练上的不足。而Agent智能在使用过程中生产的数据,则能迭代用于后续长文本上下文的进一步微调。

智能反哺模型的实现步骤
  1. 智能体训练:通过与用户交互,训练智能体,使其能够处理复杂的上下文推理任务。
  2. 数据合成:利用智能体生成的数据,构建新的训练数据集。
  3. 模型微调:使用新生成的数据集对模型进行微调,提高模型在长上下文任务中的表现。

总结

通过本文的探讨,我们了解到Qwen-Agent如何通过智能体扩展模型的上下文记忆,以及如何利用这些智能体来提升模型的性能。这不仅为AI技术的发展提供了新的思路,也为我们在处理大规模文本数据时提供了有效的工具。希望这篇文章能为大家在实际应用中提供一些启发和帮助。


以上就是本文的全部内容,希望能够帮助新手程序员更好地理解Qwen-Agent的工作原理,并激发大家对AI技术更深层次的探索和思考。如果你对本文有任何疑问或建议,欢迎在评论区留言,我们一起讨论。

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值