天天看點

阿裡開源自研高性能核心搜尋引擎 Havenask

作者:阿裡技術

去年12月,阿裡開源了自研的大規模分布式搜尋引擎 Havenask(内部代号 HA3)。

Havenask 是阿裡巴巴内部廣泛使用的大規模分布式檢索系統,支援了淘寶、天貓、菜鳥、優酷、高德、餓了麼等在内整個阿裡的搜尋業務,是過去十多年阿裡在電商領域積累下來的核心競争力産品。

大資料時代,資料檢索是必備的基礎能力。Havenask 支援千億級别資料實時檢索、百萬 QPS 查詢,百萬 TPS 高時效性寫入保障,毫秒級查詢延遲和資料更新。并具有良好的分布式架構、極緻的性能優化,能夠實作比現有技術方案更低的成本,幫助企業降本提效。

開源位址:

一、應用在阿裡核心場景的搜尋引擎

Havenask 主要是作為高性能 AI 智能引擎,應用在搜尋、推薦和廣告等最典型的 AI 場景,比如淘寶、天貓 App 的首頁搜尋框、首頁拍照搜尋、首頁資訊流、逛逛等。

在這個場景中,工程引擎需要支援好算法團隊快速 AB 實驗、快速優化疊代,做到算法優化分鐘級上線;并在機器資源可控,成本可接受前提下,支援算法團隊實驗千億級參數、超大模型,極緻優化算法效果。算法效果的好壞直接影響客戶體驗,影響使用者的留存、購買轉化、以及廣告效率。是以,Havenask 對電商業務的增長起關鍵作用。

以手機淘寶 App 首頁的拍立淘(拍照搜商品)為例,我們對感興趣的物品随手拍一張照片,利用這張圖檔,在拍立淘中搜尋,淘寶就會從數十億商品中找到一樣或者類似的商品。這也是典型的向量計算場景。數十億資料,高緯度向量計算,需要 Havenask 具備實時、高性能、低成本特性,才能實作實時無延遲的搜尋體驗。

Havenask 另外一個應用場景是大資料檢索,比如淘寶 App 中訂單檢索、物流資訊、優惠券發放使用等,本質上都是關鍵詞附加多條件的檢索。

傳統的做法是基于資料庫來實作。但在這種場景中,資料量至少是 TB、PB 規模。當資料規模特别大,高并發更新和查詢操作,會給資料庫性能帶來較大的瓶頸,成本上也會有比較大的挑戰。而基于 Havenask 搜尋引擎技術,可實作千億級資料,秒級時效性,毫秒級查詢延遲,為使用者提供順滑的使用者體驗,成本也遠低于資料庫方案。

以淘寶優惠券為例,淘寶有數千萬商家、數億消費者,會有大量優惠券的發放和使用,優惠券的狀态變更也具有實時性,是以優惠券的發放、使用和結算,要做到好的體驗,必須準确、實時。這不是一件容易的事情,對系統性能的要求非常高,成本也不會低。但依賴 Havenask,就能以低成本實作千億級資料查詢、秒級時效性、毫秒級查詢延遲。

二、阿裡巴巴内部十餘年的沉澱

阿裡開源自研高性能核心搜尋引擎 Havenask

阿裡電商搜尋早期是以 Apache http server module 的形式實作,支援淘寶、B2B 等子公司搜尋業務,一個業務一個版本分支,與業務邏輯深度耦合。是以大概從 2009 年開始,阿裡支援業務的同時,組建了一支小隊伍,從零開始重寫整個搜尋系統。

2011 年,新系統完成研發,替代雅虎老的網頁搜尋系統完成上線,開啟自研大規模分布式高性能搜尋引擎時代。當時内部代号“問天引擎”(HA3),後來随着組織架構調整成為今天的 UC 神馬搜尋。

上線自研引擎之後,經過一兩年的時間,阿裡将多個老引擎分支做了統一。問天引擎開始支援集團幾乎所有搜尋業務,包括淘寶、天貓等,以統一代碼分支和産品化、規模化的方式支援集團大量搜尋業務。搜尋技術團隊也統一到了一起,以極緻性能優化、分布式、高可用、運維友好為目标不斷打磨這個搜尋産品。

2016 年,随着深度學習技術廣泛應用,電商領域迎來資訊流推薦的新機遇,也給工程引擎帶來新的挑戰。從這時開始,阿裡在資訊流推進的基礎上,将原來的 HA3 體系發展成了阿裡集團裡一個比較核心的 AI 引擎。

阿裡開源自研高性能核心搜尋引擎 Havenask

此後經過不斷演進,Havenask 逐漸成為了阿裡搜推廣場景的核心 AI 智能引擎。作為阿裡搜推廣中台的工程引擎體系 AI·OS (AI Online Serving) 的核心引擎,Havenask 支撐了阿裡集團包括淘寶、天貓、菜鳥、高德、餓了麼等業務在内的數千搜尋業務。

現在 Havenask 支援的業務,可以分為三類:

1)淘寶、天貓主搜最頭部業務,直接部署使用 Havenask 搜尋引擎,引擎團隊貼身支援算法和業務,業務規模在個位數;

2)淘寶、天貓主搜之外的其他核心搜尋業務,比如高德、優酷、餓了麼、AE 等,由 Havenask 之上建構的 OpenSearch PaaS 版平台産品支援,業務方自助定制開發和運維,引擎團隊提供支援,業務規模在百級别;

