🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
  • Home
  • Blog
  • 使用語意向量搜尋推薦內容

使用語意向量搜尋推薦內容

  • Scenarios
June 08, 2021
milvus

71%的美國人從社交平台獲得新聞推薦,個性化內容已迅速成為新媒體的發現方式。無論人們是搜尋特定主題,或是與推薦內容互動,使用者所看到的一切都經過演算法最佳化,以提高點閱率 (CTR)、參與度和相關性。搜狐是一家在納斯達克上市的中國在線媒體、視頻、搜索和遊戲集團。它利用由Zilliz 建立的開放源碼向量資料庫Milvus,在其新聞應用程式內建立語意向量搜尋引擎。本文將解釋該公司如何利用使用者資料,隨時間微調個人化內容推薦,改善使用者體驗與參與。

搜狐新聞的用戶資料是根據瀏覽記錄建立的,並在用戶搜尋新聞內容和與新聞內容互動時進行調整。搜狐的推薦系統使用語義向量搜尋來尋找相關的新聞文章。該系統的工作原理是根據瀏覽歷史識別一組每個用戶預計會感興趣的標籤。然後它會快速搜尋相關文章,並按受歡迎程度(以平均 CTR 衡量)將結果排序,再提供給使用者。

單是《紐約時報》每天就發表230 篇內容,由此可見有效的推薦系統必須能夠處理大量的新內容。大量新聞的擷取需要毫秒級的相似性搜尋,以及每小時將標籤與新內容相匹配。搜狐之所以選擇 Milvus,是因為它能有效且精確地處理大量資料集、減少搜尋過程中的記憶體使用量,並支援高效能部署。

瞭解新聞推薦系統的工作流程

搜狐基於語義向量搜尋的內容推薦依賴於深度結構化語義模型 (DSSM),該模型使用兩個神經網路將用戶查詢和新聞文章表示為向量。該模型會計算兩個語意向量的余弦相似度,然後將最相似的一批新聞發送至推薦候選池。接下來,新聞文章會根據其預估的點擊率進行排序,點擊率預估最高的新聞文章會顯示給使用者。

使用 BERT-as-service 將新聞文章編碼為語意向量

為了將新聞文章編碼為語意向量,系統使用BERT-as-service工具。在使用此模型時,如果任何一篇內容的字數超過 512,在嵌入過程中就會發生資訊遺失。為了幫助克服這個問題,系統會先擷取摘要並將其編碼成 768 維的語意向量。接著從每篇新聞文章中抽取兩個最相關的主題,並根據主題 ID 識別出對應的預先訓練主題向量 (200-dimensions)。接著,將主題向量拼接到從文章摘要中抽取的 768 維語義向量中,形成 968 維語義向量。

新內容不斷透過 Kafta 傳入,並在插入 Milvus 資料庫之前轉換為語意向量。

利用 BERT-as-service 從使用者檔案中擷取語意相似的標籤

模型的另一個神經網路是使用者語意向量。語義相似的標籤 (例如:冠狀病毒、covid、COVID-19、大流行病、新型病毒株、肺炎) 是根據興趣、搜尋查詢和瀏覽歷史從使用者檔案中擷取的。取得的標籤清單會依據權重排序,前 200 個標籤會被分成不同的語意群組。每個語意群組內標籤的組合會用來產生新的標籤詞組,然後透過 BERT-as-service 將其編碼為語意向量。

對於每個使用者個人資料,標籤詞組都有一組對應的主題,這些主題以權重標示使用者的興趣等級。在所有相關主題中,挑選出前兩個主題,經由機器學習 (ML) 模型編碼,拼接成對應的標籤語意向量,形成 968 維的使用者語意向量。即使系統為不同的使用者產生相同的標籤,但標籤及其對應主題的不同權重,以及每個使用者主題向量之間的明確差異,確保了推薦的唯一性

通過計算從用戶檔案和新聞文章中提取的語義向量的余弦相似度,系統能夠進行個性化的新聞推薦。

Sohu01.jpg 搜狐01.jpg

計算新的語義用戶檔案向量並插入到 Milvus 中

