向量搜索的簡明數學基礎

雖然 Milvus 開源向量搜索引擎(GitHub)能夠爲用戶隔離下面這些頭疼的細節,不過多學一點向量數據的知識老是沒壞處的。git

L2正則化(歸一化)

n 維原始向量空間:爲實數,爲非零天然數)github

原始向量:算法

向量 X 的 L2 範數(模長):app

歸一化後的向量:搜索引擎

其中每一維的 L2 正則化算法:3d

歸一化後,向量模長等於1:rest

計算向量類似度

近似最近鄰搜索(approximate nearest neighbor searching, ANNS)是目前針對向量搜索的主流思路。其核心理念是隻在原始向量空間的子集中進行計算和搜索,從而加快總體搜索速度。blog

假設搜索空間(即原始向量空間的子集):索引

內積(點積)

向量 A,B 的內積:get

餘弦類似度

向量 A,B 的餘弦類似度:

經過餘弦判斷類似度:數值越大,類似度越高。即

假設向量 A,B 歸一化後的向量分別是 A',B' ,則

所以,歸一化後,兩個向量之間的餘弦類似度不變。特別的,

所以,歸一化後,內積與餘弦類似度計算公式等價

歐氏距離

向量 A,B 的歐式距離:

經過歐氏距離判斷類似度:歐式距離越小,類似度越高。即

假設向量 A,B 通過歸一化,那麼進一步展開上面的公式:

所以,歐氏距離的平方與內積負相關。而歐式距離是非負實數,兩個非負實數之間的大小關係與他們自身平方之間的大小關係相同。

因此,向量歸一化後,針對同一個向量,在同等搜索空間的條件下,歐氏距離返回的前K個距離最近的向量結果集與內積返回的前K個類似度最大的向量結果集是等價的。

相關文章
相關標籤/搜索