快速建立語意搜尋
語義搜尋是幫助您的客戶或員工尋找正確的產品或資訊的絕佳工具。它甚至可以浮現難以索引的資訊,以獲得更好的結果。儘管如此,如果您的語意方法無法快速部署運作,它們也不會為您帶來任何好處。當系統花時間回應客戶或員工的查詢時,客戶或員工是不會坐視不理的,而且在同一時間,可能還有成千上萬的其他查詢正在被擷取。
如何讓語意搜尋變得快速?緩慢的語意搜尋並不能解決問題。
幸運的是,這正是 Lucidworks 喜歡解決的問題。我們最近測試了一個中等規模的叢集 - 詳情請繼續閱讀 - 其結果是對超過 100 萬個文件的集合達到了 1500 RPS(每秒請求量),平均回應時間約為 40 毫秒。這樣的速度真是驚人。
實施語意搜尋
為了實現快如閃電的機器學習魔力,Lucidworks 使用語意向量搜尋方法實現了語意搜尋。其中有兩個關鍵部分。
第一部分:機器學習模型
首先,您需要一種方法將文字編碼成數字向量。文字可以是產品說明、使用者搜尋查詢、問題,甚至是問題的答案。訓練語意搜尋模型是為了對文字進行編碼,以便將語義上與其他文字相似的文字編碼成在數字上彼此「接近」的向量。這個編碼步驟需要非常快速,才能支援每秒上千個或更多可能的客戶搜尋或使用者查詢。
第二部分:向量搜尋引擎
其次,您需要一種方法來快速找到與客戶搜尋或使用者查詢最匹配的內容。模型會將文字編碼成數值向量。從那時開始,您需要將其與目錄或問題與答案清單中的所有數值向量進行比較,以找出最佳匹配點 - 與查詢向量「最接近」的向量。為此,您需要一個向量引擎,能夠有效且以極快的速度處理所有這些資訊。這個引擎可能包含數百萬個向量,而您實際上只想要與您的查詢最匹配的二十個向量。當然,它還需要每秒處理上千個這樣的查詢。
為了解決這些挑戰,我們在Fusion 5.3 版本中加入了向量搜尋引擎Milvus。Milvus 是開放原始碼軟體,而且速度很快。Milvus 使用 FAISS(Facebook AI 類似性搜尋),這項技術與 Facebook 用於機器學習的技術相同。需要時,它可以在GPU 上以更快的速度執行。當 Fusion 5.3 (或更高版本) 安裝了機器學習元件時,Milvus 會自動安裝為該元件的一部分,因此您可以輕鬆開啟所有這些功能。
指定集合中向量的大小(在建立集合時指定)取決於產生這些向量的模型。例如,一個指定的集合可以儲存從編碼(透過模型)產品目錄中所有產品描述所產生的向量。如果沒有像 Milvus 這樣的向量搜尋引擎,就無法在整個向量空間中進行相似性搜尋。因此,相似性搜尋必須限制於向量空間中預先選取的候選向量(例如 500),而且效能較慢、結果品質較低。Milvus 可以在多個向量集合中儲存數以千億計的向量,以確保搜尋的速度和結果的相關性。
使用語意搜尋
既然我們已經稍微瞭解 Milvus 可能如此重要的原因,現在讓我們回到語意搜尋的工作流程。語意搜尋分為三個階段。在第一階段,機器學習模型被載入和/或訓練。之後,資料會被索引到 Milvus 和 Solr 中。最後一個階段是查詢階段,也就是實際進行搜尋的階段。以下我們將專注於最後兩個階段。
索引至 Milvus
Lucidworks-1.png
如上圖所示,查詢階段的開始方式與索引階段類似,只是輸入的是查詢而非文件。對於每個查詢:
- 查詢會傳送至Smart Answers索引管道。
- 然後將查詢傳送至 ML 模型。
- ML 模型會傳回一個數值向量 (由查詢加密而成)。同樣地,模型類型決定向量的大小。
- 向量會傳送給 Milvus,然後由 Milvus 決定在指定的 Milvus 資料集中,哪些向量最符合所提供的向量。
- Milvus 會傳回一個唯一 ID 和距離清單,對應於在步驟四中決定的向量。
- 包含這些 ID 和距離的查詢會傳送至 Solr。
- 然後,Solr 會返回與這些 ID 相關的文件的有序清單。
規模測試
為了證明我們的語意搜尋流程能以客戶所需的效率執行,我們在 Google Cloud Platform 上使用 Gatling 腳本執行了規模測試,使用的是具有八個 ML 模型複本、八個查詢服務複本和一個 Milvus 實例的 Fusion 叢集。測試使用 Milvus FLAT 和 HNSW 索引執行。FLAT 索引具有 100% 的召回率,但效率較低 - 除非資料集很小。HNSW (Hierarchical Small World Graph) 索引仍然有高品質的結果,而且在較大的資料集上有較佳的效能。
讓我們從最近執行的範例中跳到一些數字:
Lucidworks-2.png
Lucidworks-3.png
Lucidworks-4.png
開始使用
Smart Answers管道的設計易於使用。Lucidworks 具有預先訓練好的模型,這些模型很容易部署,而且一般都有很好的結果 - 雖然在訓練您自己的模型與預先訓練好的模型的同時,也會提供最好的結果。請立即與我們聯絡,瞭解如何在您的搜尋工具中實施這些措施,以提供更有效、更令人愉悅的結果。
本部落格轉載自: https://lucidworks.com/post/how-to-build-fast-semantic-search/?utm_campaign=Oktopost-Blog+Posts&utm_medium=organic_social&utm_source=linkedin
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word