RAG与Embedding:现代NLP的核心技术
- 本篇文章简单梳理我在了解RAG以及Embedding技术时的想法,仅供参考
文章目录
- 1. 引言
- 背景
- 为什么要关注RAG与Embedding技术
- 2. 基础概念与原理
- 2.1 什么是RAG (Retrieval-Augmented Generation)
- 定义
- 工作流程
- 优点与适用场景
- 2.2 什么是Embedding
- 定义
- 作用
- 3. Embedding在RAG中的关键作用
- 3.1 从检索到生成的桥梁
- 3.2 提升RAG的准确性与鲜更性
- 3.3 形成完整RAG工作流
- 4. 常用的Embedding方法与框架
- 4.1 经典Embedding方法
- 4.2 加入上下文的Embedding模型
- 4.3 特定领域的Embedding
- 5. 常用的RAG方法与框架
- 5.1 RAG工作流示例
- 5.2 开源框架与工具
- 5.3 与向量数据库的集成
- 7. 总结与展望
- RAG与Embedding未来发展趋势
- 在NLP生态系统中的位置
1. 引言
背景
在自然语言处理(NLP)和大型语言模型(LLM)的应用中,信息检索与问答是最举人注目的场景之一。然而,传统方法并不能完美解决如下问题:
- 最新知识的使用:传统LLM无法访问资料中的最新信息。
- 大规模知识库:因为数据量高,检索效率和精度无法举屏。
- 团队知识及基于文档的问答:多数环境中,为了对接解决问题,必须采用基于专用文档的知识。
为什么要关注RAG与Embedding技术
RAG (检索增强生成) 和Embedding技术是解决上述问题的重要方法。
- RAG与现有模型的区别: RAG通过检索采集最关键的外部信息,不仅依赖于预训练模型。
- Embedding是在大数据中检索的基石: 它通过将文本和查询进行向量化,实现高效的超负载检索。
2. 基础概念与原理
2.1 什么是RAG (Retrieval-Augmented Generation)
定义
RAG是一种将信息检索和生成模型结合的技术。不同于传统生成式模型,它通过访问外部知识库,在生成中轻松解决信息随时性和知识解析的限制。
工作流程
- 步骤1:用户查询输入。
- 步骤2:通过Embedding向量化查询,在向量数据库中检索最相关文档。
- 步骤3:将检索结果与用户输入聚合,产生答案。
优点与适用场景
- 能够访问最新或被订制化的知识。
- 解决需要标准信息源和大规模文档检索的场景。
2.2 什么是Embedding
定义
Embedding指将文本或其他数据(如图像、图、声音)转换为高空间中的向量。在NLP中,它能夠抓住语义信息和文本之间的相似性。
作用
- 语义相似度比较:基于Embedding的向量空间,可以直接计算文本相似度。
- 在检索中的应用:使用Embedding实现文本精准检索和分类。
3. Embedding在RAG中的关键作用
3.1 从检索到生成的桥梁
Embedding为文档和查询提供向量化代表,并通过向量相似度检索最相关内容。
3.2 提升RAG的准确性与鲜更性
- 语义匹配的精度提高:Embedding能在大规模文档集中实现高效检索。
- 减少“背乍”回答风险:生成模型能够根据检索结果依据。
3.3 形成完整RAG工作流
- 流程示例:
- 用户输入问题。
- 通过Embedding模型将问题向量化。
- 在向量数据库中检索最相关文档。
- 聚合检索结果,生成答案。
- 数据流与模块耱合:每个模块(Embedding模型、向量数据库、LLM、答案生成)其功能紧密配合。
4. 常用的Embedding方法与框架
4.1 经典Embedding方法
- Word2Vec / GloVe:早期词向量方法,能力限制在于静态转换。
4.2 加入上下文的Embedding模型
- BERT及其变体:基于Transformer,采用双向编码。
- Sentence-BERT、SimCSE:采用专为发布句子级别向量,依据查询和文本之间的近值计算。
4.3 特定领域的Embedding
- 专用领域微调:通过基于区域数据进行微调,尽可能推动属性化性能。
5. 常用的RAG方法与框架
5.1 RAG工作流示例
- Facebook AI Research的RAG:公开建议架构。
5.2 开源框架与工具
- LangChain:集成LLM、向量存储和检索模块的Python框架。
- LlamaIndex:迅速构建基于知识库的QA系统。
- Haystack:提供文档检索和问答的综合框架。
5.3 与向量数据库的集成
- Pinecone、Weaviate、Chroma:常用向量数据库,提高向量检索效率。
7. 总结与展望
RAG与Embedding未来发展趋势
- 更高效的语义检索技术,以及模型压缩和低成本部署方向。
在NLP生态系统中的位置
- RAG和Embedding技术将继续进化,成为生成式AI领域不可战略的核心技术。
相关文章:
RAG与Embedding:现代NLP的核心技术
本篇文章简单梳理我在了解RAG以及Embedding技术时的想法,仅供参考 文章目录 1. 引言背景为什么要关注RAG与Embedding技术 2. 基础概念与原理2.1 什么是RAG (Retrieval-Augmented Generation)定义工作流程优点与适用场景 2.2 什么是Embedding定义作用 3. Embedding在…...
力扣每日一题 - 1812. 判断国际象棋棋盘中一个格子的颜色
题目 还需要你前往力扣官网查看详细的题目要求 地址 1.给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。2.如果所给格子的颜色是白色,请你返回 true,如果是黑色ÿ…...
Map 那些事儿
1. map 的基本结构 Go 的 map 是一种哈希表,其核心思想是通过哈希函数将键映射到某个位置(桶)以存储对应的值。它主要包含以下关键部分: •桶(bucket):存储键值对的容器,map 中的元…...
GCP Case:MountKirk Games
游戏后端 根据游戏活动动态放大或缩小。 连接到托管的nos0l数据库服务。 运行定制的linux发行版。 游戏分析平台 根据游戏活动来扩大或缩小规模直接处理来自游戏服务器的传入数据。 处理由于移动网络缓慢而迟到的数据。 通过sql查询来访问至少10tb的历史数据 处理由用户…...
[创业之路-187]:《华为战略管理法-DSTE实战体系》-1-从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机
目录 一、UTStarcom(UT斯达康)的发展历程 1、创立与初期发展 2、快速成长与上市 3、技术创新与业务拓展 4、战略调整与持续发展 二、从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机 1、企业初期发展的顺利表现 2、顺…...
高级数据结构-树状数组
介绍 树状数组的推导 两个基础操作 模板-acwing795. 前缀和 #include<bits/stdc.h> using namespace std;const int N 1e610; int c[N]; int lowbit(int x){return x & -x; }int query(int x){int ans 0;for(; x; x - lowbit(x)) ans c[x];return ans; }void add…...
LeetCode279. 完全平方数(2024冬季每日一题 27)
给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 …...
Scala 隐式转换
object test {//复习隐式转换://隐式转换:编译器 偷偷地,自动地帮我们把一种数据转换为另一种类型//例如:int --> double//它有失败的时候(double --> int),有成功的时候//当它转换失败的…...
K8S命令部署后端(流水线全自动化部署)
前言 本文为链接: 云效流水线k8s半自动部署java(保姆级)的补充,本文起初的目的是为了补充完善k8s流水线的全自动化部署,但是也适用于k8s的一键重启,因为使用k8s的web页面容易出现漏点的情况,因此也可以把代码保存为shell脚本,同样可以实现一键重启。关于…...
Ubuntu中配置交叉编译工具的三条命令的详细研究
关于该把下面的三条交叉编译配置语句加到哪里,详情见 https://blog.csdn.net/wenhao_ir/article/details/144326545 的第2点。 现在试解释下面三条交叉编译配置语句: export ARCHarm export CROSS_COMPILEarm-buildroot-linux-gnueabihf- export PATH$…...
【PyQt5教程 二】Qt Designer 信号与槽的使用方法及PyQt5基本小部件说明
目录 一、信号与槽机制: 二、信号与槽使用方法: (1)使用Qt Designer 的信号与槽编辑器: (2)使用固定语法直接建立信号槽连接: 三、PyQt小部件及其触发信号: &#x…...
编程语言中接口(Interface)介绍
编程语言中接口(Interface)介绍 在编程语言中,“接口”(Interface)是一种抽象类型,定义了一组方法(和属性),但不包含其具体实现。接口通常用于规定类必须实现的行为&…...
算法学习之贪心算法
前言 记录一下,免得又又忘了 贪心算法 在刚接触的时候,我一直觉得贪心和动态规划有相似之处,但做过的题目看,贪心似乎不用迭代...
【jvm】垃圾回收的优点和原理
目录 1. 说明2. 优点3. 原理3.1 发现无用对象3.2 回收无用对象所占用的内存 4. 回收算法4.1 标记-清除算法4.2 复制算法4.3 标记-整理算法4.4 分代收集算法 1. 说明 1.JVM(Java虚拟机)垃圾回收是Java语言的一大特性,它自动管理内存ÿ…...
YOLO系列发展历程:从YOLOv1到YOLO11,目标检测技术的革新与突破
文章目录 前言一、YOLOv1:单阶段目标检测的开端二、YOLOv2:更精准的实时检测三、YOLOv3:阶梯特征融合四、YOLOv4:性能和速度的新平衡五、YOLOv5:易用性和扩展性的加强六、YOLOv6:工业部署的利器七、YOLOv7&…...
深入浅出:序列化与反序列化的全面解析
文章目录 1. 引言2. 什么是序列化?2.1 为什么需要序列化? 3. 什么是反序列化?3.1 反序列化的重要性 4. 序列化与反序列化的实现4.1 JSON (JavaScript Object Notation)4.2 XML (eXtensible Markup Language)4.3 Protocol Buffers (Protobuf)4…...
word实践:正文/标题/表图等的共用模板样式设置
说在前面 最近使用word新建文件很多,发现要给大毛病,每次新建一个word文件,标题/正文的字体、大小和间距都要重新设置一遍,而且每次设置这些样式都忘记了参数,今天记录一下,以便后续方便查看使用。现在就以…...
Blender中使用BlenderGIS插件快速生成城市建筑模型
导入下载 BlenderGIS 插件 去github上下载其压缩包,地址如下: https://github.com/domlysz/BlenderGIS 在BlenderGIS中导入这个插件压缩包: 点击上方菜单栏的编辑,点击偏好设置 在插件>从磁盘安装中导入刚刚下载的压缩包 可…...
【单元测试】单元测试的重要性
1一些错误的认识 在实际的单元测试过程中总会有一些错误的认识左右着我们,使之成为单元测试最大的障碍,在此将其一一分析如下: 它太浪费时间了,现在要赶进度,时间上根本不允许,或者随便做做应付领导。 …...
Codeforces Round 992 (Div. 2)
这场cf只在b卡了一下,因为b真是犯蠢了,我以为会向下取整,结果是完全就不取整,或者说是向上取整,卡了我半个小时,要不是紧急看了题一下,昨天那场就毁了 话不多说,直接开讲 A. Game …...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
