带有向量的语义搜索
已发表: 2022-11-01如果您一直在关注搜索的最新消息,那么您可能听说过矢量搜索。
而且您甚至可能已经开始深入研究该主题以尝试更多地了解它,结果却使另一端感到困惑。 你不是把数学留在大学里了吗?
构建矢量搜索很困难。 理解它不一定是。
并且理解矢量搜索不是未来,混合搜索是——这同样重要。
什么是向量?
当我们在机器学习的背景下谈论向量时,我们的意思是:向量是代表某物的一组数字。
那东西可以是一个图像、一个词或几乎任何东西。
当然,问题是为什么这些向量有用以及它们是如何创建的。
让我们先看看这些向量是从哪里来的。 简短的回答:机器学习。
Jay Alammar 可能是关于什么是向量的最好的博客文章。
不过,总而言之,机器学习模型输入项目(让我们假设从这里开始只是单词)并尝试找出预测其他内容的最佳公式。
例如,您可能有一个模型,其中包含“蜜蜂”一词,它试图找出最佳公式,以准确预测“蜜蜂”在与“昆虫”和“黄蜂”相似的上下文中出现。
一旦该模型具有最佳公式,它就可以将“蜜蜂”一词转换为一组数字,恰好与“昆虫”和“黄蜂”的一组数字相似。
为什么向量很强大
由于这个原因,向量非常强大:像 Generative Pre-trained Transformer 3 (GPT-3) 或来自 Google 的大型语言模型考虑了数十亿个单词和句子,因此它们可以开始建立这些连接并变得非常智能。
很容易理解为什么人们如此兴奋地将这种智能应用于搜索。
甚至有人说矢量搜索将取代我们几十年来熟知和喜爱的关键字搜索。
但问题是,矢量搜索并没有完全取代关键字搜索。 认为关键字搜索不会保留巨大的价值会给新的和闪亮的东西带来太多的乐观。
矢量搜索和关键字搜索各有各的长处,当它们一起工作时效果最好。
长尾查询的向量搜索
如果您从事搜索工作,您可能对查询的长尾非常熟悉。
这个概念由 Chris Anderson 推广用于描述数字内容,它表示有些项目(用于搜索查询)比其他所有项目都更受欢迎,但仍有许多个人项目仍然是某人想要的。
搜索也是如此。
一些查询(也称为“头部”查询)每个都被搜索了很多,但绝大多数查询很少被搜索 - 甚至可能只是一次。
数字会因站点而异,但在平均站点上,大约三分之一的总搜索量可能来自几十个查询,而近一半的搜索量来自最受欢迎的 1,000 个之外的查询。
长尾查询往往更长,甚至可能是自然语言查询。
我的公司 Algolia 的研究表明,75% 的查询是两个或更少的单词。 90% 的查询是四个或更少的单词。 然后,要获得 99% 的查询,您需要 13 个单词!
但是,它们并不总是很长,它们可能只是晦涩难懂。 对于女性时尚网站,“紫红色连衣裙”可能是一个长尾查询,因为人们不会经常询问这种颜色。 “Wristlet”同样可能是一个很少见的查询,即使该网站确实有手镯出售。
矢量搜索通常适用于长尾查询。 它可以理解腕带与手镯类似,即使没有设置同义词,手镯也会浮出水面。 当有人搜索紫红色的东西时,它可以显示粉红色或紫色的连衣裙。
向量搜索甚至可以很好地处理那些长的或自然的语言查询。 “让我的饮料保持凉爽的东西”将在经过精心调整的矢量搜索中调出冰箱,而通过关键字搜索,您最好希望文本出现在产品描述中的某个位置。
换句话说,向量搜索增加了搜索结果的召回率,或者找到了多少结果。
矢量搜索的工作原理
向量搜索通过获取我们上面描述的那些数字组并让向量搜索引擎问:“如果我将这些数字组绘制成线,哪一个最接近?”
将其概念化的一种简单方法是考虑只有两个数字的组。 组 [1,2] 将比组 [2,500] 更接近组 [2,2]。
(当然,由于向量中有几十个数字,它们被“绘制”在几十个维度上,这并不容易可视化。)
这种确定相似度的方法非常强大,因为表示“医生”和“医学”等词的向量将被“绘制”得比“医生”和“摇滚”更相似。
矢量搜索的缺点
但是,矢量搜索也有缺点。
首先是成本。 我们上面讨论的所有机器学习? 它有成本。
一方面,存储向量比存储基于关键字的搜索索引更昂贵。 在大多数情况下,搜索这些向量也比关键字搜索慢。

