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

語言: CN / TW / HK

小紅書,美團,微博,今日頭條……內容如海。作為網際網路時代的生活基礎設施,資訊流產品是多數應用軟體的一項必備屬性。

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

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

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 基金會的畢業專案,能夠管理大量非結構化資料集,在新葯發現、推薦系統、聊天機器人等方面具有廣泛的應用。