3)其他中長尾業務,或者無深度定制需求的核心搜尋業務,由雲上雲下統一的雲産品 OpenSearch SaaS 版(底層基于 Havenask)支援,業務方自助使用,引擎團隊提供支援,業務規模在千級别。

三、搜尋引擎的整體架構

阿裡開源自研高性能核心搜尋引擎 Havenask

在 Havenask 中,一個較為完整的搜尋服務由:線上系統、索引系統、管控系統、擴充插件等部分構成,其中包括了查詢流、資料流、控制流。

1)線上系統,包含了 QRS 和 Searcher。Qrs 負責接收使用者查詢、查詢分發、收集整合結果。Searcher 是搜尋查詢的執行者,負責反向索引召回、統計、條件過濾、文檔打分、排序、摘要生成等。

2)索引系統,負責索引資料生成的過程,還包含有文檔處理與索引建構服務 Build Service。索引建構分為三個步驟,對資料進行前置處理(例如分詞、向量計算等)、産出索引、合并索引檔案的處理。

3)管控系統,負責提供強大的運維能力。

4)擴充插件,提供插件機制,索引和線上流程各環節中,均可以通過開發插件,對原始文檔、查詢 Query、召回、算分、排序、摘要進行靈活修改。

Havenask 作為 AI 引擎,本質上是為了幫助使用者更精準的找到滿足自己需求的商品,随着機器學習技術的發展,大量深度學習算法應用在電商搜尋引擎上,實作個性化和智能化。以電商搜尋為例,使用者在搜尋框中敲一個關鍵詞或者一句話,系統首先會試圖了解這個關鍵詞或者這句話(NLP 技術),并拆分成以關鍵詞、語義相關性、向量檢索等多路方式召回,召回一批商品,并對這批商品做粗排,粗排後更小的商品集合上再做精排,這其中各個環節會大量應用機器學習算法,來實作搜尋的個性化和智能化,整個過程需要在毫秒級完成。

在這個流程中,搜尋團隊在性能和疊代效率上做了大量優化,關鍵有兩點:

海量物品的準确召回,是提升搜尋品質的第一個環節,一般會通過多個系統的調用實作多路召回,調用鍊路複雜,召回延遲也可能較大。Havenask 支援在一個系統内部利用全圖化思想,并發的完成關鍵詞、語義相關性、向量、個性化等多路召回,合并後直接傳回最終召回結果,做到極小的召回延遲。

針對不同的召回特性,支援 O2O(offline 計算轉 online,或 online 計算轉 offline)優化,支援資料、模型實時更新,并保證在離線的一緻性。算法工程師可以運用更複雜的召回政策,線上上快速做各種 AB 實驗,實驗驗證效果後可以分鐘級全量上線。

另外,AI 引擎還支援豐富的插件拓展機制,和自研 CAVA 語言(類似于 JAVA 的語言)開發,并能內建達摩院 Proxima 向量庫,支援多模态搜尋。

阿裡内部大資料檢索場景的業務大部分基于 Havenask。大資料檢索場景最主要的特點是資料量大,資料更新或查詢并發度高,一般不需要強一緻性,資料庫的強一緻性和事務,在這個場景下反而會導緻性能瓶頸和較高的成本。

在大資料檢索場景下,比較接近的對标軟體是 Elasticsearch。Elasticsearch 主要以日志分析和檢索、監控、安全分析、企業文檔搜尋、關鍵詞召回等為主要場景。Havenask 跟 Elasticsearch 也有一些差别:

1)Havenask 資料更新時效性更好,大資料量資料寫入高并發情況下,資料更新後到可查詢到仍然可以做到 1 秒内。ES 受架構限制,雖然時效性可配置,但大資料量情況下,時效性配置到 1 秒在生産上基本不太可用。

2)更好的查詢性能。在同一資料集上的測試表明,Havenask 用更少的資源(記憶體使用量少 20~50%),查詢 QPS 高 2~3 倍,查詢平均延遲低約 2/3。

是以,在大資料檢索場景下,可以說 Havenask 給業界提供了一個極緻成本效益的新技術方案。

Havenask 底層全部由 C++ 實作,具備較完備的索引建構、存儲和管理能力,具有較好的擴充性,既能使用單機的存儲媒介、開源的分布式存儲系統,也能基于雲存儲産品。

四、後續開源規劃

搜尋引擎是非常複雜的一個系統。在資料規模極大的時候,要想達到很好的穩定性、實時性,這是非常有挑戰的。對于一般規模企業來說,自研大規模分布式搜尋引擎,一般需要投入幾十甚至上百人的團隊,耗時數年。Havenask 的開源,無疑也為有類似需要的企業,節省了高昂的研發成本。開發者和企業也能借助 Havenask 在 AI 領域實作更容易、更快速的創新。

而阿裡也期望 Havenask 的開源能吸引更多優秀的開發者參與共創,共同推進國産化開源搜尋引擎技術快速發展,普惠更多的開發者和企業。

阿裡目前已經基于 Apache 2.0 許可開源了 Havenask 核心代碼,未來幾個月内将釋出正式版,保持與内部主幹代碼一緻。後續有計劃逐漸開源阿裡 AI·OS 體系更多的系統,下一個可能開源的系統是線上預測引擎(内部代号RTP)或圖計算引擎(内部代号 igraph)。

阿裡開源自研高性能核心搜尋引擎 Havenask

繼續閱讀