【Agent,RAG,Transform】

Agent开发学习

agent

什么是agent

Agent 存在的最大意义就是帮助人类快速完成信息处理任务。我们把一些重复性的任

务交给 Agent,能极大的释放我们的生产力。

人类在人机交互上,其实是处于弱势方。你除了可以用鼠标,键盘对你的计算机下达

指令外,可能,你最多能做的事情,就是关闭电源了。Agent能够在一定意义上,改

变这些,能够更好的帮助我们解决信息获取的难题。

就像,在面对银行体系的时候,如果没有客户经理,很多业务,我们很难自己完成。

就像,在面对政法体系的时候,如果没有律师,很多案子,我们自己不知如何处理。

就像,在面对房屋买卖的时候,如果没有中介,我们就能少走很多弯路。"

说白了,我们需要一个人,能够在信息网络里,喂我花生,而这个人,就是Agent。

Agent的核心概念

  • 感知器 (Sensors)
    感知器是Agent获取环境信息的"眼睛"和"耳朵"。
  • 执行器 (Actuators)
    执行器是Agent影响环境的"手"和"脚"。
  • 决策引擎 (Decision Engine)
    决策引擎是Agent的"大脑",负责分析情况并制定行动计划。
  • 知识库 (Knowledge Base)
    知识库存储Agent的领域知识和经验。
  • 学习模块 (Learning Module)
    学习模块让Agent能够从经验中改进。

Agent生命周期

Agent的工作过程可以看作是一个持续的"感知-思考-行动-学习"循环:

感知阶段:收集环境信息和用户输入

理解阶段:分析情境,理解任务目标

规划阶段:制定行动计划和策略

执行阶段:按计划执行具体行动

评估阶段:检查结果,评估成效

学习阶段:总结经验,优化策略

决策机制详解

1.反应式决策

直接响应环境刺激

适用于简单、紧急情况

响应速度快,但缺乏深度思考

  1. 计划式决策

分析目标,制定详细计划

考虑多种可能性和约束条件

决策质量高,但需要更多时间

  1. 混合式决策

结合反应式和计划式的优点

根据情况选择合适的决策模式

平衡响应速度和决策质量

RAG

RAG(Retrieval Augmented Generation,检索增强生成)技术最初源于2020年Facebook的一篇论文------《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》。

通常,预训练模型(pre-trained models)的知识是存储在参数中的,因此模型无法了解训练集之外的知识(例如搜索数据、行业知识)。之前的做法是通过在预训练模型上进行微调(fine-tuning)来更新模型的知识。

这样的方式会有几个问题:

每当有新的知识时,模型都需要重新进行微调。训练模型的成本是很高。

所有AI模型的底层原理都基于数学概率,大模型也不例外。因此,有时模型在缺乏某方面知识时,可能会生成不准确的内容(即"幻觉")。而识别这些幻觉问题对于用户来说是相当困难的,因为这需要用户具备相应领域的知识。

对于企业而言,数据安全至关重要。没有企业愿意承担数据泄露的风险,将其私域数据上传到第三方平台进行训练。因此,完全依赖通用大模型能力的应用方案在数据安全与效果之间存在权衡。

为了解决这些问题,这篇论文提出了RAG的方法。既然预训练模型能够理解新知识,那么我们可以通过提示(prompt)的方式将新知识直接提供给模型。

详解RAG

RAG(Retrieval Augmented Generation,检索增强生成)是一种将大规模语言模型(LLM)与外部知识源的检索相结合,以改进问答能力的工程框架。它使用来自私有或专有数据源的信息来辅助文本生成,从而弥补LLM的局限性,特别是在解决幻觉问题和提升时效性方面。

原始 RAG 的流程包括索引、检索和生成三个步骤,既把问答内容输入到数据库中,给定query,可以直接去数据库中搜索,搜索完成后把查询结果和query拼接起来送给模型去生成内容。

RAG与模型微调的对比:
微调 RAG
针对特定任务调整预训练模型。优点是可针对特定任务优化; 结合检索系统和生成模型。优点是能利用最新信息,提高答案质量,具有更好的可解释性和适应性:
但缺点是更新成本高,对新信息适应性较差; 是可能面临检索质量问题和曾加额外计算资源需求;
索引

索引指的是在离线状态下,从数据来源处获取数据并建立索引的过程。具体而言,构建数据索引包括四个步骤:数据加载 、文本分块 、文本嵌入、创建索引。

  • 数据加载

数据加载是指将外部数据进行清理和提取,将CSV、 PDF、HTML、Word、Markdown 等不同格式的文件转换成纯文本,这里可以借助LangChain内置的加载器来实现。LangChain内置的加载器是LangChain中最有用的部分之一,例如加载CSV的CSVLoader,加载PDF的PyPDFLoader,加载HTML的UnstructuredHTMLLoader,加载Word的:UnstructuredWordDocumentLoader,加载MarkDown的:UnstructuredMarkdownLoader等

  • 文本分块
       为什么需要对文本进行分块?**一方面Transformer模型有固定的输入序列长度,即使输入context很大,一个句子或几个句子的向量也比几页文本的平均向量更好地代表它们的语义含义,另一方面,我们将文档分割成适合搜索的小块,使其更适合进行嵌入搜索,从而提升片段召回的准确性。

