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

2024-06-14 05:04
文章标签 agent 上下文 百万 rag

本文主要是介绍百万上下文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 WebUIdef 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%免费

这篇关于百万上下文RAG,Agent还能这么玩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1059452

相关文章

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

71-java 导致线程上下文切换的原因

Java中导致线程上下文切换的原因通常包括: 线程时间片用完:当前线程的时间片用完,操作系统将其暂停,并切换到另一个线程。 线程被优先级更高的线程抢占:操作系统根据线程优先级决定运行哪个线程。 线程进入等待状态:如线程执行了sleep(),wait(),join()等操作,使线程进入等待状态或阻塞状态,释放CPU。 线程占用CPU时间过长:如果线程执行了大量的I/O操作,而不是CPU计算

YOLOv8改进实战 | 注意力篇 | 引入CVPR2024 PKINet 上下文锚点注意力CAAttention

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8 是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成功的 YOLO 版本的基础上,并引入了新的功能和改进,以

Spring容器上下文

目录 一 什么是spring容器上下文 二 spring容器上下文可以做什么 三 如何使用 1.实现ApplicationContextAware接口 2.代码测试 一 什么是spring容器上下文 你可以把它理解成就是spring容器,它主要用于管理Bean对象,包括bean的生命周期,bean的注入等等。 二 spring容器上下文可以做什么 我们刚刚上面

我的第2个AI项目-RAG with Gemma hosted on HuggingFace and Weaviate in DSPy

目录 项目简介概述时间kaggle地址主要工作和收获技术栈数据集模型表现 未来项目说明思路和原则为什么不把现在的项目做深一点?博客风格转变 bug修复版本兼容问题 项目简介 概述 本项目简要介绍了如何使用 DSPy 构建一个简单的 RAG 管道,且利用了托管在 Hugging Face 上的 Gemma LLM模型 和 Weaviate 向量数据库。 时间 2024.09

AGENT时区问题

1、因agent的时区与machine时区不匹配导致启动agent失败,解决在安装检查时区的检查的警告问题 解决问题:在利用12c MOS推送方式安装12c agent时,会出现时区检查的warning,上面提示利用emctl resetTZ agent在安装后处理。在做的过程中,可能遇到某些状况的解决方法 环境:HP_UNIX B.11.31 --查看agent状态 $ ./emctl stat

计算机视觉中,什么是上下文信息(contextual information)?

在计算机视觉中,上下文信息(contextual information)是指一个像素或一个小区域周围的环境或背景信息,它帮助模型理解图像中对象的相对位置、大小、形状,以及与其他对象的关系。上下文信息在图像中提供了全局的语义和结构线索,使模型不仅依赖局部细节,而且能够考虑整个场景或图像的大局。 上下文信息的具体含义 局部与全局信息的结合: 局部信息:这是指某个小区域或某个像素点的特征。通过小

jmeter压力测试,通过LLM利用RAG实现知识库问答,NEO4J部署,GraphRAG以知识图谱在查询时增强提示实现更准确的知识库问答(9/7)

前言         这周也是杂七杂八的一天(高情商:我是一块砖,哪里需要往哪里搬),首先是接触了jemter这个压力测试工具,然后帮公司的AIGC项目编写使用手册和问答手册的第一版,并通过这个平台的智能体实现知识库问答的功能展示,以及部分个人扩展和思考(NEO4J创建知识图谱的GraphRAG)。 Jmeter         Jmeter是一个压力测试工具,一开始导师叫我熟悉的时候我还说

OpenAI ChatGPT企业版用户突破百万

🦉 AI新闻 🚀 OpenAI ChatGPT企业版用户突破百万 摘要:据彭博社报道,OpenAI的ChatGPT企业版已达到超过100万付费用户,涵盖ChatGPT Team、ChatGPT Enterprise及ChatGPT Edu等产品。尽管OpenAI不公布每个企业客户的平均用户数,但早前曾提及4月时有60万企业用户。企业用户主要集中在美国,德国、日本和英国也有显著使用。此外