基于SSD的RAG技术方案,推动LLM规模扩展

news2024/11/15 4:41:52

随着大型语言模型(LLM)的不断发展,它们在虚拟助手、聊天机器人和对话系统等应用中发挥着重要作用。然而,LLM面临的挑战之一是它们可能会生成虚假或误导性的信息,即所谓的“幻觉”。为了解决这一问题,检索增强生成(RAG,Retrieval Augmented Generation)作为一种解决方案应运而生,它允许LLM从外部可信的数据源中提取信息,以验证和支撑其输出内容的真实性。

图片

RAG的基本原理是让LLMs在生成回答时,能够从外部数据集中搜索与查询相关的文档,从而获取更准确和可靠的信息。具体来说,当用户提出问题时,LLMs会同时利用自身的大规模训练数据集和外部数据集进行查询。外部数据集的向量嵌入(如私有、可信、最新的文档)会被存储起来,通过近似最近邻搜索(ANNS,Approximate Nearest Neighbor Search )算法,快速检索与查询最相关的信息元素,为LLMs的回答提供支持。

图片

有效的ANNS算法是RAG能否成功的关键。为了快速准确地检索到与查询相关的信息,需要使用ANNS算法。

图片

目前,Hierarchical Navigable Small World(HNSW)是领先的内存型ANNS算法,但它存在着无法经济地扩展的问题。

图片

随着RAG数据集规模的增大,尤其是向量嵌入的高维度(768D - 1536D),HNSW需要大量的DRAM来存储向量和索引,这导致了高昂的成本,限制了RAG数据集的大小和其基础有效性。

图片

与此相反,SSD-based ANNS算法,如微软开发的DiskANN,则是基于SSD的解决方案。DiskANN通过将索引存储在SSD上,而将量化后的向量(Product Quantization, PQ)保存在内存中,针对SSD实现算法优化和优化SSD的访问模式,从而实现了在成本效益方面的显著提升,同时保持了与内存基方案相媲美的性能。

图片

铠侠在FMS2024上展示了一种适用于大规模、高维度RAG数据集的DiskANN。他们使用铠侠CD8P系列PCIe NVMe数据中心SSD对DiskANN进行基准测试。结果显示,基于SSD的DiskANN与内存中的HNSW提供的性能相当。

图片

DiskANN显著降低了HNSW的DRAM占用,减少了高达89%的DRAM footprint。这使得在提供可比性能的同时,能够大幅降低成本,为RAG应用在大规模场景下的实现提供了可能。

图片

图片

向量数据库从对象存储中加载向量和索引数据到查询节点。这意味着数据的存储和管理是分离的,对象存储负责数据的长期保存,而查询节点在需要时从对象存储中获取数据进行处理。在大规模RAG应用中,查询节点使用SSD作为搜索介质。这是因为SSD具有较高的读写速度和性能,可以更快地处理大规模的数据搜索请求,从而提高RAG应用的效率和响应速度。

图片

使用DiskANN的相同架构能够实现与HNSW相当的吞吐量。这意味着DiskANN在数据搜索和处理能力方面能够达到与传统的HNSW算法相近的水平,保证了RAG应用的性能。更为重要的是,DiskANN显著降低了查询节点的成本。这是通过优化算法和存储架构实现的,使得在不牺牲性能的前提下,能够减少硬件资源的消耗和成本支出。

SSD在RAG-Based LLMs的向量数据库架构中发挥着关键作用,它为大规模RAG应用提供了高效的搜索介质,而DiskANN的应用则在保证性能的同时,大幅降低了查询节点的成本,推动了RAG应用在大规模场景下的可扩展性和经济性。这种架构的优势在于能够更好地满足RAG应用对数据处理速度和成本控制的需求,为LLMs的发展和应用提供了有力的支持。

为了进一步推动RAG技术的应用和发展,KIOXIA提出了RAG优化的SSD解决方案(RAG Optimized SSD Solution, ROSS)。ROSS的关键点在于将向量数据库从DRAM迁移到SSD,这样不仅可以降低成本,还能提高系统的可扩展性。KIOXIA的ROSS概念利用SSD来承载ANNS,其性能与DRAM解决方案相当,但不受DRAM大小限制,因此可以支持更大规模的向量数据库。

KIOXIA AiSAQTM是KIOXIA为ROSS开发的首个成果,它使向量数据库能够从对象存储中加载向量和索引数据到查询节点,并使用SSD作为大规模RAG应用的搜索介质。

图片

