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

news2024/12/31 6:47:01

在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年”、“理论”。并区分检索信息与指令

在这里插入图片描述

  1. 基于检索信息(爱因斯坦在1905年发表了什么重要的理论),并行过滤所有分块,查询相关性,并抽取相关语句。
  2. 基于检索关键字(“爱因斯坦”、“1905年”、“理论”)检索分块。
  3. 将匹配到的文本块输入到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技术的发展提供了新的思路,也为我们在处理大规模文本数据时提供了有效的工具。希望这篇文章能为大家在实际应用中提供一些启发和帮助。

如何学习大模型 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%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1820790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【光伏科普】走近户用光伏

随着全球对可再生能源和环境保护的日益重视,光伏技术作为一种清洁、可再生的能源形式,受到了广泛的关注和应用。在光伏领域中,户用光伏(也称为家庭光伏或屋顶光伏)因其灵活性和便捷性,逐渐成为普通家庭实现…

nginx配置https协议(测试环境)

第一步申请证书 首先申请证书这一步,晚上有很多种方式实现,可以自己用算法实现,也可以找在线生成的网站,我这里使用了在线网站 https://www.toolhelper.cn/SSL/SSLGenerate 第二步将证书放到对应的目录下 这里我们主要用cert.pe…

Vue 简单自定义标签

Vue 简单自定义标签 思路&#xff1a; 1、计算每个项离父级左侧宽 left 2、计算当前滑块的宽&#xff0c;绝对定位 3、下一个项的宽/2-滑块的宽/2下一项离父级左侧的宽 left 4、使用定位left&#xff08;性能较差一点&#xff09; 或 translate 移动距离 <template><…

记录pytest中场景执行的token异常处理问题

前言中写了一个conftest钩子函数用于处理重复调用token的方法&#xff0c;http://t.csdnimg.cn/N4rCK&#xff0c;每个用例单独执行都很正常&#xff0c;但是批量执行时一直报错&#xff0c;token缓存处理也不生效。 所有的用例都报获取不到token&#xff0c;方法改了又改&…

一带一路情 相逢《中国缘》-诗琳探访湘西墨戎苗寨交流有感

一带一路情 相逢《中国缘》 诗琳探访湘西墨戎苗寨交流有感 5月21日至25日&#xff0c;《中国缘》栏目组组织的走进湘西苗疆边陲的文化交流活动&#xff0c;在群山环抱、绿树成荫、人文厚重的湘西古丈墨戎苗寨美丽绽放。这场以民间角度推演的中国和中亚人民的文化交流活动&am…

动态规划思想-01背包图解案例

动态规划介绍 动态规划基本思想 ​ 动态规划将一个问题分解为若干个互相重叠的子问题&#xff0c;并通过存储子问题的解来避免重复计算&#xff0c;从而大幅提升时间效率。 ​ 跟分治有些类似&#xff08;“分”与“合”体现在 状态转移方程&#xff09;&#xff0c;但是通常…

区别五大数据可视化工具,有这一篇就够了

进入企业数字化时代&#xff0c;数据可视化工具的重要性被越来越多企业看到。这些企业都希望在短时间内找到适合自己的数据可视化工具。以下是针对帆软BI、奥威BI、思迈特BI&#xff08;Smartbi&#xff09;、永洪BI和亿信华辰BI的详细介绍&#xff0c;希望能帮助用户企业快速筛…

大语言模型 (LLM) 红队测试:提前解决模型漏洞

大型语言模型 (LLM) 的兴起具有变革性&#xff0c;以其在自然语言处理和生成方面具有与人类相似的卓越能力&#xff0c;展现出巨大的潜力。然而&#xff0c;LLM 也被发现存在偏见、提供错误信息或幻觉、生成有害内容&#xff0c;甚至进行欺骗行为的情况。一些备受关注的事件包括…

FL Studio 21.2.2.3914 Win绿色版内置破解补丁和汉化文件,可以完美激活软件

Image-Line FL Studio 21.2.2 x64是一款极受欢迎的音乐制作软件&#xff0c;被广泛用于专业的音乐制作和音频编辑。作为FL Studio系列的最新版本&#xff0c;它在音乐制作界中因其强大的功能、灵活的工作流程和用户友好的界面而备受推崇。 PS.本次为你带来的是fl studio21破解版…

短视频压缩与编码技术在短剧APP小程序开发中的应用:技术选择与工具推荐