另外,分块的大小是一个需要考虑的重要参数,如果文本分块太大,则无法很好地匹配查询,如果太小,则没有足够的有用上下文来生成答案。

  • 文本嵌入(embedding)
       嵌入也叫向量化,就是将文本内容通过embedding嵌入模型转化为多维向量的过程。虽然计算机并不能理解自然语言,但是借助LLM 技术的一个关键部分是翻译器,它可以从人类文字语言翻译成人工智能数字语言。我们称这种翻译机为 "嵌入机(embedding machine)",它输入人类语言,输出人工智能理解的数字语言。
  • 创建索引
       完成嵌入之后,下一步是创建索引,将原始语料块和嵌入以键值对形式存储,以便于未来进行快速且频繁的搜索。使用专业的向量数据库进行存储向量数据,常用的向量数据库有:Chroma、Weaviate、 FAISS、ES等
检索

数据检索是RAG框架中的重要组成部分,目标是根据用户的查询,快速检索到与之最相关的知识,并将其融入提示(Prompt)中。这个过程一般分两步:

根据用户的输入,采用与索引创建相同的编码模型将查询内容转换为向量。

系统会计算问题向量与语料库中文档块向量之间的相似性,并根据相似度水平选出最相关的前 K 个文档块作为当前问题的补充背景信息。

为了检索出最相关的前K个文档,有多种检索方法,最简单的方式,直接通过上面创建的向量数据库来实现,向量数据库都根据数据是高维向量这一特性,在存储、索引、检索方面都做了大量的优化。

当然为了提高检索的召回率,通常会选择多种检索方法结合使用。例如使用:分层索引检索、混合检索、HyDE方案等。

生成

生成是指将用户的问题与知识库被检索出的文本块相结合, 用prompt的形式传递给大语言模型的上下文,使大模型更好理解用户意图,生成用户想要的结果

Transformer

什么是Transformer

ransformer 是一种基于自注意力机制(Self-Attention)的深度神经网络 架构,由 Google Brain 团队在 2017 年发表的论文《Attention is All You Need》中首次提出。它彻底摒弃了传统的循环神经网络(RNN)结构,不再依赖序列的顺序处理,而是通过并行计算建模输入序列中任意两个元素之间的全局依赖关系 ,解决了序列建模中的长期依赖与并行计算难题。

Transformer的核心机制

(1)自注意力机制:每个词在生成新表示时,能够同时关注句中所有其他词,并根据语义相关性动态分配权重。这种机制允许模型捕捉全局依赖关系,解决了传统循环神经网络中的长期依赖问题。

(2)多头注意力(Multi-Head Attention):通过并行使用多个注意力头,从不同的子空间学习多样化的语义和句法特征。每个注意力头专注于不同的信息维度,增强了模型的表达能力和鲁棒性。

(3)位置编码(Positional Encoding):由于自注意力机制对顺序不敏感,位置编码通过正弦和余弦函数为输入注入位置信息,使模型能够区分不同顺序的相同词汇组合。这种方法不仅提供了绝对位置信息,还保留了相对位置的学习能力。

(4)编码器-解码器架构:编码器负责理解输入序列,通过堆叠多层包含多头注意力和前馈神经网络的模块,并结合残差连接和层归一化来稳定训练过程。解码器则用于自回归生成输出序列,它不仅包含与编码器类似的结构,还额外引入了掩码多头注意力机制以防止"偷看"未来信息。两者协同工作,实现了从输入到输出的高效转换。

Transformer 的灵魂:自注意力机制(Self-Attention)

自注意力机制的核心在于,它允许序列中的每一个元素(例如一个词)在生成其新表示时,能够直接、动态地与其他所有元素进行交互,并根据语义相关性分配不同的关注权重。

想象你去图书馆找资料。为了自动化这个过程,需要三个要素:

Query (查询):你手里的便利贴,写着你想找的需求(例如:"我要找量子物理的书")。

Key (索引/标签):书脊上的分类标签(例如:"物理"、"历史"、"烹饪")。

Value (内容):书里真正的知识内容。

自注意力的运作流程: 拿着你的 Query,去和每一本书的 Key 比对。

如果匹配度高(相关性强),你就把那本书的 Value(内容)多读一点(高权重)。

如果匹配度低(不相关),你就忽略它(低权重)。

相关推荐
ken22323 小时前
linux OS : apt update 使用代理与环境变量
linux
last demo3 小时前
docker存储
运维·docker·容器
小义_3 小时前
随笔 1(Linux)
linux·运维·服务器·网络·云原生·红帽
Larry_Yanan3 小时前
Qt网络开发之基于 QWebEngine 实现简易内嵌浏览器
linux·开发语言·网络·c++·笔记·qt·学习
AI+程序员在路上4 小时前
CAN 总线与 Linux SocketCAN C 语言测试程序
linux·c语言·网络
Predestination王瀞潞4 小时前
4.3.3 存储->微软文件系统标准(微软,自有技术标准):VFAT(Virtual File Allocation Table)虚拟文件分配表系统
linux·microsoft·vfat
HalvmånEver4 小时前
Linux:socket套接字编程的基础概念
linux·运维·服务器
二进制person5 小时前
JavaEE初阶 --网络初识
运维·服务器·网络
IMPYLH5 小时前
Linux 的 cp 命令
linux·运维·服务器