神经数据库:用于使用 ChatGPT 构建专用 AI 代理的下一代上下文检索系统 — (第 2/3 部分)

news2024/11/17 1:37:39

书接上回理解构建LLM驱动的聊天机器人时的向量数据库检索的局限性 - (第1/3部分)_阿尔法旺旺的博客-CSDN博客

其中我们强调了(1)嵌入生成,然后(2)使用近似近邻(ANN)搜索进行矢量搜索的解耦架构的缺点。我们讨论了生成式 AI 模型生成的向量嵌入之间的余弦相似性可能不是获取相关内容以进行提示的正确指标。我们还强调,在生产环境中,通过向量数据库存储、更新和维护嵌入非常昂贵。

在这篇文章中,我们将讨论使用学习索引的现代神经数据库学习如何缓解在嵌入和搜索相关的大多数问题方面提供对矢量数据库的重大升级。最后,我们将简要介绍我们正在构建的用于解决ThirdAI这些问题的神经数据库技术,我们将在下一篇文章中深入探讨。

维护、存储和搜索嵌入的痛点

为了说明工程挑战,让我们考虑使用 Pubmed 35M 数据集构建 AI 代理的示例,这是一个符合行业标准的小型存储库。该数据集由大约 35 万个摘要组成,转化为大约 100 万个块,需要 100 万个嵌入。假设每个区块平均有 250 个代币,我们做出以下观察:

  1. 嵌入是非常重的对象:像 Ada-02 这样更简单的 OpenAI 模型为每个文本块生成大约 1500 维的嵌入。文本块约为 250 个标记(每个标记平均 4 个字符)。存储 100 万个 Pubmed 块大约需要 600GB 来存储嵌入。相比之下,未压缩的原始文本的完整数据只有200GB。更精确的LLM模型的嵌入维度超过12000,这将需要大约5.5 TB的存储空间,仅用于处理嵌入向量。
  2. 具有高维嵌入的近似近邻搜索ANN)要么慢要么不准确:三十多年来,人们已经认识到,高维近邻搜索,即使是近似形式,从根本上也是困难的。大多数ANN算法,包括流行的基于图形的HNSW,都需要重量级的数据结构管理,以确保可靠的高速搜索。任何ANN专家都知道,搜索的相关性和性能在很大程度上取决于向量嵌入的分布,这使得它非常不可预测。此外,随着嵌入维度的增加,维护ANN、其搜索相关性和延迟可能会面临重大挑战。
  3. ANN索引的更新和删除存在问题:大多数现代向量数据库和ANN系统都是基于HNSW或其他图遍历算法构建的,其中嵌入向量是节点。由于这些图形索引的构造方式的性质,基于文档内容中的更改更新节点可能是一个非常缓慢的操作,因为它需要更新图形的边缘。出于同样的原因,删除文档也可能很慢。嵌入更新的动态性质甚至会影响检索的整体准确性。因此,对数据库的增量更新非常脆弱。从头开始重建通常成本太高。
  4. 检索失败很难评估和修复:当给定的文本查询无法检索相关的基础上下文,而是提供不相关或垃圾文本时,此失败可能有三个原因:a 数据库中不存在相关的文本块,b 嵌入质量很差,因此无法使用余弦相似性匹配两个相关文本,c 嵌入很好, 但由于嵌入的分布,近似近邻算法无法检索到正确的嵌入。虽然原因 a 是可以接受的,因为问题似乎与数据集无关,但区分原因 b c 可能是一个乏味的调试过程。此外,我们无法控制ANN搜索,并且优化嵌入可能无法解决问题。因此,即使在确定问题后,我们也可能无法修复它。

臭名昭著的维度诅咒:大量高维向量的ANN从根本上来说是困难和不可预测的。如果可以的话,避免整个过程。

持续自适应领域特定检索系统:无嵌入神经数据库

事实证明,有一个简单的AI系统可以进行端到端的训练,而无需昂贵,繁重和复杂的高维嵌入。关键概念是完全绕过嵌入过程,将检索问题作为可以端到端学习的神经预测系统来处理。在这种方法中,神经网络用于将给定的查询文本直接映射到相关文本。此过程需要数据结构以提高效率。每年都会在ICMLNeurIPSICLR等会议上发表大量论文,探讨这些想法。我们的设计是NeurIPS论文的简化版本,随后的研究在ICLRKDD上发表。

神经数据库同样也涉及两个阶段,如下所述。

训练和插入(或索引)阶段:系统的前向工作流程如下图所示。