在短剧APP小程序开发中&#xff0c;选择合适的短视频压缩与编码技术及工具对于实现高效的视频处理至关重要。本文将探讨如何选择合适的技术和工具&#xff0c;以及推荐一些在实际开发中常用的解决方案。 技术选择的原则 平衡压缩率与视频质量&#xff1a;在选择压缩技术时&…

基于云效 AppStack,5 分钟搞定一个 AI 应用的开发和部署

实验介绍 区别于传统的流水线工具&#xff0c;本实验将带你体验云效应用交付平台 AppStack&#xff0c;从应用视角&#xff0c;完成一个 AI 聊天应用的高效交付。 你将体验到&#xff1a; 基于应用模板快速初始化应用&#xff0c;包含应用的代码库、部署编排架构、变量组、环…

京准电钟 NTP时间同步服务器助力水库水坝水利自动化建设

京准电钟 NTP时间同步服务器助力水库水坝水利自动化建设 京准电钟 NTP时间同步服务器助力水库水坝水利自动化建设 水库大坝监测系统主要包括渗流监测系统、流量监测系统、雨量监测系统、沉降监测系统组成。每一个监测系统由监测仪器及自动化数据采集装置&#xff08;内置通信装…

virtualbox扩展磁盘

使用virtualbox搭建虚拟机&#xff0c;如果磁盘不够用了&#xff0c;可以通过以下方式扩展。 扩容磁盘 分区扩展 查看磁盘情况 fdisk -l Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units sectors of 1 * 512 512 bytes Sector size (logical/phys…

HAL库--内存保护(MPU)实验

MPU是内核外设&#xff0c;想获取相关资料只能从内核手册查找 MPU功能仅F7/H7系列具备 内存保护单元(MPU介绍) MPU基本介绍 说白了MPU用来管理内存和外设存储区的访问权限 MPU可配置保护8/16个内存区域(看芯片型号)&#xff0c;每个区域最小要求256字节&#xff0c;且每个区…

【启明智显分享】个位数价格工业HMI芯片:720P@60fps,配备2D加速

我们生活在一个“屏”的时代&#xff0c;工业自动化、智能生活的实现都离不开屏幕的帮助&#xff0c;而对于消费者而言&#xff0c;最大的痛点就是显示屏的画质&#xff0c;一个优质的人机交互界面影响着用户体验&#xff0c;流畅清晰的图像呈现与屏幕的分辨率、刷新率都息息相…

Spring-Cloud-Gateway--源码分析及应用

文章目录 一、简介1.1 术语 1.3 特性1.4 Spring Cloud Gateway与Spring Cloud ZuulSpring Cloud ZuulWebflux模型 1.5 如何集成Gateway 二、工作原理2.2 Gateway类图 三、配置路由谓词工厂和网关过滤工厂3.1 两种不同的配置路由方式通过yml文件来配置通过Java Bean来配置 3.2 R…

vue生命周期及组件讲解(如何导入引用外部vue文件,以及注册全局变量,自定义标签效果)

生命周期钩子的理解与应用 函数说明onBeforeMount( )组件挂载前onMounted( )组件挂载后onBeforeUpdate( )组件更新前onUpdated( )组件中任意的DOM元素更新后onBeforeUnmount( )组件实例被销毁前onUnmounted( )组件实例被销毁后 生命周期在 各类应用以及网站中使用非常广泛&…

Running Gradle task ‘assembleDebug‘ Flutter项目

基于Android方面运行Flutter项目一直卡在 Launching lib\main.dart on Android SDK built for x86 in debug mode… Running Gradle task ‘assembleDebug’… 基础原因&#xff1a; 默认存放Gradle插件包的Maven仓库是国外(需VPN) 我的原因&#xff1a; 缺少JDK和缺少Androi…

Python 俄罗斯方块小游戏【含Python源码 MX_007期】

系统简介&#xff1a; 俄罗斯方块是一款经典的俄罗斯益智游戏&#xff0c;由苏联工程师阿列克谢帕基特诺夫&#xff08;Alexey Pajitnov&#xff09;于1984年创建。在游戏中&#xff0c;玩家需要操纵不同形状的方块&#xff0c;以水平移动和旋转的方式&#xff0c;使它们在屏幕…

【论文阅读】-- 时态合并树状图:时态标量数据的基于拓扑的静态可视化

时态合并树状图&#xff1a;时态标量数据的基于拓扑的静态可视化 摘要1 引言2 相关工作及背景介绍2.1 增广合并树2.2 (增强)合并树的可视化与跟踪2.3 特征跟踪2.4 数据线性化 3 时间合并树状图3.1 映射单个时间步长&#xff1a; R d → R R^d \rightarrow R Rd→R3.2 映射所有时…