现在,散列可以缓解这两个问题。
是的,我们正在引入更多技术概念,但这是另一个相当容易理解基础知识的概念。
散列执行一系列步骤将一些信息(如字符串或数字)转换为数字,这比原始信息占用更少的内存。
事实证明,我们还可以使用散列来减少向量的大小,同时仍然保持向量的有用性:它们匹配概念上相似项目的能力。
通过使用散列,我们可以更快地进行向量搜索,并使向量总体上使用更少的空间。
细节是高度技术性的,但重要的是理解这是可能的。
关键字搜索的持续有用性
这并不意味着关键字搜索仍然没有用! 关键字搜索通常比向量搜索快。
此外,更容易理解为什么结果按原样排列。
以查询“texas”、“tejano”和“state”为例作为潜在的词匹配。 显然,如果我们从纯关键字搜索的角度来看比较,“tejano”更接近。 然而,这并不容易判断,这将更接近矢量搜索方法。
基于关键字的搜索将“texas”理解为更类似于“tejano”,因为它使用基于文本的方法来查找记录。
如果记录包含的单词与查询中的单词完全相同(或在一定程度上的差异以解决拼写错误),则该记录被认为是相关的并返回结果集中。
换句话说,关键字搜索侧重于搜索结果的精确度,或者确保返回的记录是相关的,即使它们较少。
关键字搜索有利于头部查询
出于这个原因,关键字搜索对于头部查询表现得非常好:那些最受欢迎的查询。
头部查询往往更短,也更容易优化。 这意味着,无论出于何种原因,如果某个关键字与记录中的正确文本不匹配,它通常会通过分析被捕获,您可以添加同义词。
因为关键字搜索最适合头部查询,而向量搜索最适合长尾查询,所以两者配合使用效果最好。
这称为混合搜索。
混合搜索是指搜索引擎对单个查询同时使用关键字和向量搜索并正确排列记录,无论是哪种搜索方法带来的。
跨搜索源排名记录
对来自两个不同来源的记录进行排名并不容易。
就其本质而言,这两种方法具有不同的评分记录方式。
矢量搜索会返回一个分数,而一些基于关键字的引擎不会。 即使基于关键字的引擎确实返回了一个分数,也不能保证这两个分数是相等的。
如果分数不相等,那么您不能说关键字引擎的 0.8 分比向量引擎的 0.79 分更相关。
另一种选择是通过矢量引擎或关键字引擎的评分来运行所有结果。
这具有从矢量引擎获得额外召回的好处,但也有一些缺点。 来自矢量引擎的那些额外召回的结果不会被评为与关键字分数相关,否则它们已经出现在结果集中。
您也可以通过矢量评分运行所有结果(关键字或其他结果),但这既慢又昂贵。
向量搜索作为后备
这就是为什么一些搜索引擎甚至不尝试将两者混合,而是总是首先显示关键字结果,然后是矢量结果。
这里的想法是,如果搜索返回零个或几个结果,那么您可以回退到向量结果。
请记住,向量搜索旨在提高召回率或找到更多结果,因此它可能会找到关键字搜索没有的相关结果。
这是一个不错的权宜之计,但不是真正的混合搜索的未来。
真正的混合搜索将通过创建在不同来源之间具有可比性的分数来对同一结果集中的多个不同搜索来源进行排名。
今天有很多关于这种方法的研究,但很少有人做得很好并公开提供他们的引擎。
那么这对你的意义是什么?
现在,您能做的最好的事情可能就是坐下来了解行业中发生的最新情况。
向量和基于关键字的混合搜索将在未来几年推出,它将可供没有数据科学团队的人使用。
同时,关键字搜索仍然很有价值,只有在以后引入矢量搜索时才会得到改进。
更多资源:
- 语义搜索:它是如何工作的以及它是为谁服务的
- NLP 和 NLU 如何用于语义搜索
- 搜索引擎如何工作
特色图片:pluie_r/Shutterstock
