緣起

上個月參加雲棲大會見識了阿里搜索推薦十年的歷程。除了前沿的演算法技術包括iGraph圖引擎、強化學習、遷移學習、向量化模型等等,還介紹了阿里強大的搜索推薦平臺AI·OS。AI·OS平臺包含了一系列的組件包括TPP推薦業務平臺、RTP深度學習預測引擎、HA3搜索召回引擎、DII推薦召回引擎、iGraph圖查詢引擎等。平臺水平擴展性強,支撐了所有的搜索推薦服務,提升了運維、數據、工程和演算法同學的效率。阿里搜索推薦做到現在用了十年,技術上的高投入取得了高回報,搜索推薦創造的商業價值佔了電商GMV的絕大部分。

臨淵羨魚,不如退而結網。搜索推薦我們做了兩年多和大廠的差距是很大的,好在一直在追趕還沒達到望塵莫及的地步。借著大廠學到的經驗介紹一下我廠搜索推薦技術上的過去、現在和將來的規劃。

過去

跑起來,效果好。起步階段人員有限大家都是草臺班子,先把戲臺搭起來讓系統跑起來。相對於搜索系統,推薦系統不僅要提供符合預期的功能服務,還要帶來價值提升,否則推薦產品的生命力不會長久。 即便是草臺班子也有公司強大的數據平臺作為支撐,數據平臺積累了大量日誌數據存放在Hive中。

藉助Spark我們實現了協同過濾、關聯推薦、用戶畫像的計算,並將數據存放於Solr中。Solr不僅作為搜索引擎,也承擔了很大一部分的存儲工作包括Item信息,User信息。這一階段除了常用的推薦演算法,更多地靠分析業務場景的特點,設計合適規則策略來提升效果。Spark程序選擇什麼語言呢Java?Python?Scala?最後我們選擇了Scala,Scala是Spark的原生開發語言文檔相對豐富,同時Scala函數式編程語法簡潔優雅。

現在

快速接入,穩定性,更優演算法。隨著搜索推薦效果逐漸顯現,越來越多的業務要接入進來。一個一個的對接成本太高,我們開發了返利智能推薦引擎,簡化對接流程,提升對接效率。

早期Tomcat服務在Solr機器上,Tomcat調用本地的Solr服務,現在我們將Tomcat和Solr進行解耦,拆分為兩個集羣提升了高可用。搜索引擎索引任務之前主要使用Solr自帶的Dataimport,建立本地任務。隨著Solr集羣機器的增加對資料庫的壓力增大,我們開發了索引管理任務,統一接管數據的獲取和分發以及索引的創建。同時為了減輕Solr請求的壓力,把用戶畫像數據存放到Hbase上加Redis熱點緩存提升性能。藉助於TensorFlow、Sklearn、Xgboost,在排序環節中嘗試了LR、DNN、Wide&Deep演算法。

將來

化繁為簡,平臺化,精細化。功能越來越多,需要把零散在系統中的常用功能,抽離出來形成獨立的服務甚至是平臺。可以預見的會有數據存儲、監控平臺、索引管理、特徵處理、離線訓練、日誌收集、召回服務、排序服務、重排序服務等等。平臺內部之間的通信,包括搜索推薦對外提供服務的形式微服務可以作為參考和規範。

目前的推薦依然做的還比較粗獷,統一各個業務線的類目、品牌、行為重新打造更細緻的用戶畫像。同時推薦系統的實時反饋有進一步升級的空間,針對新用戶的冷啟動多臂老虎機演算法或許是個不錯的選擇。更前沿的演算法DeepFM、LightGBM等等都值得一試。推薦的準確性、多樣性、驚喜性,智能互動式搜索,多目標多場景的優化會是長期的方向。

小結

架構是迭代演進出來的,不是照搬設計出來的,沒有完美的架構只有合適的架構。最後提一下我們的技術棧

編程語言:Java,PHP,Scala,Python

數據存儲:Solr,Kafka,Redis,Hive,Hbase,Mysql 機器學習框架:Spark、TensorFlow、Sklearn、Xgboost

推薦閱讀:

查看原文 >>
相關文章