KIOXIA AiSAQTM(All-in-Storage ANNS with Product Quantization)能够实现从“大部分在存储中”(如DiskANN)到全在存储中、几乎零DRAM的架构转变。KIOXIA AiSAQTM将进一步扩展RAG的规模,使RAG应用能够达到几乎无限的规模。

图片

综上所述,RAG和ANNS是现代LLM解决方案的重要组成部分。然而,基于内存的ANNS算法由于高昂的成本和有限的扩展能力,无法满足日益增长的需求。借助SSD技术的进步,特别是像KIOXIA提出的ROSS和AiSAQ这样的创新解决方案,我们可以预见未来RAG技术将能够更广泛地应用于实际场景中,实现更大规模的数据处理和服务提供。随着这些技术的发展,我们可以期待更加智能、高效的语言模型应用,为用户提供更加精准、可靠的服务体验。

参考文献:FMS 2024-Kioxia-《Flash is Driving Scale in RAG-Based LLMs》


如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 这可能是最清晰的AI存储数据流动图解

  • DWPD指标:为何不再适用于大容量SSD?

  • 突破内存墙:DRAM的过去、现在与未来

  • E1.S接口如何解决SSD过热问题?

  • ZNS SSD是不是持久缓存的理想选择?

  • 存储正式迈入超大容量SSD时代!

  • FMS 2024: 带来哪些存储技术亮点?

  • IEEE报告解读:存储技术发展趋势分析

  • 什么?陶瓷也可以用来存储数据了?

  • 都说固态硬盘寿命短,那么谁把使用寿命用完了吗?

  • 内存原生CRAM技术将会颠覆计算存储的未来?

  • 浅析SSD性能与NAND速率的关联

  • 关于SSD LDPC纠错能力的基础探究

  • 存储系统如何规避数据静默错误?

  • PCIe P2P DMA全景解读

  • 深度解读NVMe计算存储协议

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • CXL崛起:2024启航,2025年开启新时代

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2156769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java数据库连接——JDBC

目录 1、JDBC简介 2、JDBC应用 2.1 建立数据库连接 2.1.1 DriverManager静态方法获取连接 2.1.2 DataSource对象获取 2.2 获取SQL执行对象 2.2.1 SQL注入 2.2.2 Statement(执行静态SQL) 2.2.3 PreparedStatement(预处理的SQL执行对象) 2.3 执行SQL并返回结果 2.4 关…

Error when custom data is added to Azure OpenAI Service Deployment

题意:在向 Azure OpenAI 服务部署添加自定义数据时出现错误。 问题背景: I receive the following error when adding my custom data which is a .txt file (it doesnt matter whether I add it via Azure Cognitive Search, Azure Blob Storage, or F…

证书学习(五)Java实现RSA、SM2证书颁发

目录 一、知识回顾1.1 X.509 证书1.2 X509Certificate 类二、代码实现2.1 Maven 依赖2.2 RSA 证书颁发1)PfxGenerateUtil 证书文件生成工具类2)CertDTO 证书中间类3)RSACertGenerateTest RSA证书生成测试类4)执行结果2.3 SM2 证书颁发1)SM2Utils 国密SM2算法工具类2)SM2C…

查询一条 SQL 语句的流程

查询一条sql语句的流程 连接器:建立连接,管理连接、校验用户身份查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行(MSQL8.0 已删除)解析 SQL:通过解析器对 SQL 查询语句进行词法分析、语法分析&#xf…

【RH124】解释Linux文件系统权限

RH124教材中控制对文件的访问一章中有一道解释Linux文件系统权限的测验题,可以一起来看看: 一、权限解释 这是通过 ls -l 命令查看的结果。它显示了文件或目录的权限、拥有者、所属组等信息。 1、长列表的第一个字符表示文件类型: -是常…

(done) 声音信号处理基础知识(6) (How to Extract Audio Features)

参考:https://www.youtube.com/watch?v8A-W1xk7qs8&t2s 先复习之前分类的声学特征 时域特征流水线 如下是 441Khz 下一个采样点播放的时间。这比人类耳朵分辨率(10ms)还低。 所以,把多个采样点组合成一个 frame 的原因有,这是一个人…

计算机的错误计算(一百零一)

摘要 展示 在0附近数的函数值的计算精度问题。 计算机的错误计算(一百)探讨了 在一般情形下的计算精度问题。本节讨论其在0附近的数的函数值的计算精度问题。 例1. 已知 计算 不妨在Python 3.12.5下计算,则有 若在线运行R代码&#x…

阿⾥编码规范⾥⾯Manager分层介绍-专⽤名词和POJO实体类约定

