返回数据探索

发现需要语境

Luis Cossío

·

2024年1月31日

Discovery needs context

发现需要语境

当克里斯托弗·哥伦布和他的船员扬帆穿越大西洋时,他们并不是在寻找美洲。他们寻找的是通往印度的新航线,因为他们坚信地球是圆的。他们对新大陆一无所知,但由于他们向西航行,偶然发现了它。

他们无法达到他们的目标,因为地理条件不允许,但一旦他们意识到这不是印度,他们就将其称为他们王冠的“新发现”。如果我们考虑到水手航行需要水,那么我们可以建立一个语境,即水上是积极的,陆地是消极的。一旦水手的搜索被陆地阻止,他们就无法继续前进,于是找到了一条新路线。在我们探索Qdrant的新功能:发现搜索时,请记住目标语境这两个概念。

在1.7版本中,Qdrant 发布了这个新颖的API,它允许您只依靠纯向量来限制搜索执行的空间。这是一个强大的工具,让您以更受控的方式探索向量空间。它可以用于查找不一定最接近目标但仍与搜索相关的点。

您已经可以通过使用payload过滤器来选择哪些点可用于搜索。这本身就非常灵活,因为它允许我们构建复杂的过滤器,确定性地仅显示满足其条件的点。然而,与每个点关联的payload是任意的,无法告诉我们它们在向量空间中的位置。换句话说,过滤掉不相关的点可以看作是创建一个掩码,而不是在空间中创建超平面——在正向量和负向量之间进行切割。

理解语境

这就是向量语境可以发挥作用的地方。我们将语境定义为一个对列表。每对都由一个正向量和一个负向量组成。通过语境,我们可以在向量空间中定义超平面,这些超平面总是偏向正向量而非负向量。这有效地划分了执行搜索的空间。空间划分后,我们就需要一个目标来返回与该目标更相似的点。

Discovery search visualization

虽然正向量和负向量可能让人想到使用推荐接口,但在语境的情况下,它们需要以正负配对的方式组合。这受到机器学习概念三元组损失的启发,其中您有三个向量:一个锚点、一个正样本和一个负样本。三元组损失是对锚点与正样本比负样本更接近程度的评估,以便通过“移动”正样本和负样本点来尝试获得更好的评估,从而实现学习。然而,在发现过程中,我们将正向量和负向量视为静态点,并在整个数据集中搜索更符合这一特征的“锚点”或结果候选点。

Triplet loss

发现搜索,那么,由两个主要输入组成

  • 目标 (target):主要关注点
  • 语境 (context):我们刚才定义的正负点对。

然而,这并不是唯一的使用方式。您也可以提供语境,这将调用语境搜索。当您想探索由语境定义的空间,但没有明确的目标时,这很有用。不过别急,我们稍后↪会讲到这一点。

现实世界的发现搜索应用

我们来讨论第一种情况:带目标的语境。

为了理解为什么这很有用,我们来看一个现实世界的例子:使用像CLIP这样的多模态编码器,通过文本图像来搜索图像。CLIP是一个神经网络,可以将图像和文本嵌入到同一个向量空间中。这意味着您可以使用文本查询或图像查询来搜索图像。对于这个例子,我们将通过在文本输入框中输入“burger”,来重新使用我们的食物推荐演示

Burger text input in food demo

这基本上是最近邻搜索,虽然技术上我们只有汉堡的图片,但其中一张是汉堡的标志表示。然而,我们正在寻找实际的汉堡。让我们尝试通过将其添加为负例来排除这样的图片

Try to exclude burger drawing

等一下,刚刚发生了什么?这些图片和汉堡完全没关系,但它们仍然出现在首批结果中。演示坏了吗?

事实证明,多模态编码器的工作方式可能与您预期的不同。图像和文本被嵌入到同一个空间中,但它们之间不一定彼此接近。这意味着我们可以将这种分布的心理模型创建为两个独立的平面,一个用于图像,一个用于文本。

Mental model of CLIP embeddings

这就是发现搜索的优势所在,因为它允许我们在使用来自另一模式(文本)的目标时,考虑同一种模式(图像)来限制空间。

Cross-modal search with discovery

发现搜索还允许我们通过添加更多的语境对来持续向搜索引擎提供反馈,这样我们就可以不断地细化搜索,直到找到我们想要的东西。

另一个直观的例子:假设您正在寻找鱼肉披萨,但披萨的名字可能令人困惑,所以您只需输入“披萨”,然后指定偏好鱼肉而非肉类。发现搜索将允许您使用这些输入来推荐鱼肉披萨……即使它不叫鱼肉披萨!

Simple discovery example

现在,第二种情况:只提供语境。

是否曾在您最喜欢的音乐流媒体服务中陷入相同的推荐?这可能是由于陷入了相似性泡沫。随着用户输入变得越来越复杂,多样性变得稀缺,系统也变得更难强制推荐不同的内容。

Context vs recommendation search

语境搜索通过将搜索的焦点从单一的点移开来解决这个问题。相反,它从向量空间中的某个区域内随机选择点。这种搜索受三元组损失的影响最大,因为可以将分数视为“一个点与负向量相比,与正向量的接近程度如何?”。如果它更接近正向量,那么它的分数将为零,就像同一区域内的其他任何点一样。但如果它位于负向量一侧,则距离越远,分配的分数就越负。

Context search visualization

在高维空间中创建复杂的偏好变得更容易,因为您只需向搜索添加更多的语境对。通过这种方式,您应该能够充分限制空间,以便从仅由输入语境创建的、针对每次搜索的“类别”中选择点。

A more complex context search

这样,您可以提供令人耳目一新的推荐,同时仍通过提供正负反馈或甚至尝试不同的对组合来保持控制。

主要收获

  • 发现搜索是在向量空间中进行受控探索的强大工具。由正负向量组成的语境限制了搜索空间,而目标则引导搜索。
  • 实际应用包括多模态搜索、多样化推荐以及语境驱动的探索。
  • 准备好了解其背后的数学原理以及如何使用它了吗?请查阅文档
此页面是否有用?

感谢您的反馈! 🙏

很抱歉听到这个消息。😔 您可以在 GitHub 上编辑此页面,或者创建一个 GitHub issue。