帶有向量的語義搜索
已發表: 2022-11-01如果您一直在關注搜索的最新消息,那麼您可能聽說過矢量搜索。
而且您甚至可能已經開始深入研究該主題以嘗試更多地了解它,結果卻使另一端感到困惑。 你不是把數學留在大學裡了嗎?
構建矢量搜索很困難。 理解它不一定是。
並且理解矢量搜索不是未來,混合搜索是——這同樣重要。
什麼是向量?
當我們在機器學習的背景下談論向量時,我們的意思是:向量是代表某物的一組數字。
那東西可以是一個圖像、一個詞或幾乎任何東西。
當然,問題是為什麼這些向量有用以及它們是如何創建的。
讓我們先看看這些向量是從哪裡來的。 簡短的回答:機器學習。
Jay Alammar 可能是關於什麼是向量的最好的博客文章。
不過,總而言之,機器學習模型輸入項目(讓我們假設從這裡開始只是單詞)並嘗試找出預測其他內容的最佳公式。
例如,您可能有一個模型,其中包含“蜜蜂”一詞,它試圖找出最佳公式,以準確預測“蜜蜂”在與“昆蟲”和“黃蜂”相似的上下文中出現。
一旦該模型具有最佳公式,它就可以將“蜜蜂”一詞轉換為一組數字,恰好與“昆蟲”和“黃蜂”的一組數字相似。
為什麼向量很強大
由於這個原因,向量非常強大:像 Generative Pre-trained Transformer 3 (GPT-3) 或來自 Google 的大型語言模型考慮了數十億個單詞和句子,因此它們可以開始建立這些連接並變得非常智能。
很容易理解為什麼人們如此興奮地將這種智能應用於搜索。
甚至有人說矢量搜索將取代我們幾十年來熟知和喜愛的關鍵字搜索。
但問題是,矢量搜索並沒有完全取代關鍵字搜索。 認為關鍵字搜索不會保留巨大的價值會給新的和閃亮的東西帶來太多的樂觀。
矢量搜索和關鍵字搜索各有各的長處,當它們一起工作時效果最好。
長尾查詢的向量搜索
如果您從事搜索工作,您可能對查詢的長尾非常熟悉。
這個概念由 Chris Anderson 推廣用於描述數字內容,它表示有些項目(用於搜索查詢)比其他所有項目都更受歡迎,但仍有許多個人項目仍然是某人想要的。
搜索也是如此。
一些查詢(也稱為“頭部”查詢)每個都被搜索了很多,但絕大多數查詢很少被搜索 - 甚至可能只是一次。
數字會因站點而異,但在平均站點上,大約三分之一的總搜索量可能來自幾十個查詢,而近一半的搜索量來自最受歡迎的 1,000 個之外的查詢。
長尾查詢往往更長,甚至可能是自然語言查詢。
我的公司 Algolia 的研究表明,75% 的查詢是兩個或更少的單詞。 90% 的查詢是四個或更少的單詞。 然後,要獲得 99% 的查詢,您需要 13 個單詞!
但是,它們並不總是很長,它們可能只是晦澀難懂。 對於女性時尚網站,“紫紅色連衣裙”可能是一個長尾查詢,因為人們不會經常詢問這種顏色。 “Wristlet”同樣可能是一個很少見的查詢,即使該網站確實有手鐲出售。
矢量搜索通常適用於長尾查詢。 它可以理解腕帶與手鐲類似,即使沒有設置同義詞,手鐲也會浮出水面。 當有人搜索紫紅色的東西時,它可以顯示粉紅色或紫色的連衣裙。
向量搜索甚至可以很好地處理那些長的或自然的語言查詢。 “讓我的飲料保持涼爽的東西”將在經過精心調整的矢量搜索中調出冰箱,而通過關鍵字搜索,您最好希望文本出現在產品描述中的某個位置。
換句話說,向量搜索增加了搜索結果的召回率,或者找到了多少結果。
矢量搜索的工作原理
向量搜索通過獲取我們上面描述的那些數字組並讓向量搜索引擎問:“如果我將這些數字組繪製成線,哪一個最接近?”
將其概念化的一種簡單方法是考慮只有兩個數字的組。 組 [1,2] 將比組 [2,500] 更接近組 [2,2]。
(當然,由於向量中有幾十個數字,它們被“繪製”在幾十個維度上,這並不容易可視化。)
這種確定相似度的方法非常強大,因為表示“醫生”和“醫學”等詞的向量將被“繪製”得比“醫生”和“搖滾”更相似。
矢量搜索的缺點
但是,矢量搜索也有缺點。
首先是成本。 我們上面討論的所有機器學習? 它有成本。
一方面,存儲向量比存儲基於關鍵字的搜索索引更昂貴。 在大多數情況下,搜索這些向量也比關鍵字搜索慢。

