如何利用RAG+Agent轻松解决企业复杂问题?

1.大模型的痛点

大模型技术席卷全球,为日常工作和生活带来便利,但也面临时效性、准确性等问题。如何提升大模型的性能?解决其挑战?构建高级应用?成为重要待解决问题。

RAG(检索增强生成) 技术通过信息检索和文本生成,显著提升了大模型的性能。但 RAG 也存在局限性,比如:数据依赖、检索效率等。如何解决这些痛点?如何进一步提升 RAG 性能?是本文剖析的重点。

2.RAG 的痛点

Naive RAG 通过检索和生成,提升大模型在问答、智能助手等任务上的性能。但 Naive RAG 难以处理复杂问题或大型文档集,举例如下:

简单问题:“特斯拉的主要风险因素是什么?” 和 “作者在 YC 期间做了什么?” 等问题,Naive RAG 可以给出准确答案。

复杂问题:“总结 XXX 公司年度报告”、“比较开发者 A 和 B 贡献” 或 “分析滴滴公司风险” 等问题,Naive RAG 可能无法提供满意结果。

针对复杂问题,我们需要探索更高级 RAG 解决方案。

3.From RAG to Agent

Naive RAG(基于检索的增强生成)应用主要是在整合自身知识库的基础上,提升大型模型的性能,以产出更精准、即时和丰富的行业内容或定制化信息。然而,这种应用仍限于内容生成的领域。若要人工智能像一位“目标导向”的高效工作者一样,自主选择多种工具,与不同系统互动合作,直至完成最终任务,那么我们就需要从 RAG 升级至 Agent 模式。

以下是 RAG 向 Agent 转变的描述:

从 RAG 到 Agent 的演进,并非完全摒弃 RAG,而是在其基础上拓展以下几层功能:

  1. 多轮对话能力:与用户进行更深层次的交流,准确把握用户需求。

  2. 查询/任务规划层:理解和规划复杂的查询与任务流程。

  3. 外部工具接口:利用外部工具来完成特定任务。

  4. 反思机制:对执行结果进行反思、总结和评估。

  5. 记忆功能:记录用户交互历史,以提供更加个性化的服务。

通过这些功能的增强,Agent 不仅能应对复杂任务,还能在多变的环境中灵活应对。与 RAG 相比,Agent更专注于完成特定任务,并更注重与现有系统的融合。它不仅理解语言,还能在现实世界或数字系统中采取行动。Agent 不仅能执行复杂的多步骤任务,比如;信息检索、数据处理,还能无缝接入各种系统和 API 接口,访问用户数据,与数据库互动。

人类之所以独特,很大程度上是因为我们会使用工具。同样,作为智能体的Agent 也能借助外部工具,处理更为复杂的任务。比如:Agent 能够利用图表生成工具制作在线图表,使用天气查询工具获取天气信息。因此,Agent 是真正释放大模型潜能的关键。

因此,我们的大模型应用也将从 RAG 迈向 Agent,可以说,Agent 是 RAG 发展的必然归宿。

4.案例剖析

最近,阿里巴巴千问团队成功开发了一款新型 Agent(智能体),该智能体整合了 RAG 技术,旨在解析包含数百万字词的文档。尽管它仅利用了 Qwen2 大模型的 8k 上下文窗口,但其性能表现却超越了传统的 RAG 模型和长序列原生模型。

Agent 构建流程如下:

该智能体的构建涉及三个级别,每一级都是基于前一级的构建:

级别一:检索

这一级别关注的是如何识别并提取与关键词最相关的文档片段,主要分为以下三个步骤:

步骤1:区分指令信息与非指令信息

用户输入示例:“请用2000字的篇幅详细说明,我的问题是,自行车是什么时候发明的?请用英文回答。”

信息分解:{“问题内容”: [“自行车是什么时候发明的”], “指令要求”: [“2000字详细说明”, “用英文回答”]}。

步骤2:多语言关键词推导

输入问题:“自行车是什么时候发明的”

信息转换:{“英文关键词”: [“bicycles”, “invention”, “timing”], “中文关键词”: [“自行车”, “发明”, “时间”]}。

步骤3:应用 BM25 关键词检索算法

通过 BM25 算法,对关键词进行高效的检索,以定位相关文档片段。

级别二:分块阅读

当相关文档片段与用户查询关键词的重叠度不足,可能导致这些片段在检索过程中被忽略,未能传递给大模型。为了解决这个问题,我们采用了以下策略:

步骤1:相关性评估

使用聊天模型对每个512字节的文档片段进行评估,判断其与用户查询的相关性。如果模型判断为不相关,则输出“无”;若判断为相关,则输出相关的句子。

步骤2:基于相关句子的检索

从步骤1中提取出的相关句子,将它们作为搜索查询词,利用BM25算法检索出与用户查询最相关的文档块。

步骤3:生成答案

根据检索到的上下文信息,生成最终的答案。

级别三:递进推理

面对多跳推理问题,比如:用户提问:“与贝多芬的第五交响曲创作于同一世纪的交通工具是什么?”大模型需要将问题分解为多个子问题来逐一解答:“贝多芬的第五交响曲是在哪个世纪创作的?”以及“自行车是在哪个世纪发明的?”

这一挑战可以通过以下步骤,利用工具调用(又称函数调用)智能体或 ReAct智能体来解决:

1. 向三级智能体(Lv3-Agent)提出原始问题。

2. 当三级智能体无法根据其现有记忆回答问题时,执行以下步骤:

a. 三级智能体生成一个新的子问题。

b. 三级智能体将这个子问题提交给二级智能体(Lv2-Agent)。

c. 将二级智能体的回答整合到三级智能体的记忆库中。

3. 重复上述过程,直到三级智能体能够回答原始问题。

4. 最终,三级智能体提供原始问题的解答。

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

在这里插入图片描述

根据提供的引用内容,可以得知prompt+RAG的流程如下: 1. 首先,使用Retriever部分在知识库中检索出top-k个匹配的文档zi。 2. 然后,将query和k个文档拼接起来作为QA的prompt,送入seq2seq模型。 3. seq2seq模型生成回复y。 4. 如果需要进行Re-rank,可以使用LLM来rerank,给LLM写好prompt即可。 下面是一个简单的示例代码,演示如何使用prompt+RAG: ```python from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration # 初始化tokenizer、retriever和seq2seq模型 tokenizer = RagTokenizer.from_pretrained('facebook/rag-token-base') retriever = RagRetriever.from_pretrained('facebook/rag-token-base', index_name='exact', use_dummy_dataset=True) model = RagSequenceForGeneration.from_pretrained('facebook/rag-token-base') # 设置query和context query = "What is the capital of France?" context = "France is a country located in Western Europe. Paris, the capital city of France, is known for its romantic ambiance and iconic landmarks such as the Eiffel Tower." # 使用Retriever部分检索top-k个匹配的文档 retrieved_docs = retriever(query) # 将query和k个文档拼接起来作为QA的prompt input_dict = tokenizer.prepare_seq2seq_batch(query, retrieved_docs[:2], return_tensors='pt') generated = model.generate(input_ids=input_dict['input_ids'], attention_mask=input_dict['attention_mask']) # 输出生成的回复 generated_text = tokenizer.batch_decode(generated, skip_special_tokens=True)[0] print(generated_text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值