Weaviate的KNN分类算法背后的逻辑是什么?



我正在使用Weaviate的KNN引擎来执行多类分类,但我不理解:

  • 它使用的是哪种KNN
  • 是使用简单投票还是距离加权投票
  • 它使用余弦距离吗
  • 它是用一种方法来寻找可能的邻居,还是用蛮力来寻找所有真正的最近邻居
  • 什么是输赢组,它们是如何用于预测新向量的类别的

好问题,让我逐一回答:

它使用的是哪种KNN?

我不完全确定你说的";什么样的";,但我认为这将通过剩下的问题得到回答。需要记住的一点是,Weaviate的kNN分类利用了特定类的现有向量索引。因此,根据您是使用自己的矢量还是使用模型进行矢量化,输入参数将决定分类的运行方式。例如,如果您在名为descriptiontext属性上使用text2vec模块,则这些描述将用于查找最接近的匹配项。

是使用简单投票还是距离加权投票?

v1.8.0开始,这只是简单的投票。距离加权投票可能是未来的一个不错的补充。

它使用余弦距离吗?

如第一个答案中所述,您为类选择的任何设置也将适用于分类。截至v1.8.0,Weaviate通常使用余弦距离,但计划在不久的将来添加其他距离度量。

它是使用一种方法来寻找可能的邻居,还是使用蛮力来寻找所有真正的最近邻居?

与上面类似,它遵循类的设置。通常使用HNSW近似索引。您可以在类级别上调整其参数。

什么是输赢组,它们如何用于预测新向量的类别?

它们是一种工具,可以深入了解为什么分类会产生这样的结果。获胜的小组是";组";投票率最高的结果,因此导致该项目被归类为该项目。丢失的组(可以有多个(是可替换的"分组";组";没有获得最高票数。了解每一组可能是调整k以用于未来分类的一个很好的见解。

最新更新