在C ++中执行矢量查找比使用强力余弦相似性有更快的方法吗?
我试图在一组向量 A (大小为100000x4)中找到最接近 v (大小为1x4)的向量。我有兴趣找到一种更快捷的方式来进行查找/搜索。目前,我为每个新 v 执行 A 的所有余弦相似度计算。
另外,通过向量,我的意思是数学向量,而不是std::vector
。
我尝试过的一件事就是将查询的尺寸从4D缩小到1D。为了实现这一点,我首先计算了搜索集中所有向量与一些参考向量之间角度的余弦。然后,对于要查找的每个矢量,我计算它与相同参考矢量之间的角度的余弦,然后通过角度的所有余弦查找(通过二分搜索)。这似乎应该运作良好,但由于某种原因,它比蛮力搜索表现更差。