该系统利用强大的大型神经网络生成将文本映射到离散键的内存位置。这些预测键充当存储桶,用于插入和稍后检索相关文本块。从本质上讲,这是一个很好的旧哈希图,其中哈希函数是一个大型神经网络,经过训练来预测指针。为了训练网络,我们需要语义相关的文本对和标准的交叉熵损失。有关更多详细信息,请参阅 2019 年 NeurIPS 论文和随后的 KDD 2022 论文中提供的理论和实验比较。从数学上讲,可以证明模型的大小随文本块的数量以对数方式缩放,从而导致运行时间和内存的指数级改进。此方法不需要嵌入管理。

查询或检索阶段: 查询或检索阶段同样简单,如下图所示。

给定一个问题,我们使用经过训练的神经网络分类器来计算排名前几个桶的概率。然后,我们累积与这些顶级存储桶关联的所有 ChunkID。然后,对与问题相关的顶级存储桶及其相关相关性分数进行聚合和排序,以返回候选文本块的小型排名列表。然后,这些文本块被用作生成 AI 的提示,以生成最终的接地响应。

神经网络数据库相对于嵌入和ANN的主要优

我们通过相同的Pubmed 35M AI-Agents应用程序来说明神经数据库的优势。

  • 没有嵌入导致指数压缩:我们的方法所需的额外内存仅在于存储神经网络的参数。我们发现,一个 25 亿参数的神经网络足以训练和索引完整的 Pubmed 35M 数据集。训练纯粹是自我监督的,因为我们不需要任何标记的样本。即使有所有的开销,我们只有不到 20GB 的存储空间用于完整索引。相比之下,使用矢量数据库存储 1500 维嵌入模型的数量至少为 600GB。这并不奇怪,因为使用嵌入模型,计算和内存随块数线性扩展。相比之下,我们的神经数据库仅随块的数量进行对数缩放,正如我们的NeurIPS论文所证明的那样。
  • 像管理传统数据库一样管理插入和删除: 与基于图的近邻索引不同,神经数据库具有简单的 KEYVALUE 类型哈希表,其中插入、删除、并行化、分片等都很简单,而且很容易理解。
  • 超快速推理和显著降低成本: 推理延迟仅包括运行神经网络推理,然后是哈希表查找。最后,只有选定的区块只需要对少数候选者进行简单的加权聚合和排序。与嵌入和矢量数据库相比,您可能会看到检索速度快 10-100 倍。此外,借助ThirdAI突破性的稀疏神经网络训练算法,我们可以在普通CPU上训练和部署这些模型。
  • 使用持续学习进行增量式的学习索引:可以使用语义含义相似的任何文本对来训练神经索引。这意味着,对专门针对任何理想的任务或领域,检索系统可以不断训练。获取用于训练的文本对并不难。首先,它们可以很容易地以自我监督的方式生成。此外,它们自然可用于任何具有用户交互的生产系统。

ThirdAI的亮点

在本系列的下一篇也是最后一篇博客文章(第 3/3 部分)中,我们将讨论 ThirdAI 的神经数据库生态系统,以及如何通过动态稀疏性来驯服像LLM这样的庞然大物,以便在任何数据处理系统中运行,无论是在云上还是在本地。我们还将介绍一组简单的自动调优 Python API。这些 API 使你能够在设备上利用下一代学习索引的强大功能。此外,我们将解释如何使用简单的CPU和几行Python代码创建一个接地气的Pubmed Q&A AI-Agent,同时通过本地环境(不需要互联网)保持隐私。如上一篇文章所示,使用标准的OpenAI嵌入和矢量数据库生态系统构建这样的AI代理通常需要花费数十万美元。您可以使用ThirdAI在您的个人设备上基本上免费获得所有这些。

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

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

相关文章

Reinforcement Learning with Code 【Chapter 8. Value Funtion Approximation】

Reinforcement Learning with Code This note records how the author begin to learn RL. Both theoretical understanding and code practice are presented. Many material are referenced such as ZhaoShiyu’s Mathematical Foundation of Reinforcement Learning, . 文章…

2.9 线性表的划分

划分规则: 以某个元素为标准, 把顺序表中的元素分为左右两个部分, 标准元素称为枢轴. 考研中划分有三种题型(划分策略). 题型一 要求: 给一个顺序表, 以第一个元素为枢轴, 将该顺序表划分为左右两部分, 使得左边的所有元素都小于枢轴, 右边的所有元素都大于枢轴. 并且枢轴要…

基于Java+SpringBoot+vue前后端分离大学生就业招聘系统设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

【雕爷学编程】Arduino动手做(174)---Sensor Shield V5.0传感器扩展板

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

c++学习(位图)[22]

位图 位图(Bitmap)是一种数据结构,用于表示一个固定范围的布尔值(通常是0或1)。它使用一个二进制位来表示一个布尔值,其中每个位的值表示对应位置的元素是否存在或满足某种条件。 位图可以用于解决一些特…