开发⼈员:张三、李四、王五 ⼀定要避免单点故障 ⼀个微服务起码两个⼈熟悉:⼀个是主程⼀个是技术leader 推荐是团队⾥⾯两个开发⼈员 N⽅库说明 ⼀⽅库: 本⼯程内部⼦项⽬模块依赖的库(jar 包)⼆⽅库: 公司内部发布到中央仓库,可供公司…

车辆重识别(CVPR2016图像识别的深度残差学习ResNet)论文阅读2024/9/21

[2] Deep Residual Learning for Image Recognition ( CVPR 2016) 作者:Kaiming He Xiangyu Zhang Shaoqing Ren Jian Sun 单位:微软研究院 摘要: 更深层的神经网络更难训练。我们提出了一个残差学习框架,以减轻对比先前使用的深…

鸿蒙OpenHarmony【轻量系统内核扩展组件(动态加载)】子系统开发

基本概念 在硬件资源有限的小设备中,需要通过算法的动态部署能力来解决无法同时部署多种算法的问题。以开发者易用为主要考虑因素,同时考虑到多平台的通用性,LiteOS-M选择业界标准的ELF加载方案,方便拓展算法生态。LiteOS-M提供类…

【Linux 21】线程安全

文章目录 🌈 一、线程互斥⭐ 1. 线程间互斥的相关概念🌙 1.1 临界资源和临界区🌙 1.2 互斥和原子性 ⭐ 2. 互斥量 mutex⭐ 3. 互斥量接口🌙 3.1 初始化互斥量🌙 3.2 销毁互斥量🌙 3.3 互斥量上锁&#x1f3…

原子结构与电荷

1.原子结构与电荷 1.1 物质到底是由什么构成的 阴极射线 电磁波 电磁波 我们生活中的物质。究竟是由什么构成的呢?这个问题其实困扰了人们很久。 1.提出“原子”的概念 早在2400年前,古希腊哲学家德莫克里特就提出了原子的概念。当时他就认为&…

H264-NAL

目录 错误日志NAL简介参考资料 错误日志 拉流时存在如下日志,会因为拉流失败导致之后的任务也停止 missing picture in access unit with size 16384 Invalid NAL unit size Error splitting the input into NAL units. 之后只要设置抓取异常后,重新拉流&#xff…

Python--TCP/UDP通信

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.客户端与服务端通信原理 1. 服务器端 服务器端的主要任务是监听来自客户端的连接请求,并与之建立连接,然后接收和发送数据。 创建套接字:首先&#xff0…

【Fastapi】参数获取,json和query

【Fastapi】参数获取,json和query 前言giteegithub query形式json传递同步方法使用json 前言 花了半个月的时间看了一本小说,懈怠了…今天更新下fastapi框架的参数获取 gitee https://gitee.com/zz1521145346/fastapi_frame.git github https://git…

一些迷你型信息系统 - 2

1 Linux内核数据结构信息查询 Linux内核的数据结构众多,成千上万,做一个程序来存储查询信息;自己录入数据; 代码字段最长可录入65535个字符;每个字段录入时长度超限会有红色告警; 其他的以后想到再做&#…

git-repo系列教程(4) windows平台下安装git-repo客户端

文章目录 简介操作步骤1.设置/root目录和/home目录2.打开本地终端3.安装python34.安装git5.安装git -repo6.查看版本 需要注意点 简介 git-repo天生是在Linux和MacOS下使用,在windows下直接安装运行会出错. 经过不断尝试,终于找到了一种简单的安装方法,在网上现在是独一份. …

Golang | Leetcode Golang题解之第424题替换后的最长重复字符

题目: 题解: func characterReplacement(s string, k int) int {cnt : [26]int{}maxCnt, left : 0, 0for right, ch : range s {cnt[ch-A]maxCnt max(maxCnt, cnt[ch-A])if right-left1-maxCnt > k {cnt[s[left]-A]--left}}return len(s) - left }f…

Maven-六、私服仓库

Maven 文章目录 Maven前言下载到本地解压启动并访问资源管理maven配置创建仓库选择使用仓库配置私服地址 资源上传配置资源上传操作私服连接中央仓库总结 前言 模块在引用依赖时一般先看本地仓库再看中央仓库,但是在团队开发中,不同人员要引用一些项目通…

某省公共资源交易电子平台爬虫逆向

目标网站 aHR0cHM6Ly9nZ3p5ZncuZnVqaWFuLmdvdi5jbi9pbmRleC9uZXc 一、抓包分析 1、请求参数加密 二、逆向分析 搜索定位加密参数位置 这里生成,扣取响应代码到本地即可 2、响应数据加密解密 xhr断点 向下跟栈,直到出现加密数据 解密函数 本地获取数据…