智能体通信协议
如何让智能体与外部世界高效交互?如何让多个智能体相互协作?这就需要使用到智能体通信协议了。 目前主要有三种通信协议,这三种协议共同构成了智能体通信的基础设施层。 MCP(Model Context Protocol)用于智能体与工具的标准化通信; A2A(Agent-to-Agent Protocol)用于智能体间的点对点协作; ANP(Agent Network Protocol)用于构建大规模智能体网络。 设计理念比较智能体通信协议并非单一的解决方案,而是针对不同通信场景设计的一系列标准。在本章以目前业界主流的三种协议 MCP、A2A 和 ANP 为例进行实践,下面是一个总览的比较。 (1)MCP:智能体与工具的桥梁 MCP(Model Context Protocol)由 Anthropic 团队提出[1],其核心设计理念是标准化智能体与外部工具/资源的通信方式。想象一下,你的智能体需要访问文件系统、数据库、GitHub、Slack 等各种服务。传统做法是为每个服务编写专门的适配器,这不仅工作量大,而且难以维护。MCP 通过定义统一的协议规范,让所有服务都能以...
FastAPI学习
常见项目结构12345678910111213141516fastapi-project/├── app│ ├── main.py # 项目全局入口│ ├── core # 核心配置模块│ │ ├── config.py # 全局配置、环境变量读取│ │ └── security.py # JWT令牌、密码加密│ ├── api # 路由控制层│ │ └── v1│ │ └── user.py # 用户相关接口│ ├── schemas # Pydantic数据校验、序列化层│ ├── crud # 业务逻辑层│ ├── models # ORM数据库模型层│ ├── db # 数据库连接层│ └── ut...
RAG-检索优化
混合检索混合检索(Hybrid Search)是一种结合了 稀疏向量(Sparse Vectors) 和 密集向量(Dense Vectors) 优势的先进搜索技术。旨在同时利用稀疏向量的关键词精确匹配能力和密集向量的语义理解能力,以克服单一向量检索的局限性,从而在各种搜索场景下提供更准确、更鲁棒的检索结果。 稀疏向量稀疏向量,也常被称为“词法向量”,是基于词频统计的传统信息检索方法的数学表示。它通常是一个维度极高(与词汇表大小相当)但绝大多数元素为零的向量。它采用精准的“词袋”匹配模型,将文档视为一堆词的集合,不考虑其顺序和语法,其中向量的每一个维度都直接对应一个具体的词,非零值则代表该词在文档中的重要性(权重)。这类向量的经典权重计算方法是 TF-IDF。在信息检索领域,BM25 则是基于这种稀疏表示的成功且应用广泛的排序算法之一,其核心公式如下: $$Score(Q,D)=\sum_{i=1}^n IDF(q_i)\cdot\frac{f(q_i,D)+k_1⋅(1−b+b\cdot\frac{avgdl}{∣D∣})}{f(q_i,D)\cdot(k_...
RAG-系统评估
RAG评估构建好一个RAG系统后,应该如何评判这个系统的好坏?如何快速定位问题根源? 典型失败模式 检索器问题:检索结果与需求不相关(检索了完全不相关的文档或数据)、遗漏关键信息(Top-K没有包揽核心论点)、刻舟求剑(返回了历史过期版本的信息) 生成器问题:忽略正确的检索上下文信息、脱离上下文,产生知识幻觉、答非所问(回答形式或语气不符合要求) 协同问题:检索正确但被LLM歪曲理解、检索到错误信息LLm无法调和 评估维度该架构包含以下三个维度,并在 TruLens 等工具中有深入的应用: (1)上下文相关性 (Context Relevance) 即检索层评估(Retrieval Layer Evaluation),核心指标有召回率、精度、平均倒数排名(MRR)、归一化折损累积增益(NDCG)、Hit Rate@K等,评估重点为检索器能否准确找到相关文档并正确排序。 评估目标: 检索器(Retriever)的性能。 核心问题: 检索到的上下文内容,是否与用户的查询(Query)高度相关? 重要性: 检索是RAG应用在响应用户查询时的第一步。如果检索回来的上下文充满了噪声或无...
RAG-索引构建
向量嵌入基础概念什么是 Embedding向量嵌入(Embedding)是一种将真实世界中复杂、高维的数据对象(如文本、图像、音频、视频等)转换为数学上易于处理的、低维、稠密的连续数值向量的技术。 想象一下,我们将每一个词、每一段话、每一张图片都放在一个巨大的多维空间里,并给它一个独一无二的坐标。这个坐标就是一个向量,它“嵌入”了原始数据的所有关键信息。这个过程,就是 Embedding。 数据对象:任何信息,如文本“你好世界”,或一张猫的图片。 Embedding 模型:一个深度学习模型,负责接收数据对象并进行转换。 输出向量:一个固定长度的一维数组,例如 [0.16, 0.29, -0.88, ...]。这个向量的维度(长度)通常在几百到几千之间。 向量空间的语义表示Embedding 的真正意义在于,它产生的向量不是随机数值的堆砌,而是对数据语义的数学编码。 核心原则:在 Embedding 构建的向量空间中,语义上相似的对象,其对应的向量在空间中的距离会更近;而语义上不相关的对象,它们的向量距离会更远。 关键度量:我们通常使用以下数学方法来衡量向量间的“距离”或“...
RAG学习-文本分块
技术原理主要分为检索、生成两个阶段 (1)检索阶段:寻找“非参数化知识” 知识向量化:嵌入模型(Embedding Model) 充当了“连接器”的角色。它将外部知识库编码为向量索引(Index),存入向量数据库。 语义召回:当用户发起查询时,检索模块利用同样的嵌入模型将问题向量化,并通过相似度搜索(Similarity Search),从海量数据中精准锁定与问题最相关的文档片段。 (2)生成阶段:融合两种知识 上下文整合:生成模块接收检索阶段送来的相关文档片段以及用户的原始问题。 指令引导生成:该模块会遵循预设的 Prompt 指令,将上下文与问题有效整合,并引导 LLM(如 DeepSeek)进行可控的、有理有据的文本生成。 技术演进大致分为原生RAG、高级RAG、模块化RAG三个阶段。 具体对比如下表: 初级 RAG(Naive RAG) 高级 RAG(Advanced RAG) 模块化 RAG(Modular RAG) 流程 离线: 索引 在线: 检索 → 生成 离线: 索引 在线: ...→ 检索前 → ... → 检索后 → ... 积木式可...
操作系统学习笔记
基础概念什么是操作系统操作系统(Operating System),是介于硬件资源和应用程序之间的一个系统软件 ,能控制和管理整个计算机系统的硬件和软件资源,调度计算机的工作与资源的分配,进而为用户和其他软件提供服务,操作系统是计算机系统中最基本的系统软件。 如果将它理解为“掌控计算机的系统”是否更能精确的描述OS所做的事情呢? 如果要更深入的掌握这个问题,可以问一问:如果没有了操作系统,你使用的PC机还能干什么?或者说,你能够使用你的PC机做什么呢? 操作系统的特征: 并发:并发指的是两个或多个事件在同一时间间隔内发生,计算机系统中同时存在多个运行的程序,因此具有处理和调度多个程序同时执行的能力。 ⚠️注意:并行和并发的区别:并发指的是同一时间间隔,并行指的是同一时刻。 共享:系统中的资源可以供内存中多个并发执行的进程共同使用。 互斥共享:一段时间内只允许一个进程访问该资源。一段时间内只允许一个进程访问的资源称为临界资源。 同时访问:一段时间内允许多个进程“同时”访问,“同时”通常是宏观的,实际上是交替的对该资源进行访问。 虚拟:把一个物理上的实体变为若干逻辑上的对...
视频剪辑基础
达芬奇第一课1. 视频剪辑基础知识1.1 数字视频信号标清:720p以下 高清:720p-1080p,宽高比为16:9 超高清:4k分辨率(3840*2160px)或者8k分辨率(7680*4320px) 帧速率(单位fps):每秒显示的图片数量,大于10fps可以在视觉上造成平滑的动画。 1.2 场与场序PAL制:每帧625行扫描 每秒25帧 NTSC制:每帧525行扫描 每秒30帧 分离场:解决交错视频场的最佳方案(在对素材进行如变速、缩放、旋转等时有很好效果,未进行场分离会使画面有严重抖动、毛刺效果) 1.3 时间代码国际标准称为SMPTE时间代码,简称时码,表示为h : m : s : f 1.4 帧长比帧的长度和宽度的比例。 1.5 像素长宽比像素的长度和宽度的比例。PAL制视频采用矩形像素,一帧图像由720*576像素组成。其像素长宽比为1.067.方形像素的像素长宽比为1,剪辑软件可调整像素长宽比。 1.6 颜色模式颜色模式即翻译颜色的方法。视频领域常用RGB模式、Lab模式、HSB模式、YUV模式。 PAL制采用YUV模式,NSTC制采用HSB模式 1.7 颜色深...
Git学习
工作流程 工作区(Working Directory) 实际修改文件的地方,即本地工作目录 暂存区 文件修改完成后,暂时存放的地方 指令:git add 本地仓库 存放暂存区中打包好的文件,并附上标签信息 指令:git commit 远程仓库 接收本地仓库中发送过来的文件包,方便别人查看 指令:git push 贮藏区 存储未完成但又不想提交的文件 指令:git stash 初次配置全局基础参数配置:用户名和邮箱(github或gitee中使用的名字和邮箱) 12git config --global user.name "你的名字"git config --global user.email "你的邮箱" 仓库相关初始化仓库Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。 在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不...
