從用戶到開發者,日本獨角獸SmartNews的社區二三事

小紅書,美團,微博,今日頭條……內容如海。作爲互聯網時代的生活基礎設施,信息流產品是多數應用軟件的一項必備屬性。

然而,你是否曾爲重複的微博段子、類似的熱點文章、雷同的商品推薦而心煩?若某一款內容資訊產品持續一天推薦重複內容,既會影響用戶的信息獲取,又無形中浪費了很多推薦位(如果這些位置放的是廣告,那就是赤裸裸的收入損失啊!)

對於一款信息流產品,如何找到一款數據處理利器嵌入產品開發之中,實現有效的新聞去重、新聞/廣告召回,是打造多元豐饒的信息體驗的重中之重。

SmartNews,這家估值 20 億美元、目前美國新聞類應用程序中估值最高的公司,曾是 Milvus 向量數據庫的使用者,後成爲 Milvus 數據庫的共同開發者。從單向調用到共同開發,讓我們一起聆聽他們的經驗之談吧!

SmartNews 總部位於日本東京,成立於 2012 年,在日本市場一直高居新聞類 App 的榜首,在美國市場則是粘性最強的新聞類 App。根據 App Annie 的統計,截止於 2021 年 7 月,SmartNews 用戶月均瀏覽時間在所有新聞類應用程序中位列第一,超過 AppleNews 和 Google News 的總和。

伴隨着用戶量和用戶粘性的快速提升,SmartNews 在廣告推薦的工程和算法領域面臨更多的挑戰。 例如:海量離散特徵在大規模機器學習系統中的使用、通過向量相似度搜索來加速非結構化數據檢索等。

2021 年初,SmartNews 動態廣告算法團隊向 AI 基礎設施團隊提出了廣告優化搜索召回功能的需求。彼時,工程團隊都是自行封裝 Faiss,開發維護挑戰較大,加上整個 SmartNews 正在擴大和深化機器學習的應用,於是 AI 基礎架構團隊決定提供通用的向量管理和近鄰搜索服務。

經過近兩個月的調研選型,有多種語言 SDK、支持在線持續更新、已經擁有上千家企業用戶的開源向量數據庫 Milvus 進入了 AI 基礎設施工程師 Shu 的視野。

以向量計算實現廣告推薦

在 SmartNew 的廣告業務中,爲了解決海量的用戶和千萬級的動態廣告(Dynamic Ads)的匹配和推薦,向量數據庫 Milvus 成了 SmartNews 的非結構化數據處理神劍——通過將兩種無法比較的數據映射成計算機能識別的向量、實現對他們的計算,連接用戶與商品。今年第二季度,Shu 在 SmartNews 公司內 Kubernetes 集羣上完成 Milvus 1.0(單機/集羣、CPU/GPU)的部署。

