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

news/2024/5/10 10:42:43

书接上回理解构建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.mrgr.cn/p/48178132

相关文章

ZooKeeper原理剖析

1.ZooKeeper简介 ZooKeeper是一个分布式、高可用性的协调服务。在大数据产品中主要提供两个功能: 帮助系统避免单点故障,建立可靠的应用程序。提供分布式协作服务和维护配置信息。 2.ZooKeeper结构 ZooKeeper集群中的节点分为三种角色:Le…

Linux 多线程并发Socket服务端的实现( 11 ) -【Linux通信架构系列 】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everythi…

1221. 四平方和(超详细!!)

输入样例: 5输出样例: 0 0 1 2 本题思路:以空间换时间 由于暴力解法我们至少要枚举三个数,然后计算出第四个数 呢么需要进行三重循环,时间复杂度大概为O(n3),则会超时 所以我们要进行优化来降低时间复杂度 我们的思路是&#xf…

【Rust笔记】意译解构 Object Safety for trait

意译解构Object Safety for trait 借助【虚表vtable】对被调用成员函数【运行时内存寻址】的作法允许系统编程语言Rust模仿出OOP高级计算机语言才具备的【专用多态Ad-hoc Polymorphism】特性。 计算机高级语言中的“多态”术语是一个泛指。它通常可被细化为 基于继承关系的“子…

热风梳C22.2 NO.3亚马逊加拿大审核标准

加拿大是目前亚马逊所有站点中,商业规模大、发展势头迅猛的站点之一。亚马逊加拿大站每月吸引近1600万访客。其优势在于在加拿大,目前平台的竞争较小,商家容易出单。既然加拿大站有这么多优势,那产品上架需要有哪些检测认证合规方…

Rust操作MySQL

查询 本部分是对 「Rust入门系列」Rust 中使用 MySQL[1]的学习与记录 经常使用的时间处理库: chrono 流式查询使用: query_iter 输出到Vec使用: query 映射到结构体使用: query_map 获取单条数据使用: query_first 命名…

消息队列——rabbitmq的不同工作模式

目录 Work queues 工作队列模式 Pub/Sub 订阅模式 Routing路由模式 Topics通配符模式 工作模式总结 Work queues 工作队列模式 C1和C2属于竞争关系,一个消息只有一个消费者可以取到。 代码部分只需要用两个消费者进程监听同一个队里即可。 两个消费者呈现竞争关…

【机器学习】了解 AUC - ROC 曲线

一、说明 在机器学习中,性能测量是一项基本任务。因此,当涉及到分类问题时,我们可以依靠AUC - ROC曲线。当我们需要检查或可视化多类分类问题的性能时,我们使用AUC(曲线下面积)ROC(接收器工作特…

(八九)如何与InfluxDB交互InfluxDB HTTP API

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦! 第 8 章 前言:如何与InfluxDB交互 1、InfluxDB启动后,会向外提供一套HTTP API。外部程…

【机器学习】Feature Engineering and Polynomial Regression

Feature Engineering and Polynomial Regression 1. 多项式特征2. 选择特征3. 缩放特征4. 复杂函数附录 首先,导入所需的库: import numpy as np import matplotlib.pyplot as plt from lab_utils_multi import zscore_normalize_features, run_gradien…

级联选择框

文章目录 实现级联选择框效果图实现前端工具版本添加依赖main.js导入依赖级联选择框样式 后端数据库设计 实现级联选择框 效果图 实现 前端 工具版本 node.js v16.6.0vue3 级联选择框使用 Element-Plus 实现 添加依赖 在 package.json 添加依赖,并 npm i 导入…

YouIcons-矢量图标、LOGO和插图素材下载 48000000+

YouIcons是一个免费下载矢量图标、LOGO和插图素材下的网站,图标量高达千万级别,目前共收录48109736个,是世界领先的创意徽标logo社区,供创意人员下载、分享、成长和使用,是设计师获取灵感、发现并与全球设计师联系的社…

PostgreSQL构建时间

– PostgreSQL构建时间 select make_timestamp(2023,7,27,7,34,16);

C#——多线程之Task

C#——多线程之Task 前言一、Task是什么?二、各应用场景以及实例分析1.异步执行代码2.等待异步操作完成3.并行执行多个任务4.处理异常5.取消异步操作 三、一些其他问题1.WhenAll与WhenAny的区别 总结 前言 在代码编写过程中,经常会用到多线程的知识&…

三子棋(超详解+完整码源)

三子棋 前言一,游戏规则二,所需文件三,创建菜单四,游戏核心内容实现1.棋盘初始化1.棋盘展示3.玩家下棋4.电脑下棋5.游戏胜负判断6.game()函数内部具体实现 四,游戏运行实操 前言 C语言实现三子棋…

volley 学习笔记1--发送请求

一、概览 Volley 具有以下优势: 自动网络请求调度。 多个并发网络连接。 透明磁盘和具有标准 HTTP 缓存一致性的内存响应缓存。 支持请求优先级。 取消请求 API。您可以取消单个请求,也可以设置要取消的请求的时间段或范围。 可轻松自定义&#xff…

手机快充协议

高通:QC2.0、QC3.0、QC3.5、QC4.0、QC5.0、 FCP、SCP、AFC、SFCP、 MTKPE1.1/PE2.0/PE3.0、TYPEC、PD2.0、PD3.0/3.1、VOOC 支持 PD3.0/PD2.0 支持 QC3.0/QC2.0 支持 AFC 支持 FCP 支持 PE2.0/PE1.1 联发科的PE(Pump Express)/PE 支持 SFCP 在PP…

Stable Diffusion如何生成高质量的图-prompt写法介绍

文章目录 Stable Diffusion使用尝试下效果prompt的编写技巧prompt 和 negative promptPrompt格式Prompt规则细节优化Guidance Scale 总结 Stable Diffusion Stable Diffusion是一个开源的图像生成AI系统,由Anthropic公司开发。它基于 Transformer模型架构,可以通过文字描述生成…

学习笔记|大模型优质Prompt开发与应用课(二)|第五节:只需3步,优质Prompt秒变应用软件

原作者:依依│百度飞桨产品经理 一乔│飞桨开发者技术专家 分享内容 01:大模型应用简介 02:LLM应用开发范式 03: Al Studio大模型社区 04:AI对话类应用开发技巧 大模型技术爆发,各类应用产品涌现 文心产业级知识增强大模型 工作中的“超级助手”—…

一文谈谈Git

"And if forever lasts till now Alright" 为什么要有git? 想象一下,现如今你的老师同时叫你和张三,各自写一份下半年的学习计划交给他。 可是你的老师是一个极其"较真"的人,发现你俩写的学习计划太"水&…