現在,散列可以緩解這兩個問題。
是的,我們正在引入更多技術概念,但這是另一個相當容易理解基礎知識的概念。
散列執行一系列步驟將一些信息(如字符串或數字)轉換為數字,這比原始信息佔用更少的內存。
事實證明,我們還可以使用散列來減少向量的大小,同時仍然保持向量的有用性:它們匹配概念上相似項目的能力。
通過使用散列,我們可以更快地進行向量搜索,並使向量總體上使用更少的空間。
細節是高度技術性的,但重要的是理解這是可能的。
關鍵字搜索的持續有用性
這並不意味著關鍵字搜索仍然沒有用! 關鍵字搜索通常比向量搜索快。
此外,更容易理解為什麼結果按原樣排列。
以查詢“texas”、“tejano”和“state”為例作為潛在的詞匹配。 顯然,如果我們從純關鍵字搜索的角度來看比較,“tejano”更接近。 然而,這並不容易判斷,這將更接近矢量搜索方法。
基於關鍵字的搜索將“texas”理解為更類似於“tejano”,因為它使用基於文本的方法來查找記錄。
如果記錄包含的單詞與查詢中的單詞完全相同(或在一定程度上的差異以解決拼寫錯誤),則該記錄被認為是相關的並返回結果集中。
換句話說,關鍵字搜索側重於搜索結果的精確度,或者確保返回的記錄是相關的,即使它們較少。
關鍵字搜索有利於頭部查詢
出於這個原因,關鍵字搜索對於頭部查詢表現得非常好:那些最受歡迎的查詢。
頭部查詢往往更短,也更容易優化。 這意味著,無論出於何種原因,如果某個關鍵字與記錄中的正確文本不匹配,它通常會通過分析被捕獲,您可以添加同義詞。
因為關鍵字搜索最適合頭部查詢,而向量搜索最適合長尾查詢,所以兩者配合使用效果最好。
這稱為混合搜索。
混合搜索是指搜索引擎對單個查詢同時使用關鍵字和向量搜索並正確排列記錄,無論是哪種搜索方法帶來的。
跨搜索源排名記錄
對來自兩個不同來源的記錄進行排名並不容易。
就其本質而言,這兩種方法具有不同的評分記錄方式。
矢量搜索會返回一個分數,而一些基於關鍵字的引擎不會。 即使基於關鍵字的引擎確實返回了一個分數,也不能保證這兩個分數是相等的。
如果分數不相等,那麼您不能說關鍵字引擎的 0.8 分比向量引擎的 0.79 分更相關。
另一種選擇是通過矢量引擎或關鍵字引擎的評分來運行所有結果。
這具有從矢量引擎獲得額外召回的好處,但也有一些缺點。 來自矢量引擎的那些額外召回的結果不會被評為與關鍵字分數相關,否則它們已經出現在結果集中。
您也可以通過矢量評分運行所有結果(關鍵字或其他結果),但這既慢又昂貴。
向量搜索作為後備
這就是為什麼一些搜索引擎甚至不嘗試將兩者混合,而是總是首先顯示關鍵字結果,然後是矢量結果。
這裡的想法是,如果搜索返回零個或幾個結果,那麼您可以回退到向量結果。
請記住,向量搜索旨在提高召回率或找到更多結果,因此它可能會找到關鍵字搜索沒有的相關結果。
這是一個不錯的權宜之計,但不是真正的混合搜索的未來。
真正的混合搜索將通過創建在不同來源之間具有可比性的分數來對同一結果集中的多個不同搜索來源進行排名。
今天有很多關於這種方法的研究,但很少有人做得很好並公開提供他們的引擎。
那麼這對你的意義是什麼?
現在,您能做的最好的事情可能就是坐下來了解行業中發生的最新情況。
向量和基於關鍵字的混合搜索將在未來幾年推出,它將可供沒有數據科學團隊的人使用。
同時,關鍵字搜索仍然很有價值,只有在以後引入矢量搜索時才會得到改進。
更多資源:
- 語義搜索:它是如何工作的以及它是為誰服務的
- NLP 和 NLU 如何用於語義搜索
- 搜索引擎如何工作
特色圖片:pluie_r/Shutterstock
