有没有比蛮力余弦相似度更快的方法在 C++ 中执行向量查找?
我试图在一组向量A(大小 100000x4)中找到最接近v (大小 1x4)的向量。我有兴趣找到一种更快的方法来进行查找/搜索。目前,我正在为每个新的v对A进行所有余弦相似度计算。
另外,向量是指数学向量,而不是std::vector
.
我已经尝试过的一件事是将查找的维度从 4D 减少到 1D。为此,我首先计算了搜索集中所有向量与某个参考向量之间夹角的余弦值。然后,对于要查找的每个向量,我计算它与同一参考向量之间的角度的余弦,然后通过角度的所有余弦进行查找(通过二进制搜索)。这看起来应该很好用,但由于某种原因,它的性能比蛮力搜索差。