当前位置:   article > 正文

万上下文RAG,Agent还能这么玩_qwen-agent rag

qwen-agent rag

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

img

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

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

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

关键字检索的基本原理

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

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

img

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

img

  1. 最终检索:运用BM25这一传统的基于关键词的检索方法,找出与提取关键词最相关的块并生成最终答案,这一步骤的实现方式与通常的RAG相同。。
示例代码
python复制代码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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
实践案例

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

传统的向量检索方法:

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

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

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

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

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

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

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

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

什么是多跳推理

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

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

img

实践案例

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

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

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

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

img

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

总结

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


以上就是本文的全部内容,希望能够帮助新手程序员更好地理解Qwen-Agent的工作原理,并激发大家对AI技术更深层次的探索和思考。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

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

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

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/915436
推荐阅读
相关标签
  

闽ICP备14008679号