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 …...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
