全部產品
Search
文件中心

OpenSearch:向量介紹

更新時間:Jul 23, 2024

本文將介紹向量檢索版支援的各類向量模型。

向量檢索介紹

在當前的資訊化時代裡,資訊的模態在文本的基礎上,增加了圖片、視頻、音頻等多模態資訊;多模態能呈現文本無法表達的資訊,如:顏色、形狀、運動動態、聲音、空間關係……

image.png

同時各個領域資訊的模態也有大幅度的變化:

image.png

資訊在這種多模態的情境下被分為兩大類(結構化和非結構化):

image

非結構化的資料往往讓電腦難以理解,傳統的文本分詞檢索情境以無法滿足各個領域的搜尋需求,而向量完美的解決了這個難題。

那麼什麼是向量,又如何通過向量檢索呢?

將物理世界產生的非結構化資料,轉化為結構化的多維向量,用這些向量標識實體和實體間的關係。

再計算向量之間距離,通常情況下,距離越近、相似性越高,召回相似性最高的TOP結果,完成檢索。

image.png

向量檢索演算法

linear

linear演算法會線性計算所有向量資料。

適用情境:100%召回率

劣勢:巨量資料量下效率較低、資源(CPU、記憶體)消耗較嚴重

聚類演算法

量化聚類(Quantized Clustering)

介紹

image.png

量化聚類(Quantized Clustering)是阿里巴巴開發的基於kmeans聚類的向量檢索演算法。先利用向量文檔聚類n個中心點,並將每個文檔歸屬到離其最近的中心點下,進而構建出n個倒排鏈。n個中心點及其對應的倒排鏈就是QC索引的主要內容。檢索時,請求先和部分中心點進行距離計算,並從中挑選距離最近的多個中心點,接著,請求和中心點對應倒排鏈下的文檔進行距離計算,最終返回距離最近的topk個文檔結果。

特別的, QC支援了數值fp16/int8量化功能,可以減少索引大小、提升檢索效能。但是,對召回效果可能有損。使用者可以根據業務需要,權衡是否需要配置。

QC演算法適用即時資料情境,亦或者有GPU資源,且對延遲要求較高的情境。

參數調優

效能對比

image.png

HNSW(Hierarchical Navigable Small World)

介紹

image.png

HNSW(Hierarchical Navigable Small World)是基於近鄰圖的向量檢索演算法。先構建一個近鄰圖, 距離接近的向量之間建立邊關係。向量以及其近鄰資訊就是HNSW索引的主要內容。檢索時,從入口節點開始遍曆,計算請求和入口節點的所有近鄰距離,選擇距離最近的近鄰,作為下一步的遍曆節點,進而迭代遊走,直至收斂並停止檢索。收斂指的是當前檢索節點的所有近鄰中沒有比已經檢索到的最近節點更接近請求。

為了加速收斂,借鑒跳錶查詢的邏輯,HNSW構建了一個多層近鄰圖結構。檢索從上而下進行。每一層圖的檢索邏輯大致相同(第0層邏輯有些差異),在第k層圖遍曆收斂到一個節點後,會將其作為第k-1層的入口節點並繼續在第k-1層遍曆。相較於第k-1層圖, 第k層圖包含的節點更加稀疏,節點之間的距離更長,這使得第k層圖遊走時的步長更大,迭代更快。

參數調優

向量距離類型

向量檢索的過程是通過計算向量之間的相似性,最後返回相似性較高的TopK向量集合。在這個過程中,向量之間的相似性,通過計算距離來得到。通常,分數越小表示,向量距離越近;分數越大,表示距離越遠。

image.png

在不同向量空間中,定義了不同的距離度量(Distance Metrics)方式來計算這些向量的距離。在向量檢索版中支援的度量方式有:歐式度量、內積度量。

歐式距離(SquareEuclidean)

image.png

歐式距離是指兩個向量之間的平面上距離。作為一種最常用的距離度量方式,歐式距離可以通過計算兩個向量之間的座標差的平方和的平方根來得到。歐式距離越小,表示兩個向量越相似。歐式距離度量的計算公式如下:

image.png

內積距離(InnerProduct)

image.png

內積是指兩個向量之間的點積或數量積,內積結果越大,代表越相似。它可以通過計算兩個向量對應位置上的元素相乘,並對乘積結果求和得到。內積度量常見於搜尋推薦情境,通常而言,是否使用內積測量取決於演算法是否使用內積模型。內積度量的計算公式如下:

image.png

向量檢索演算法的選擇

向量檢索演算法

優勢

劣勢

情境

量化聚類(Quantized Clustering)

CPU、記憶體資源佔用較低

  • 召回率較HNSW低

  • 查詢速度較HNSW慢

適用於億層級資料集,對資料準確性和查詢延遲要求不是非常高的情境

HNSW(Hierarchical Navigable Small World)

召回率高、查詢速度快

CPU、記憶體資源佔用較高

適用於千萬層級資料集,並且對資料準確性和查詢延遲有嚴格要求的情境

linear

召回率100%

  • 查詢速度慢

  • CPU、記憶體資源佔用較上述兩種演算法多

適用於萬層級的資料