1

ブルートフォースコサイン類似度よりもC ++でベクトルルックアップを実行する高速な方法はありますか?

ベクトルA (サイズ 100000x4)のセットでv (サイズ 1x4) に最も近いベクトルを見つけようとしています。検索/検索を行うためのより高速な方法を見つけることに興味があります。現在、新しいvごとにAに対するすべての余弦類似度計算を行っています。

また、ベクトルとは、 ではなく数学的なベクトルを意味しstd::vectorます。

私がすでに試したことの 1 つは、ルックアップの次元を 4D から 1D に減らすことです。これを達成するために、まず検索セット内のすべてのベクトルと参照ベクトルの間の角度のコサインを計算しました。次に、検索する各ベクトルについて、そのベクトルと同じ参照ベクトルとの間の角度のコサインを計算し、角度のすべてのコサインを (二分探索によって) 検索します。これはうまく機能するように見えますが、何らかの理由で力ずくの検索よりもパフォーマンスが低下します。

4

0 に答える 0