翻译自 Vector Databases: What Devs Need to Know about How They Work 。
David Eastman 从概念上解释了向量数据库的工作原理,以及开发人员在查看不同供应商时应考虑的因素。
当我们今天说“数据库”时,我们可能谈论的是持久存储、关系表和 SQL。行和列,以及所有这些东西。许多概念旨在将数据打包到创建时有限的硬盘空间中。但是我们存储和搜索的大多数东西仍然只是数字或字符串。虽然处理字符串显然比处理数字复杂一些,但我们通常只需要一个完全匹配 - 或者可能是一个简单定义的模糊模式。
这篇文章着眼于人工智能给传统工具带来的略有不同的挑战。旅程始于之前通过创建莎士比亚十四行诗来模仿现代人工智能的尝试。
我们分析了一个语料库,试图预测单词,这是一个 ChatGPT 玩得非常完美的技巧。我们记录了单词之间出现的距离。我们使用这个距离数据根据单词与同一个单词的距离来猜测相似的单词。
所以,在上述情况下,如果我们的语料库中只有两句话,那么 “Beware” 之后的单词可能是 “the” 或 “of” 。但是,为什么我们不能产生 ChatGPT 级别的十四行诗?我的过程仅相当于几个维度的训练数据。没有完整的模型,也没有神经网络。
我们所做的是一个有限的尝试,将单词转化为数值,因此可以计算。这在很大程度上就是词嵌入。无论如何,我们最终得到一组数字——也就是一个向量。
在学校我们记得向量有大小和方向,所以它们可以用于绘制飞机的航线和速度,例如。但是一个向量可以有任意数量的数字或维度附加到它上面:
x=(x₁, x₂, x₃, … ,x₉)
x=(x₁, x₂, x₃, ... ,x₉)
显然,这不能再整齐地放置在物理空间中,尽管我欢迎任何碰巧正在阅读这篇文章的 n 维生物。
通过阅读大量文本和比较单词,可以创建向量来近似表示诸如单词的语义关系、定义、上下文等特征。例如,阅读奇幻文学,我可能会看到“国王”和“女王”的非常相似的用法:
当然,这里的值是任意的。但是我们可以开始考虑做向量数学,并了解如何使用这些向量进行导航:
King - Man + Woman = Queen
[5,3] - [2,1] + [3, 2] = [6,4]
关键是想象不仅仅是两个,而是一个具有许多维度的向量。Word2Vec 算法使用神经网络模型来学习这样的词关联,用于大量文本语料库。一旦训练,这样的模型可以检测到相似的单词:
给定足够大的数据集,Word2Vec 可以根据单词在文本中的出现对单词的含义进行强有力的估计。
使用神经网络训练方法,我们可以开始同时产生更多向量和提高模型预测下一个单词的能力。网络将语料库提供的“经验教训”转换为向量空间中的一个层,可靠地“预测”相似的示例。您可以训练目标词在一组词中的缺失情况,或者您可以训练目标词周围的词。
莎士比亚的普遍使用不应被视为精英对吟游诗人语言所有权的某种形式的验证。它只是一组非常大、准确记录的单词,我们都认为它们是一致的英语,并且在一个人的努力背景下。这很重要,因为每当他说“国王”或“王后”时,他都会保持相同的判断。如果他突然谈论棋子,那么 “Knight” 的背景将完全不同——无论多么有效。
任何大型数据集都可用于提取含义。例如,我们可以看看关于最新电影“蜘蛛侠:纵横宇宙”的推文,这部电影通常受到那些可能评论或看到它的人的好评:
“那是一部美丽的电影。” “有史以来最好的动画,对不起,但这是真的,只有两三部电影可以与这件艺术品相提并论。” “真的是巅峰。” "..是一部用爱制作的电影。每个场景,每一帧都是用爱制作的。 “我们全心全意地爱着这部电影。
但是您可以开始看到,千禧年的举止方式与 Z 世代的表达方式混合在一起,虽然都是有效的,但可能会造成一些问题。语料库需要足够大,以便数据内部会有自然的比较,这样一种语音就不会成为异常值。
显然,如果你想训练一个电影比较网站,这些是你想要查看的嵌入。
好的,现在我们对词嵌入在向量方面的概念有了一个认识。让我们概括为向量嵌入,想象使用句子而不是单个单词,或像素值来构建图像。只要我们能够从数据项转换为向量,相同的方法就适用。
总结:
- 模型有助于生成向量嵌入。
- 神经网络训练这些模型。
不足为奇,向量数据库处理向量嵌入。我们已经可以看出,处理向量不会与仅处理标量数量(即只表达价值或数量的正常数字)相同。
我们在传统的关系表中处理的查询通常精确匹配给定行中的值。向量数据库查询与生成嵌入的模型相同的空间。目的通常是找到相似的向量。所以最初,我们将生成的向量嵌入添加到数据库中。
由于结果不是精确匹配,准确性与速度之间存在自然的权衡。这也是个别供应商进行推销的地方。像传统数据库一样,也需要对向量进行索引以提高效率,并进行后处理以对结果施加顺序。
索引是一种提高效率和聚焦搜索相关属性的方法,削减大型向量。试图用一个更小的键准确表示一个大事物是计算机中的常见策略;在学习和 hashing 功能时,我们看到了这一点。
在处理代表其他事物的一堆数字时,理解“相似”的意思显然是一个问题。用于此的算法被称为相似度测量。即使在一个简单的向量中,比如飞机,您也必须决定两个朝着相同方向但相距一定距离的飞机是否比两个相距较近但目的地不同的飞机更相似或更不相似。
最后一个考虑因素是利用传统数据库的经验——有很多经验可以借鉴。因此,对于容错,向量数据库可以使用复制或分片,并在强一致性和最终一致性之间面临相同的问题。
常识表明,传统供应商和利基参与者将进行战略组合,以便这些方法可以可靠地应用于人工智能爆炸将产生的新数据。因此,向量数据库是另一种新的和奇怪的野兽,随着人工智能的继续被利用,它应该变得更加熟悉。