Milvus 部署教程(文檔地址:https://milvus.io/docs)

Milvus 1.0 上線後的第一個使用案例是由廣告團隊提出的廣告向量召回項目,初期約百萬級的向量數據,嚴格要求 P99 latency < 10ms。經過反覆的試驗和基準測試(benchmark),Shu 和業務團隊一起選定了速度更快的 Milvus 1.0 單機模式。

6 月上旬,Shu 和算法團隊同學將 Milvus 數據庫應用於更多的相關業務場景,在 SmartNews 嘗試了線上實時更新數據/索引並進行聚合。

截止目前,Milvus 數據庫在 SmartNews 的數個案例場景中被使用,包括廣告推薦等。

從單向調用到共同開發「表重命名」

技術的躍遷要求每一個開發者必須充分利用他人的知識、經驗和額外的智力來解決不斷出現的新問題。

對 Milvus 數據庫逐漸上手之後,Shu 等 SmartNews 開發人員又發現了動態重加載(hot reload)、向量自動過期(item TTL)、同 ID 覆蓋向量(item update/replace)等新的向量數據庫相關功能需求。與此同時,Milvus 社區中有不少用戶存在類似需求,SmartNews AI 基礎設施負責人 Dennis Zhao 就決定向社區貢獻動態重加載相關功能,由 SmartNews 的工程團隊主要負責設計開發參與設計。Dennis Zhao 表示:“SmartNews 團隊一直受益於 Milvus 社區,如果一個功能既是我們產品亟需的又是對社區夥伴們有用的,我們很樂意去實現和分享。

動態重加載是一種在調試過程中進行代碼編輯的功能。有了這一功能,開發者們不需要在代碼斷點停止或者重啓應用程序,就可以對代碼進行修改,並立即看到代碼修改的效果。

7月下旬,SmartNews 工程師 Yusup 向 Milvus 社區提出用表重命名(collection alias)方式實現動態重加載功能的設計方案。所謂表重命名,即開發者對特定數據倉庫的訴求是內容可變的情況下名字不變,就好像一個櫃子的編號和位置長期不變、櫃子中拿進拿出的東西總是在隨時間而變化。

由於模型的不斷迭代以及動態廣告的不斷更新,SmartNews 需要每天更新近一億向量,而當時 Milvus 數據庫的更新機制是先刪除再插入,以這種機制更新上億向量,往往需要耗費數小時。重新創建新的集合存放更新的向量,就會涉及到新舊集合的切換,不停爲新的內容打造新的「櫃子」。如何讓切換更加平滑, 對上層業務沒有感知,表重命名就顯得很必要了。

從這一需求出發, Milvus 社區的工程師着手幫助 SmartNews 團隊理解 Milvus 的架構,一個半月後,Milvus 社區收到並接受了由 Yusup 提交的動態重加載完整實現代碼,併發布在了不久後上線的 Milvus 2.0 rc7 中。目前,由 AI 基礎設施團隊牽頭,SmartNews 正進行着Milvus 2.0的部署,並開始遷移現有的 Milvus 1.0 項目。

Milvus CLI 文檔:create alias

Milvus 數據庫支持表重命名之後,企業進行線上業務切換時更加平滑,尤其對於一些用戶請求量比較大的互聯網企業,極大地提升了用戶體驗。負責溝通 SmartNews 的 Milvus 社區數據工程師小龍說:“表重命名來源於 SmartNews 的實際業務需求,也由 SmartNews 開發實現,讓 Milvus 真正做到了從用戶中來,到用戶中去,期待未來 Milvus 能有更多這樣的貢獻者,共同建設更繁榮的社區。”

“目前 SmartNews 已經在一些廣告業務中採用 Milvus 數據庫作爲離線計算的向量數據庫。伴隨着 Milvus 2.0 正式版的臨近,特別是動態重加載功能的實現,SmartNews 的工程團隊期待未來更多的業務場景中,藉助 Milvus 數據庫構建更加實時、可靠的系統和服務。” Dennis Zhao 說道。

彩蛋

作爲開源社區的一員,SmartNews 對於技術人才的開源項目也頗爲關注哦 💗

在交流過程中,SmartNews AI 基礎設施負責人 Dennis Zhao 表示,如果候選人的 GitHub 中的項目代碼優雅、註釋清晰且堅持維護,這對候選人是大大的加分項。目前 SmartNews 北京和上海辦公室的算法/後端/ 前端等熱招崗位持續招聘中,對打造信息流產品感興趣的開發小夥伴,歡迎關注公衆號「SmartNews CN」或點擊下方鏈接瞭解更多詳情!

熱招職位|SmartNews中國區研發中心持續招聘中


Zilliz 以重新定義數據科學爲願景,致力於打造一家全球領先的開源技術創新公司,並通過開源和雲原生解決方案爲企業解鎖非結構化數據的隱藏價值。

Zilliz 構建了 Milvus 向量數據庫,以加快下一代數據平臺的發展。Milvus 數據庫是 LF AI & Data 基金會的畢業項目,能夠管理大量非結構化數據集,在新藥發現、推薦系統、聊天機器人等方面具有廣泛的應用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章