微軟開源了 Bing 中使用的向量搜尋庫

微軟公司 опубликовала 機器學習庫原始碼 SPTAG (空間劃分樹和圖)以及近似演算法的實現 最近鄰搜尋。 圖書館 發達 在微軟研究院的研究部門和搜尋技術開發中心(Microsoft Search Technology Center)。 實際上,Bing 搜尋引擎使用 SPTAG 根據搜尋查詢的上下文確定最相關的結果。 該程式碼是用 C++ 編寫的,並且 分發者 根據麻省理工學院的許可。 支援針對 Linux 和 Windows 進行建置。 Python 語言有一個綁定。

儘管在搜尋引擎中使用向量儲存的想法已經存在了相當長的時間,但在實踐中,它們的實現受到向量操作的高資源強度和可擴展性限制的阻礙。 將深度機器學習方法與近似最近鄰搜尋演算法相結合,使得向量系統的性能和可擴展性達到大型搜尋引擎可接受的水平成為可能。 例如,在 Bing 中,對於超過 150 億個向量的向量索引,取得最相關結果的時間在 8 毫秒以內。

該庫包括用於建立索引和組織向量搜尋的工具,以及一組用於維護涵蓋非常大的向量集合的分散式線上搜尋系統的工具。 提供 以下模組:用於索引的索引建構器、使用分佈在多個節點的叢集中的索引進行搜尋的搜尋器、用於在節點上執行處理程序的伺服器、用於將多個伺服器合併為一個的聚合器以及用於發送查詢的客戶端。 支援將新向量包含到索引中以及動態刪除向量。

該庫意味著集合中處理和呈現的資料以相關向量的形式格式化,可以根據 歐幾裡得 (L2) 或 餘弦 距離搜尋查詢傳回與原始向量之間的距離最小的向量。 SPTAG提供了兩種組織向量空間的方法: SPTAG-KDT(K維樹()和 相對鄰域圖)和 SPTAG-BKT(k 均值樹(k均值樹 和相對鄰域圖)。 第一種方法在使用索引時需要較少的資源,第二種方法對於非常大的向量集合展示了更高的搜尋結果準確性。

同時,向量搜尋不僅限於文本,還可以應用於多媒體資訊和圖像,以及自動生成建議的系統。 例如,基於PyTorch 框架的原型之一實現了一個向量系統,用於基於圖像中對象的相似性進行搜索,該系統使用來自多個參考集合的數據構建,其中包含動物、貓和狗的圖像,這些影像被轉換為向量集。 當接收到輸入影像進行搜尋時,使用機器學習模型將其轉換為向量,基於該向量,使用 SPTAG 演算法從索引中選擇最相似的向量,並將相關影像作為結果傳回。

來源: opennet.ru

添加評論