AI知识梳理——RAG、Agent、ReAct、LangChain、LangGraph、MCP、Function Calling、JSON-RPC
AI技术I
AI技术II
RAG
📌 高度凝练表达
RAG (检索增强生成)是一种结合信息检索与生成式人工智能
的技术框架,旨在提升大型语言模型(LLM)的输出准确性和实用性
。通过在生成响应前引入外部知识库的信息
,RAG 使得模型能够访问训练数据之外的最新或特定领域的知识
,无需重新训练模型,从而在各种情境下保持相关性和准确性。
RAG (检索增强生成),生成响应前引
入外部知识库的信息
,使得模型能够访问训练数据之外的最新或特定领域的知识
,从而保证输出的准确性和实用性,减小虚幻。
RAG开卷考试(外部知识库),LLM闭卷(已经训练好的数据)
🔁 RAG 的主要流程
RAG 的工作流程通常包括以下三个关键阶段:
- 数据准备阶段:从各种数据源(如
PDF、数据库、网页
等)提取信息,并将其转换为纯文本格式
。然后将长文本划分为较小的片段
,以便于处理和检索。接着,使用嵌入模型(如 BERT、OpenAI Embedding 等)将文本片段转换为向量表示
,并将其存储在向量数据库
中,如 FAISS、Milvus、Qdrant 等。
数据准备:各类数据源->纯文本格式->较小片段->文本转向量->存储至向量数据库
- 检索与增强阶段:当用户提交查询时,RAG 系统将
查询转换为向量表示
,并在向量数据库中查找与查询
向量最相似的文本片段。然后,将检索到的相关文本片段与用户查询结合
,构建增强的提示(Prompt)
,为生成模型提供丰富的上下文信息。(NVIDIA 开发者)
检索与增强阶段
:查询转化为向量->数据库中查找->相关文本与用户查询相结合->构建增强的提示
- 生成阶段:将增强的
提示输入到大型语言模型中
,生成最终的回答或内容
。必要时,对生成的内容进行语法和语义上的优化,以提高可读性和准确性。
生成阶段:增强提示输入到大模型->生成最终的回答获内容
📊 RAG 流程图(Mermaid 格式)
以下是 RAG 的主要流程图,采用 Mermaid 语法表示:
RAG 技术广泛应用于智能问答系统
、企业知识管理
、法律和医疗文档分析等领域,特别适用于需要高准确性和实时更新的场景。
Agenet
Agent
是什么
- LLM:负责理解输入、推理并生成输出
- 记忆:存储和管理对话历史,实现上下文感知的交互
- 提示模板(Prompt Template):构建输入提示,引导 LLM 进行特定任务(也可理解为规划,根据提示动态规划路径)
- 工具:外部功能模块,如搜索引擎、API 接口、数据库查询等,Agent 可根据需要调用
- 执行器(Agent Executor):协调各组件的运行,管理整个任务的执行流程
🔁Agent架构流程图
-
接收输入:用户提交查询或命令。
-
生成提示:使用提示模板构建输入,引导 LLM 进行处理。
-
记忆知识库调用、匹配与检索🔍
-
推理决策:LLM 分析任务需求,决定是否需要调用外部工具。
-
执行操作:根据决策,调用相应的工具执行任务。
-
处理结果:LLM 处理工具返回的结果,判断是否完成任务,或需进一步操作。
-
返回输出:生成最终响应,返回给用户。
基于COZE平台搭建Agent示例
ReAct (推理+行动)
为什么要ReAct
LLM推理能力(例如,思路链提示)和行动能力(例如,行动计划生成)主要被作为独立的主题进行研究
。在本文中,我们探索如何使用 LLM 以交错的方式生成推理轨迹和特定于任务的操作
,从而实现两者之间的更大协同作用
:推理轨迹帮助模型归纳、跟踪和更新行动计划以及处理异常
;而操作则允许模型与外部来源(例如,知识库或环境)交互,以收集更多信息
。这种交替进行
的思考与行动流程
,使模型在处理多步推理或需要外部信息
的任务时,表现得更加灵活和高效。
🔁 ReAct 是什么
ReAct(Reasoning + Acting)
是一种结合了“推理”和“行动”的智能代理机制。它使大型语言模型(LLM)在处理复杂任务时,能够像人类一样,先进行思考,再采取行动
,从而提高响应的准确性和可靠性
🔁 ReAct 的工作流程
ReAct 代理通过以下循环步骤实现智能决策:
-
Thought(思考):模型分析当前问题,形成推理路径。
-
Action(行动):根据推理结果,选择并调用外部工具(如搜索引擎、计算器等)。
-
Observation(观察):获取工具返回的结果,作为新的信息输入。
-
循环迭代:重复上述步骤,直到得出最终答案。
✅ 使用 ReAct 的优势
-
增强推理能力:通过显式的思考步骤,提高模型的逻辑推理能力。
-
动态工具调用:根据任务需求,灵活选择并调用合适的外部工具。
-
减少幻觉现象:通过实际的工具反馈,降低模型生成虚假信息的风险。
-
提升可解释性:每一步的思考和行动都有迹可循,便于调试和优化。
Langchain
是什么
LangChain 是一个开源框架,旨在简化基于大型语言模型(LLM)的应用程序的开发。
核心组件
-
模型(Model):封装对 LLM 的调用,支持多种模型如 OpenAI、Anthropic、Hugging Face 等。
-
提示模板(Prompt Templates):用于构建和管理发送给 LLM 的输入提示,支持动态变量插值。
-
链(Chains):将多个组件组合成一个处理流程,实现复杂任务的自动化。
-
代理(Agents):具备决策能力的组件,能够根据任务动态选择链或工具执行。
-
记忆(Memory):用于存储和管理对话历史,实现上下文感知的交互。
-
工具(Tools):集成外部 API 或功能模块,如搜索引擎、计算器等,扩展 LLM 的能力。
🏗️ 核心架构
核心架构
LangChain 的架构设计强调模块化和可扩展性,主要包括:
-
组件层(Components):提供与 LLM 交互的基本构建块,如模型、提示模板等。
-
链层(Chains):将多个组件按特定逻辑组合,形成处理流程。
-
代理层(Agents):在链的基础上增加决策逻辑,根据任务动态选择执行路径。
-
集成层(Integrations):支持与外部数据源、工具和服务的集成,增强应用功能
架构流程图
LangGraph
LangGraph 是 LangChain 生态系统中的一个扩展库,旨在通过图结构(Graph)来构建复杂的、有状态的多角色 LLM 应用,适用于以下场景:
- 多轮对话代理和聊天机器人:处理复杂的对话流程,支持上下文管理和多轮交互。
- 多智能体协作系统:协调多个智能体共同完成任务,如信息检索、数据处理等。
- 任务规划和执行:实现任务的计划、执行、结果反馈和计划更新的完整流程。
- 复杂工作流管理:构建包含条件分支、循环和并行处理的复杂工作流程。
- 实时数据处理和分析:处理实时数据流,进行动态决策和响应。
LangGraph 通过状态图(StateGraph)和消息传递机制,实现了灵活的流程控制和状态管理,适合构建复杂的 AI 应用。
MCP
在前端开发面试中,向面试官简洁地介绍 MCP(Model Context Protocol,模型上下文协议)可以采用以下方式:
📌 什么是 MCP 协议?
MCP 是由 Anthropic 于 2024 年提出的一项开放标准,旨在为大型语言模型(LLM)提供一种标准化的方式
,以连接和交互外部数据源、工具和服务
。它被誉为 AI 系统的“USB-C 接口
”,使得不同的 AI 模型能够以统一的方式访问各种外部资源
,从而增强其功能和应用范围。
🧩 MCP 架构的核心组件
MCP 的架构基于客户端-服务器
模型,主要包含以下核心组件:
- MCP 主机(Host):运行 LLM 的应用程序,如
聊天机器人、IDE
等。 - MCP 客户端(Client):嵌入在主机中的连接器,负责与 MCP 服务器通信。
- MCP 服务器(Server):提供具体功能的服务端,暴露资源、提示模板和工具等能力。
- 本地数据源:如文件系统、数据库等,MCP 服务器可以访问这些资源以提供上下文信息。
这种模块化架构使得 AI 应用可以灵活地与多种外部资源集成,提升了系统的可扩展性和维护性。
🔄 MCP 协议支持的两种模式
MCP 协议支持以下两种通信模式:(维基百科)
- 请求-响应模式:类似传统的函数调用,LLM 发起请求,MCP 服务器返回结果。
- 持续会话模式:建立持久连接,允许 LLM 与 MCP 服务器之间进行多轮交互,适用于需要实时更新和复杂交互的场景。
这两种模式使得 MCP 能够适应不同复杂度的应用需求,从简单的数据查询到复杂的任务执行。
🔍 MCP 与 Function Calling 的区别
Function Calling的出现解决了模型无法与外部工具交互的问题,但各家的接口不统一,导致生态碎片化
。MCP协议作为标准化协议,实现了即插即用,解决了生态壁垒的问题
。
特性 | MCP 协议 | Function Calling | |
---|---|---|---|
通信模式 | 支持持续会话,适合复杂交互 | 单次请求-响应,适合简单调用 | |
集成复杂度 | 一次集成,多处复用,降低维护成本 | 每个功能需单独集成,维护成本高 | |
上下文管理 | 支持上下文信息的持续传递和更新 | 每次调用需重新提供上下文信息 | |
适用场景 | 多工具协同、实时数据访问、复杂任务执行 | 简单的数据查询或单一功能调用 | (维基百科) |
因此,在需要多轮交互、实时数据更新或多工具协同的复杂应用中,MCP 提供了更强的灵活性和扩展性。 (Medium)
⚙️ MCP 的工作流程
MCP 的典型工作流程如下:
- 初始化连接:LLM 通过 MCP 客户端与 MCP 服务器
建立连接
,进行能力协商。 - 能力发现:LLM 查询 MCP 服务器
可用的资源、工具和提示模板
。 - 请求执行:LLM
发起请求
,调用 MCP 服务器提供的功能。 - 结果返回:MCP 服务器
处理请求,返回结果
给 LLM。 - 上下文更新:LLM 根据返回结果更新
上下文信息
,准备下一步操作。(维基百科)
这种流程支持多轮交互和上下文的持续更新,适用于需要复杂逻辑和实时反馈的应用场景。 (维基百科)
JSON-RPC协议
JSON-RPC 2.0 作为其通信协议的基础,它使得 MCP 能够在大型语言模型(LLM)与外部工具或服务之间实现标准化、结构化的交互
相关文章:

