重磅!阿里開源自研高性能核心搜索引擎 Havenask(阿里開發(fā)的搜索引擎叫什么)
作者 | Tina
近期,阿里開源了自研的大規(guī)模分布式搜索引擎 Havenask(內(nèi)部代號 HA3)。
Havenask 是阿里巴巴內(nèi)部廣泛使用的大規(guī)模分布式檢索系統(tǒng),支持了淘寶、天貓、菜鳥、優(yōu)酷、高德、餓了么等在內(nèi)整個阿里的搜索業(yè)務,是過去十多年阿里在電商領域積累下來的核心競爭力產(chǎn)品。
大數(shù)據(jù)時代,數(shù)據(jù)檢索是必備的基礎能力。Havenask 支持千億級別數(shù)據(jù)實時檢索、百萬 QPS 查詢,百萬 TPS 高時效性寫入保障,毫秒級查詢延遲和數(shù)據(jù)更新。并具有良好的分布式架構(gòu)、極致的性能優(yōu)化,能夠?qū)崿F(xiàn)比現(xiàn)有技術方案更低的成本,幫助企業(yè)降本提效。
開源地址:http://github.com/alibaba/havenask
應用在阿里核心場景的搜索引擎
Havenask 主要是作為高性能 AI 智能引擎,應用在搜索、推薦和廣告等最典型的 AI 場景,比如淘寶、天貓 App 的首頁搜索框、首頁拍照搜索、首頁信息流、逛逛等。
在這個場景中,工程引擎需要支持好算法團隊快速 AB 實驗、快速優(yōu)化迭代,做到算法優(yōu)化分鐘級上線;并在機器資源可控,成本可接受前提下,支持算法團隊實驗千億級參數(shù)、超大模型,極致優(yōu)化算法效果。算法效果的好壞直接影響客戶體驗,影響用戶的留存、購買轉(zhuǎn)化、以及廣告效率。因此,Havenask 對電商業(yè)務的增長起關鍵作用。
以手機淘寶 App 首頁的拍立淘(拍照搜商品)為例,我們對感興趣的物品隨手拍一張照片,利用這張圖片,在拍立淘中搜索,淘寶就會從數(shù)十億商品中找到一樣或者類似的商品。這也是典型的向量計算場景。數(shù)十億數(shù)據(jù),高緯度向量計算,需要 Havenask 具備實時、高性能、低成本特性,才能實現(xiàn)實時無延遲的搜索體驗。
Havenask 另外一個應用場景是大數(shù)據(jù)檢索,比如淘寶 App 中訂單檢索、物流信息、優(yōu)惠券發(fā)放使用等,本質(zhì)上都是關鍵詞附加多條件的檢索。
傳統(tǒng)的做法是基于數(shù)據(jù)庫來實現(xiàn)。但在這種場景中,數(shù)據(jù)量至少是 TB、PB 規(guī)模。當數(shù)據(jù)規(guī)模特別大,高并發(fā)更新和查詢操作,會給數(shù)據(jù)庫性能帶來較大的瓶頸,成本上也會有比較大的挑戰(zhàn)。而基于 Havenask 搜索引擎技術,可實現(xiàn)千億級數(shù)據(jù),秒級時效性,毫秒級查詢延遲,為用戶提供順滑的用戶體驗,成本也遠低于數(shù)據(jù)庫方案。
以淘寶優(yōu)惠券為例,淘寶有數(shù)千萬商家、數(shù)億消費者,會有大量優(yōu)惠券的發(fā)放和使用,優(yōu)惠券的狀態(tài)變更也具有實效性,因此優(yōu)惠券的發(fā)放、使用和結(jié)算,要做到好的體驗,必須準確、實時。這不是一件容易的事情,對系統(tǒng)性能的要求非常高,成本也不會低。但依賴 Havenask,就能以低成本實現(xiàn)千億級數(shù)據(jù)查詢、秒級時效性、毫秒級查詢延遲。
阿里巴巴內(nèi)部十余年的沉淀
阿里電商搜索早期是以 Apache http server module 的形式實現(xiàn),支持淘寶、B2B 等子公司搜索業(yè)務,一個業(yè)務一個版本分支,與業(yè)務邏輯深度耦合。因此大概從 2009 年開始,阿里支持業(yè)務的同時,組建了一支小隊伍,從零開始重寫整個搜索系統(tǒng)。
2011 年,新系統(tǒng)完成研發(fā),替代雅虎老的網(wǎng)頁搜索系統(tǒng)完成上線,開啟自研大規(guī)模分布式高性能搜索引擎時代。當時內(nèi)部代號“問天引擎”(HA3),后來隨著組織架構(gòu)調(diào)整成為今天的 UC 神馬搜索。
上線自研引擎之后,經(jīng)過一兩年的時間,阿里將多個老引擎分支做了統(tǒng)一。問天引擎開始支持集團幾乎所有搜索業(yè)務,包括淘寶、天貓等,以統(tǒng)一代碼分支和產(chǎn)品化、規(guī)?;姆绞街С旨瘓F大量搜索業(yè)務。搜索技術團隊也統(tǒng)一到了一起,以極致性能優(yōu)化、分布式、高可用、運維友好為目標不斷打磨這個搜索產(chǎn)品。
2016 年,隨著深度學習技術廣泛應用,電商領域迎來信息流推薦的新機遇,也給工程引擎帶來新的挑戰(zhàn)。從這時開始,阿里在信息流推進的基礎上,將原來的 HA3 體系發(fā)展成了阿里集團里一個比較核心的 AI 引擎。
此后經(jīng)過不斷演進,Havenask 逐漸成為了阿里搜推廣場景的核心 AI 智能引擎。作為阿里搜推廣中臺的工程引擎體系 AI·OS (AI Online Serving) 的核心引擎,Havenask 支撐了阿里集團包括淘寶、天貓、菜鳥、高德、餓了么等業(yè)務在內(nèi)的數(shù)千搜索業(yè)務。
現(xiàn)在 Havenask 支持的業(yè)務,可以分為三類:
- 淘寶、天貓主搜最頭部業(yè)務,直接部署使用 Havenask 搜索引擎,引擎團隊貼身支持算法和業(yè)務,業(yè)務規(guī)模在個位數(shù);
- 淘寶、天貓主搜之外的其他核心搜索業(yè)務,比如高德、優(yōu)酷、餓了么、AE 等,由 Havenask 之上構(gòu)建的 OpenSearch PaaS 版平臺產(chǎn)品支持,業(yè)務方自助定制開發(fā)和運維,引擎團隊提供支持,業(yè)務規(guī)模在百級別;
- 其他中長尾業(yè)務,或者無深度定制需求的核心搜索業(yè)務,由云上云下統(tǒng)一的云產(chǎn)品 OpenSearch SaaS 版(底層基于 Havenask)支持,業(yè)務方自助使用,引擎團隊提供支持,業(yè)務規(guī)模在千級別。
搜索引擎的整體架構(gòu)
在 Havenask 中,一個較為完整的搜索服務由:在線系統(tǒng)、索引系統(tǒng)、管控系統(tǒng)、擴展插件等部分構(gòu)成,其中包括了查詢流、數(shù)據(jù)流、控制流。
- 在線系統(tǒng),包含了 QRS 和 Searcher。Qrs 負責接收用戶查詢、查詢分發(fā)、收集整合結(jié)果。Searcher 是搜索查詢的執(zhí)行者,負責倒排索引召回、統(tǒng)計、條件過濾、文檔打分、排序、摘要生成等。
- 索引系統(tǒng),負責索引數(shù)據(jù)生成的過程,還包含有文檔處理與索引構(gòu)建服務 Build Service。索引構(gòu)建分為三個步驟,對數(shù)據(jù)進行前置處理(例如分詞、向量計算等)、產(chǎn)出索引、合并索引文件的處理。
- 管控系統(tǒng),負責提供強大的運維能力。
- 擴展插件,提供插件機制,索引和在線流程各環(huán)節(jié)中,均可以通過開發(fā)插件,對原始文檔、查詢 Query、召回、算分、排序、摘要進行靈活修改。
Havenask 作為 AI 引擎,本質(zhì)上是為了幫助用戶更精準的找到滿足自己需求的商品,隨著機器學習技術的發(fā)展,大量深度學習算法應用在電商搜索引擎上,實現(xiàn)個性化和智能化。以電商搜索為例,用戶在搜索框中敲一個關鍵詞或者一句話,系統(tǒng)首先會試圖理解這個關鍵詞或者這句話(NLP 技術),并拆分成以關鍵詞、語義相關性、向量檢索等多路方式召回,召回一批商品,并對這批商品做粗排,粗排后更小的商品集合上再做精排,這其中各個環(huán)節(jié)會大量應用機器學習算法,來實現(xiàn)搜索的個性化和智能化,整個過程需要在毫秒級完成。
在這個流程中,搜索團隊在性能和迭代效率上做了大量優(yōu)化,關鍵有兩點:
海量物品的準確召回,是提升搜索質(zhì)量的第一個環(huán)節(jié),一般會通過多個系統(tǒng)的調(diào)用實現(xiàn)多路召回,調(diào)用鏈路復雜,召回延遲也可能較大。Havenask 支持在一個系統(tǒng)內(nèi)部利用全圖化思想,并發(fā)的完成關鍵詞、語義相關性、向量、個性化等多路召回,合并后直接返回最終召回結(jié)果,做到極小的召回延遲。
針對不同的召回特性,支持 O2O(offline 計算轉(zhuǎn) online,或 online 計算轉(zhuǎn) offline)優(yōu)化,支持數(shù)據(jù)、模型實時更新,并保證在離線的一致性。算法工程師可以運用更復雜的召回策略,在線上快速做各種 AB 實驗,實驗驗證效果后可以分鐘級全量上線。
另外,AI 引擎還支持豐富的插件拓展機制,和自研 CAVA 語言(類似于 JAVA 的語言)開發(fā),并能集成達摩院 Proxima 向量庫,支持多模態(tài)搜索。
阿里內(nèi)部大數(shù)據(jù)檢索場景的業(yè)務大部分基于 Havenask。大數(shù)據(jù)檢索場景最主要的特點是數(shù)據(jù)量大,數(shù)據(jù)更新或查詢并發(fā)度高,一般不需要強一致性,數(shù)據(jù)庫的強一致性和事務,在這個場景下反而會導致性能瓶頸和較高的成本。
在大數(shù)據(jù)檢索場景下,比較接近的對標軟件是 Elasticsearch。Elasticsearch 主要以日志分析和檢索、監(jiān)控、安全分析、企業(yè)文檔搜索、關鍵詞召回等為主要場景。Havenask 跟 Elasticsearch 也有一些差別:
- Havenask 數(shù)據(jù)更新時效性更好,大數(shù)據(jù)量數(shù)據(jù)寫入高并發(fā)情況下,數(shù)據(jù)更新后到可查詢到仍然可以做到 1 秒內(nèi)。ES 受架構(gòu)限制,雖然時效性可配置,但大數(shù)據(jù)量情況下,時效性配置到 1 秒在生產(chǎn)上基本不太可用。
- 更好的查詢性能。在同一數(shù)據(jù)集上的測試表明,Havenask 用更少的資源(內(nèi)存使用量少 20~50%),查詢 QPS 高 2~3 倍,查詢平均延遲低約 2/3。
因此,在大數(shù)據(jù)檢索場景下,可以說 Havenask 給業(yè)界提供了一個極致性價比的新技術方案。
Havenask 底層全部由 C 實現(xiàn),具備較完備的索引構(gòu)建、存儲和管理能力,具有較好的擴展性,既能使用單機的存儲媒介、開源的分布式存儲系統(tǒng),也能基于云存儲產(chǎn)品。
后續(xù)開源規(guī)劃
搜索引擎是非常復雜的一個系統(tǒng)。在數(shù)據(jù)規(guī)模極大的時候,要想達到很好的穩(wěn)定性、實時性,這是非常有挑戰(zhàn)的。對于一般規(guī)模企業(yè)來說,自研大規(guī)模分布式搜索引擎,一般需要投入幾十甚至上百人的團隊,耗時數(shù)年。Havenask 的開源,無疑也為有類似需要的企業(yè),節(jié)省了高昂的研發(fā)成本。開發(fā)者和企業(yè)也能借助 Havenask 在 AI 領域?qū)崿F(xiàn)更容易、更快速的創(chuàng)新。
而阿里也期望 Havenask 的開源能吸引更多優(yōu)秀的開發(fā)者參與共創(chuàng),共同推進國產(chǎn)化開源搜索引擎技術快速發(fā)展,普惠更多的開發(fā)者和企業(yè)。
阿里目前已經(jīng)基于 Apache 2.0 許可開源了 Havenask 核心代碼,并表示未來幾個月內(nèi)將發(fā)布正式版,保持與內(nèi)部主干代碼一致。后續(xù)有計劃逐步開源阿里 AI·OS 體系更多的系統(tǒng),下一個可能開源的系統(tǒng)是圖計算引擎(內(nèi)部代號 igraph)。