什么是:嵌入?矢量数据库?矢量搜索?k-NN?ANN?

什么是:嵌入?矢量数据库?矢量搜索?k-NN?ANN?

一个简单的解释来揭示这些人工智能流行语。

你是否被一大堆的流行语淹没,不确定这些术语背后的魅力是什么?

  • 嵌入
  • 矢量数据库
  • 矢量搜索
  • k-NN和ANN

不用担心,我将帮助你了解上下文和基础知识,而不会让你陷入琐碎的细节中。如果你想了解更多关于机器学习的相关内容,可以阅读以下这些文章:
金融中的机器学习:利用随机森林掌握时间序列分类
每个机器学习工程师都应该知道的线性代数!!
2023年面向开发者的十大机器学习(ML)工具
CPU与GPU:哪个更适合机器学习,为什么?

你可以通过人工智能做一些很棒的事情,但有一个问题。如果你正在进行大规模自动化,你可能会发现人工智能速度缓慢或昂贵,或者两者兼而有之。

因此,关于矢量搜索、矢量数据库等的所有讨论都由此而来。上下文是对速度的需求,特别是当涉及到文本时(想想GPT和它的朋友)

上下文是需要速度的。

所以当你听到这些术语时,你听到的是数百万沮丧的工程师因这些东西的存在松了一口气,然后抱怨要让这一切变得更好,更便宜,更快。(同时忘记了我们能够在第一时间在如此庞大的数据上训练模型是多么神奇。啊,人类的状况。)

好的,那么这些术语到底是什么呢?这个名字的“矢量性”让人产生误解

这个名字的“矢量性”具有误导性。

嵌入:“把你的数据转换成人工智能可以处理的格式。”

嵌入

原始图像/文本/视频/音频等未针对模式查找(AI)算法进行优化。它们是为你的眼球和耳朵而优化的。它们之间没有相似或距离的概念,所以“giraffe”这个词与“fish”的区别就像它与“fist”的区别一样(第二个字母匹配)。但是你有一种感觉,fish可能更接近giraffe(它们都是动物),像这样表示它们的数据,同时节省空间,这将是很棒的。(当然,除非fist接近giraffe以满足你的需求,在这种情况下,你需要一个不同的嵌入。这里没有一刀切的答案。)

嵌入是解决方案。它们是一个总称,将一种技术应用于原始数据,从而增加距离的概念并降低数据的维度。

用Midjourney制作

在这里,你可以在家里尝试一下:把你浴室水槽下面藏着的两打几乎空了的大瓶乳液,把里面的东西移到三个小瓶子里,目的是把它们放在一起。你也可以嵌入。(但你是否明智地嵌入了?事实证明,这也是一门艺术。)

用Midjourney制作

或者,用工程师的话说,嵌入是将稀疏的高维信息投影到数据的绸密低维表示中,并对人工智能算法进行优化,使其能够很好地工作。(这些算法往往是迭代的,计算量大,所以稀疏的表示——基本上是一堆不必要的零或空白空间——使它们变得很慢。)

嵌入使事情比尝试使用原始数据更快,前提是它们制作得当。

矢量数据库:“一种跟踪嵌入和原始数据的方法。”

既然你有了嵌入,那么为什么不保留你从中制作嵌入的原始内容呢?好想法,将矢量数据库视为让你能够访问一堆猫的照片、推文、名人关系更新、十大惊人果汁快餐方法列表(为什么,你认为互联网是由什么组成的?),以及美丽的宝藏本身的“矢量化”表示,(我希望有一天外星文明发现我们所有的数据,并出于纯粹的自我保护而进化出一种幽默感。)

有效地对两者进行索引可以让你从原始输入跳转到矢量搜索。

矢量搜索:“比关键词搜索好。”

“你可以用矢量数据库做的事情。”

关键字搜索是一种蛮力方法。它是CTRL-F的大规模版本(如果你愿意,现在就尝试一下,看看本文中vctr的点击次数)。但“vctr”接近“vector”并且也与“algebra”和“database”接近(比接近“giraffe”更接近),所以如果这些东西也可以返回,而不仅仅是精确的文本匹配,那不是很棒吗?

哈!这就是矢量搜索的结果。为了实现这一点,你需要一种距离的表示方法。因此有了嵌入!如果你要搜索相似的东西,而不仅仅是精确的东西,你就需要表示距离。否则你怎么知道哪个接近哪个?

嵌入的复杂操作让你理解了距离的概念,而要返回你的优秀搜索结果,你需要一些最近邻的概念。这就是你如何享受搜索“cat”并返回“kitten”的成果的方式,而CTRL-F(关键字搜索)无法为你做到这一点。

最近邻:“就是听起来的样子。”

听起来就是这样。我为你们做了一个解释性视频,有例子,请欣赏:

请点击链接观看:https://youtu.be/HnCHdeyJNOM

视频链接:bit.ly/mfml_094

近似最近邻:“对于非常大的数据集,k-NN不是一个好主意,所以一些聪明的人为你修复了它。”

老实说,如果你理解k-NN和“近似”这个词的含义,那就没问题了。结果是它速度更快,可以处理大型数据集,并且会失去一些准确性,但这是值得的,因为k-NN在我们谈论的规模上是不可行的。(要了解原因,请参阅我关于“维度诅咒”的解释视频/博客文章。)

请点击链接观看:https://youtu.be/oTSj0TTDSPI

视频链接:bit.ly/mfml_095

想要博客文章版本吗?bit.ly/quaesita_cursedim

与一次性摄取所有数据不同,在ANN的幕后,采用了一些技巧来避免这种贪婪,其中包括使用超平面来迭代划分空间,但用Andrew Ng的不朽名言来说,“不要担心它。”

感谢阅读!你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Cassie Kozyrkov
翻译作者:文玲
美工编辑:过儿
校对审稿:Jason
原文链接:https://kozyrkov.medium.com/what-are-embeddings-vector-databases-vector-search-k-nn-ann-9eb35f715c94