AI知识梳理——RAG、Agent、ReAct、LangChain、LangGraph、MCP、Function Calling、JSON-RPC
AI技术I AI技术II RAG 📌 高度凝练表达 RAG (检索增强生成)是一种结合信息检索与生成式人工智能的技术框架,旨在提升大型语言模型(LLM)的输出准确性和实用性。通过在生成响应前引入外部知识库的信息&#…...
Vue组件通信方式及最佳实践
1. Props / 自定义事件 (父子通信) 使用场景 父子组件直接数据传递 代码实现 <!-- Parent.vue --> <template><Child :message"parentMsg" update"handleUpdate" /> </template><script setup> import { ref } from vue…...

【实用教程】如何快速搭建一套私有的埋点系统?
这篇教程将基于开源项目-ClkLog,教大家快速搭建一套自有的埋点系统,从0开始完成数据采集、分析与展示,全流程掌控用户行为数据。 ClkLog是一款支持私有化部署的全开源用户行为数据采集与分析系统,兼容Web、App、小程序多端埋点&am…...

深入解析 Uniswap:自动做市商模型的数学推导与智能合约架构
目录 1. 自动做市商(AMM)模型的数学推导1.1 恒定乘积公式推导1.2 价格影响与滑点 2. Uniswap 智能合约架构解析2.1 核心合约(Core)2.1.1 工厂合约(Factory)2.1.2 交易对合约(Pair) 2…...
spring配置并使用rabbitmq
本篇博客默认你已经成功安装了rabbitmq。如未安装,可参照官网https://www.rabbitmq.com/docs/platforms,选择对应平台进行安装 一、虚拟主机 虚拟主机的概念: 虚拟主机不是指vm虚拟机,而是指一个通过逻辑进行资源隔离和分区的机…...
Android开发——不同布局的定位属性 与 通用属性
目录 不同布局的定位属性1. 线性布局(LinearLayout)2. 相对布局(RelativeLayout)3. 约束布局(ConstraintLayout)4. 表格布局(TableLayout)5. 网格布局(GridLayout&#x…...

React 19版本refs也支持清理函数了。
文章目录 前言一、refs 支持清理函数二、案例演示1.useEffect写法2.React 19改进 的ref写法 总结 前言 React 19版本发布了ref支持清理函数了,这样就可以达到useEffect一样的效果了。为啥需要清理函数呢,这是因为节约内存。 清理事件监听(避…...
Python高效网络爬虫开发指南
Python 网络爬虫入门与实战 一、引言 随着互联网数据的爆炸性增长,获取和分析这些数据变得越来越重要。网络爬虫作为数据采集的重要工具,在这其中扮演了不可或缺的角色。 二、环境搭建 首先我们需要安装Python环境以及一些必要的库: req…...
Python爬虫实战:获取国家统计网最新消费数据并分析,为从业者做参考
一、系统定义与架构设计 1.1 系统定义 本系统基于 Python 爬虫技术构建,实现国家数据网消费数据的自动化获取、清洗、分析及可视化。通过定义标准化的数据采集流程、反爬策略、数据分析模型,为经济研究、行业分析等场景提供数据支持。 1.2 架构设计 数据采集层 --> 数据…...
Python中使用uv创建环境及原理详解
Python中使用uv创建环境及原理详解 摘要:本文详细介绍uv工具的功能、安装及使用方法,重点阐述如何利用uv创建和管理Python环境,并深入分析其工作原理。uv作为一款高性能的Python包和项目管理器,凭借其快速的依赖解析、内置虚拟环…...

阿尔泰科技助力电厂——520为爱发电!
当城市的霓虹在暮色中亮起,当千万个家庭在温暖中共享天伦,总有一群默默的 "光明守护者" 在幕后坚守 —— 它们是为城市输送能量的电厂,更是以科技赋能电力行业的阿尔泰科技。值此 520 爱意满满的日子,阿尔泰科技用硬核技…...
【Golang笔记02】函数、方法、泛型、接口学习笔记
Golang笔记02:函数、方法、泛型、接口学习笔记 一、进阶学习 1.1、函数 go中的函数使用func关键字进行定义,go程序的入口函数叫做:main,并且必须是属于main包里面。 1.1.1、定义函数 (1)普通函数 go中…...

C#语法篇 :基类子类转换,成员变化情况
在C#中,会有从子类对象到基类对象的转换,这属于C#中的向上扩容,一般可以默认转换。 方法的转换 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ex3._4 …...

【漫话机器学习系列】264.内距(又称四分位差)Interquartile Range
深入理解内距(Interquartile Range,IQR)——数据分析中的异常值利器 在日常的数据分析中,我们经常需要识别和处理异常值(Outliers),而内距(Interquartile Range,简称 IQR…...

海外盲盒系统开发:重构全球消费体验的科技引擎
当盲盒文化席卷全球,海外盲盒系统开发已成为重构消费体验的核心赛道。数据显示,2025年全球盲盒市场规模突破120亿,东南亚市场年增长率达4540。我们开发的海外盲盒系统,以技术创新为驱动,打造覆盖全链路的全球化解决方案…...

高噪声下扩展边缘检测算子对检测边缘的影响
目录 一、常见的边缘检测算子 二、扩展边缘检测算子对检测边缘的影响 三、结论 一、常见的边缘检测算子 Sobel 算子: Prewitt算子;...

vuejs处理后端返回数字类型精度丢失问题
标题问题描述 后端返回数据有5.00和3.30这种数据,但是前端展示的时候返回对应分别为5和3.0,小数点后0都丢失了。 接口返回数据展示network-Response: 接口返回数据展示network-Preview: 错误数据效果展示 发现问题 浏览器接口…...

mysql数据库-中间件MyCat
1. MyCat简介 在整个 IT 系统架构中,数据库是非常重要,通常又是访问压力较大的一个服务,除了在程序开发的本身做优化,如: SQL 语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分…...

手搓四人麻将程序
一、麻将牌的表示 在麻将游戏中,总共有一百四十四张牌,这些牌被分为多个类别,每个类别又包含了不同的牌型。具体来说,麻将牌主要包括序数牌、字牌和花牌三大类。序数牌中,包含有万子、条子和筒子,每种花色…...

PotPlayer 安装 madVR、LAV Filters 以提升解码能力和视频音频效果
PotPlayer自带的解码器并不是最好,如下两张截图都是出自 TOP GUN: Maverick 较暗、灰蒙蒙的一张,是安装插件之前明亮的一张,是安装插件之后 详细安装参考 https://www.bilibili.com/video/BV1UV5qzuE74?spm_id_from333.788.videopod.sectio…...
阿里云域名 绑定 华为云服务器ip
阿里云(万网)域名转入华为云域名图文教程 上-云社区-华为云 阿里云(万网)域名转入华为云域名图文教程-云社区-华为云 在阿里云备案了域名,解析到华为云服务器,不在同一个服务商这样可以使用么?…...
windows7安装node18
1、要安装windows系统更新 2、node下载:CNPM Binaries Mirror 3、下载zip安装包,解压后将目录添加至环境变量。 4、node -v检查是否成功安装。 5、npm install -g vite4.0.0...
Maven配置安装
(2025.1.27)最新版MAVEN的安装和配置教程(超详细)_maven安装-CSDN博客...
小刚说C语言刷题—1153 - 查找“支撑数”
1.题目描述 在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗? 输入 第一行为整数 m,表示输入的整数个数。࿰…...

Kind方式部署k8s单节点集群并创建nginx服务对外访问
资源要求 请准备好doker环境,尽量用比较新的版本。我的docker环境如下 docker 环境: Docker version 20.10.21, build 20.10.21-0ubuntu1~18.04.3 安装kind kind表现上就是一个二进制程序,下载对应版本并增加执行权限即可: cu…...

K个一组链表翻转
目录 1. 题意 2. 解题思路 3. 代码 1. 题意 给一个链表,按 k 进行翻转,也就是 k 2 ,两两进行翻转,如果不够2则不动。 2. 解题思路 首先思考怎么翻转一个链表,反转链表:https://leetcode.cn/problems…...

Python60日基础学习打卡D32
我们已经掌握了相当多的机器学习和python基础知识,现在面对一个全新的官方库,看看是否可以借助官方文档的写法了解其如何使用。 我们以pdpbox这个机器学习解释性库来介绍如何使用官方文档。 大多数 Python 库都会有官方文档,里面包含了函数…...

面向恶劣条件的道路交通目标检测----大创自用(当然你也可以在里面学到很多东西)
全部内容梳理 目标检测的两个任务: 预测标签 边界框 语义分割 实力分割 一个是类别 一个是实例级别 分类任务把每个图像当作一张图片看待 所有解决方法是先生成候选区域 再进行分类 置信度: 包括对类别和边界框预测的自信程度 输出分类和IOU分数的…...

基于Java(SSM)+MySQL实现(Web)具有智能推荐功能的图书销售系统
具有智能推荐功能的图书销售系统 1.绪论 1.1 背景、目的、意义 随着互联网的不断发展,电子商务逐渐代替传统的交易方式。各种类型的电子商务网站层出不穷,但细分之下电子商务网站主要分为 B2B,B2C,C2B,C2C 这四大类…...

浙大团队研发Earth Explorer系统,探索深时演化/地学剖面/科研场景,赋能深时地球科学研究
深时地球科学研究聚焦地球的漫长历史,探寻从数十亿年前到如今的地质演化过程,研究范畴广泛,涵盖了地球内部结构、物质组成、生命演化,以及地球与外部环境的相互作用等关键领域。近年来,地学可视化分析方法对多维时空交…...