每天計算語義用戶檔案向量,並在第二天晚上處理前 24 小時的資料。向量會個別插入 Milvus,並透過查詢流程來為使用者提供相關的新聞結果。新聞內容本身就是熱門話題,因此需要每小時執行一次計算,以產生目前的新聞饋送,其中包含具有高預測點擊率且與使用者相關的內容。新聞內容也會依日期分區排序,舊新聞則會每日清除。

將語義向量萃取時間從數天縮短到數小時

使用語意向量擷取內容需要每天將數以千萬計的標籤短語轉換為語意向量。這是一個耗時的過程,即使在可加速此類計算的繪圖處理單元 (GPU) 上執行,也需要數天才能完成。為了克服這個技術問題,必須優化先前嵌入的語意向量,以便當相似的標籤短語浮現時,可以直接擷取相對應的語意向量。

現有標籤詞組的語意向量會被儲存,而每天產生的新標籤詞組則會被編碼成 MinHash 向量。Jaccard 距離會用來計算新標籤詞組的 MinHash 向量與儲存的標籤詞組向量之間的相似度。如果 Jaccard 距離超過預先定義的臨界值,則認為這兩組相似。如果相似度達到臨界值,新的詞組就可以利用先前嵌入的語意資訊。測試顯示,0.8 以上的距離應該可以保證在大多數情況下有足夠的準確性。

透過這個過程,上述數千萬向量的每日轉換時間從數天縮短到約兩小時。雖然根據特定專案的需求,其他儲存語意向量的方法可能更為合適,但在 Milvus 資料庫中使用 Jaccard 距離計算兩個標記短語之間的相似度,在各種情況下仍然是有效且精確的方法。

Sohu02.jpg 搜狐02.jpg

克服短文本分類的「壞情況

在對新聞文本進行分類時,與長篇新聞相比,短篇新聞的提取特徵較少。正因如此,當長短不一的內容在同一個分類器中運行時,分類演算法就會失敗。Milvus 可協助解決這個問題,它會搜尋多篇語意相似、分數可靠的長篇文字分類資訊,然後運用投票機制來修改短篇文字分類。

識別並解決錯誤分類的短文本

每篇新聞文章的精確分類對於提供有用的內容推薦至關重要。由於短篇新聞文章的特徵較少,因此對不同長度的新聞應用相同的分類器,會導致短篇文字分類的錯誤率較高。對於這項任務而言,人工標籤的速度太慢且不準確,因此 BERT-as-service 和 Milvus 用來快速找出成批被錯誤分類的短篇文字,並正確地重新分類,然後將成批的資料做為針對這個問題進行訓練的語料庫。

使用 BERT-as-service 將總數五百萬篇分類器分數大於 0.9 的新聞長文編碼為語意向量。將長篇新聞插入 Milvus 之後,再將短篇新聞編碼為語意向量。每個短篇新聞的語意向量用來查詢 Milvus 資料庫,並取得與目標短篇新聞具有最高余弦相似度的前 20 篇長篇新聞。如果前 20 篇語意相似度最高的長新聞中有 18 篇出現在相同的分類中,而且與查詢的短新聞的分類不同,那麼短新聞的分類就會被視為不正確,必須調整以符合這 18 篇長新聞。

此流程可快速識別並修正不準確的短篇新聞分類。隨機抽樣統計顯示,短篇文字分類修正後,文字分類的整體準確率超過 95%。利用高準確度長文字的分類來糾正短文字的分類,可以在短時間內糾正大部分的不良分類案例。這也為訓練短文本分類器提供了良好的語料庫。

![Sohu03.jpg](https://assets.zilliz.com/Sohu03_a43074cf5f.jpg 「發現短文本分類 」壞案例 「的流程圖」)

Milvus 可實現即時新聞內容推薦等功能

Milvus 大大提高了搜狐新聞推薦系統的即時性能,同時也增強了識別錯誤分類短文本的效率。如果您有興趣瞭解 Milvus 及其各種應用:

  • 閱讀我們的部落格
  • Slack 上與我們的開放原始碼社群互動。
  • GitHub 上使用或貢獻世界上最流行的向量資料庫。
  • 使用我們新的bootcamp 快速測試和部署 AI 應用程式。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

繼續閱讀