我正在使用 Weaviate 的 KNN 引擎来执行多类分类,但我不明白:
- 它使用什么样的 KNN?
- 是使用简单投票还是距离加权投票?
- 它使用余弦距离吗?
- 它是使用一种方法来查找可能的邻居还是使用蛮力来查找所有真正的最近邻居?
- 什么是赢/输组,它们如何用于预测新向量的类别?
我正在使用 Weaviate 的 KNN 引擎来执行多类分类,但我不明白:
好问题,让我一一回答:
它使用什么样的 KNN?
我不完全确定您所说的“什么样的”是什么意思,但我认为这将通过剩下的问题来回答。要记住的一件事是,Weaviate 的 kNN 分类利用了特定类的现有向量索引。因此,根据您是带上自己的向量还是使用模型进行向量化,输入参数将决定分类运行的内容。例如,如果您在名称为 的属性text2vec
上使用模块,那么这些描述将用于查找最接近的匹配项。text
description
是使用简单投票还是距离加权投票?
因为v1.8.0
它是简单的投票。距离加权投票可能是未来的一个很好的补充。
它使用余弦距离吗?
如第一个答案中所述,您为班级选择的任何设置也将适用于分类。Weaviatev1.8.0
通常使用余弦距离,但计划在不久的将来添加其他距离度量。
它是使用一种方法来查找可能的邻居还是使用蛮力来查找所有真正的最近邻居?
与上面类似,它遵循类的设置。通常它使用HNSW 近似指数。您可以在类级别上调整其参数。
什么是赢/输组,它们如何用于预测新向量的类别?
它们是一种工具,可以深入了解为什么分类会产生这种结果。获胜组是具有最高票数的结果“组”,因此导致该项目被归类为此类。失败的组(可以有多个)是没有获得最高投票的替代“组”。了解每个组可能是调整k
未来分类的好方法。