下级平台级联安防视频汇聚融合EasyCVR平台,层级显示不正确是什么原因?

视频汇聚平台安防监控EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等…

粘包处理的方式

为什么出现粘包: 发送端在发送的时候由于 Nagel 算法的存在会将字节数较小的数据整合到一起发送,导致粘包;接收端不知道发送端数据的长度,导致接收时无法区分数据; 粘包处理的方式: 通过在数据前面加上报…

OpenLayers入门,OpenLayers如何加载GeoJson多边形、线段、点和区域范围等数据并叠加到OpenLayers矢量图层上

专栏目录: OpenLayers入门教程汇总目录 前言 前面两章已经讲了OpenLayers如何加载GeoJson数据到矢量图层和webgl图层上,前面两章也是可以支持多边形、线段、点和区域范围灯数据加载的,只是没有设置样式,所以只能看到点,本章就相当于完整版本,可以将所有图形都详细展示出…

使用Wps减小PDF文件的大小

第一步、打开左上角的文件 第二步、点击打印选项 第三步、点击打印按钮

大学的python课程一般叫什么,大学开设python课程吗

大家好,小编为大家解答大学的python课程一般叫什么的问题。很多人还不知道大学python课有没有听的必要,现在让我们一起来看看吧! 1、华中农业大学python期末考试会考原题吗 华中农业大芦如学python期末考试不会考原题。华中农业搜侍大学pyth…

Leetcode-每日一题【剑指 Offer II 075. 数组相对排序】

题目 给定两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。 示例&…

都2023年了还不会Node.js爬虫?快学起来!

爬虫简介 什么是爬虫 爬虫(Web Crawler)是一种自动化程序,可以在互联网上自动抓取网页,并从中提取有用的信息。 爬虫可以模拟人类浏览器的行为,自动访问网站、解析网页、提取数据等。 通俗来说,爬虫就像…

财报解读:新鲜感褪去后,微软直面AI的骨感现实?

微软交出了一份远观尚可,但近看承压的“答卷”。 北京时间2023年7月26日,微软披露了2023财年第四财季及全年财报。受生产力和业务流程部门和智能云部门等业务带动,微软第四财季营收561.89亿美元,同比增长8%;净利润200…

Java-day02(关键字,变量,进制转换,数据类型转换,运算符)

关键字,变量,进制转换,数据类型转换,运算符 1.关键字,保留字与标识符 Java区分大小写 1.1 关键字 定义:有特殊含义,用作专用的字符串(单词) 特点:关键字所以字母都为…

小程序 获取用户头像、昵称、手机号的组件封装(最新版)

在父组件引入该组件 <!-- 授权信息 --><auth-mes showModal"{{showModal}}" idautnMes bind:onConfirm"onConfirm"></auth-mes> 子组件详细代码为: authMes.wxml <!-- components/authMes/authMes.wxml --> <van-popup show…

vs2013 32位 编译的 dll,重新用vs2022 64位编译,所遇问题记录

目录 一、vs2013 32 DLL 转 VS2022 64 DLL 所遇问题 1、 LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900” 2、原先VS2013 现在 VS2022 导致的vsnprintf 重定义问题 3、 无法解析的外部符号 __vsnwprintf_s 4、无法解析的外部符号__imp__CertFreeC…

JGJ46-2005施工现场临时用电安全技术规范

为贯彻国家安全生产的法律和法规&#xff0c;保障施工现场用电安全&#xff0c;防止触电和电气火灾事故发生&#xff0c;促进建设事业发展&#xff0c;制定本规范。 本规范适用于新建、改建和扩建的工业与民用建筑和市政基础设施施工现场临时用电工程中的电源中性点直接接地的…

双重for循环优化

项目中有段代码逻辑是个双重for循环&#xff0c;发现数据量大的时候&#xff0c;直接导致数据接口响应超时&#xff0c;这里记录下不断优化的过程&#xff0c;算是抛砖引玉吧~ Talk is cheap,show me your code&#xff01; 双重for循环优化 1、数据准备2、原始双重for循环3、…

ChatGPT漫谈(三)

AIGC(AI Generated Content)指的是使用人工智能技术生成的内容,包括文字、图像、视频等多种形式。通过机器学习、深度学习等技术,AI系统可以学习和模仿人类的创作风格和思维模式,自动生成大量高质量的内容。AIGC被视为继用户生成内容(UGC)和专业生成内容(PGC)之后的下…

JS判断类型的方法和对应的局限性

JS判断类型的方法和对应的局限性 一、typeof 返回&#xff1a; 该方法返回小写字符串表示检测数据属于什么类型&#xff0c;例如&#xff1a; 检测函数返回function 可判断的数据类型&#xff1a; undefined、string、number、function、boolean、object&#xff0c;symb…