Weaviate的KNN分类算法背后的逻辑是啥?
Posted
技术标签:
【中文标题】Weaviate的KNN分类算法背后的逻辑是啥?【英文标题】:What is the logic behind Weaviate's KNN classification algorithm?Weaviate的KNN分类算法背后的逻辑是什么? 【发布时间】:2022-01-12 03:26:32 【问题描述】:我正在使用 Weaviate 的 KNN 引擎进行多类分类,但我不明白:
它使用的是哪种 KNN? 是使用简单投票还是距离加权投票? 是否使用余弦距离? 它是使用一种方法来查找可能的邻居还是使用蛮力来查找所有真正的最近邻居? 什么是赢/输组,它们如何用于预测新向量的类别?【问题讨论】:
【参考方案1】:好问题,让我一一回答:
它使用什么样的 KNN?
我不完全确定您所说的“哪种”是什么意思,但我认为这将通过剩下的问题得到解答。要记住的一件事是,Weaviate 的 kNN 分类利用了特定类的现有向量索引。因此,根据您是带上自己的向量还是使用模型进行向量化,输入参数将决定分类运行的内容。例如,如果您在名称为 description
的 text
属性上使用 text2vec
模块,那么这些描述将用于查找最接近的匹配项。
是使用简单投票还是距离加权投票?
从v1.8.0
开始,这是简单的投票。距离加权投票可能是未来的一个很好的补充。
是否使用余弦距离?
如第一个答案中所述,您为班级选择的任何设置也将应用于分类。截至v1.8.0
,Weaviate 通常使用余弦距离,但计划在不久的将来添加other distance metrics。
它是使用一种方法来寻找可能的邻居还是使用蛮力来寻找所有真正的最近邻居?
与上面类似,它遵循类的设置。通常它使用HNSW approximate index。您可以在类级别上调整其参数。
什么是赢/输组,它们如何用于预测新向量的类别?
它们是一种工具,可以帮助您深入了解为什么分类会产生这样的结果。获胜组是具有最高票数的结果“组”,因此导致该项目被归类为此类。失败的组(可以有多个)是没有获得最高投票的替代“组”。了解每个组可能是调整 k
以进行未来分类的好方法。
【讨论】:
以上是关于Weaviate的KNN分类算法背后的逻辑是啥?的主要内容,如果未能解决你的问题,请参考以下文章