微軟剛剛宣布開源一項 Bing 搜索背后的關(guān)鍵算法——SPTAG,它使 Bing 能夠快速將搜索結(jié)果返回給用戶。
僅在幾年前,網(wǎng)絡(luò)搜索很簡單,用戶輸入幾個關(guān)鍵詞并瀏覽結(jié)果頁面。 今天,相同的用戶可能會在手機(jī)上拍照并將其放入搜索框中,或使用智能助手提問,而無需親自觸摸設(shè)備。他們也可能會輸入一個問題并期待一個實際的答復(fù),而不是一個可能答案的頁面列表。
SPTAG (Space Partition Tree And Graph)是分布式近似最近鄰域搜索(ANN)庫,為大規(guī)模矢量搜索場景提供高質(zhì)量矢量索引構(gòu)建、搜索和分布式在線服務(wù)工具包。利用 SPTAG 算法作為開源 Python 庫的核心,Bing 能夠在幾毫秒內(nèi)搜索數(shù)十億條信息。
當(dāng)然,矢量搜索本身并不是一個新想法,微軟所做的是將這一概念應(yīng)用于深度學(xué)習(xí)模型。
首先,團(tuán)隊采用預(yù)先訓(xùn)練的模型并將數(shù)據(jù)編碼到矢量中,其中每個矢量代表一個字或像素。然后使用新的 SPTAG 庫生成向量索引。隨著查詢的進(jìn)入,深度學(xué)習(xí)模型將該文本或圖像轉(zhuǎn)換為向量,該庫緊接著就能在索引中找到最相關(guān)的向量。
微軟表示,SPTAG 庫迄今已對超過 1500 億條數(shù)據(jù)進(jìn)行了編目,包括單個單詞、字符、網(wǎng)頁代碼段和完整查詢。
“Bing 每天處理數(shù)十億個文檔,現(xiàn)在的想法是將這些條目表示為向量,并搜索這個 1000 億以上向量的巨大索引,以便在 5 毫秒內(nèi)找到最相關(guān)的結(jié)果”。
Bing 團(tuán)隊期望開源 SPTAG 可用于構(gòu)建可識別基于音頻片段所說語言的應(yīng)用,或用于讓用戶拍攝植物照片并識別屬和物種的服務(wù)。
該庫現(xiàn)已開放使用,并提供構(gòu)建和搜索這些分布式矢量索引的所有工具。