日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

新一代海量数据搜索引擎 TurboSearch 来了!

發布時間:2024/2/28 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 新一代海量数据搜索引擎 TurboSearch 来了! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文作者:sololzluo,騰訊 AI Lab 開發工程師

一. TurboSearch 簡介

AI Lab 多年一直在搜索領域進行深耕和積累,繼搜搜網頁搜索之后,陸續服務于微信搜一搜(公眾號文章、朋友圈、視頻)、應用寶搜索、地圖搜索、音樂搜索、視頻搜索、手 Q、QQ 群等精品垂直搜索業務,以及云搜中小數據搜索業務。

從網頁搜索繼承下來的搜索系統,經過多年的需求迭代,越來越難以支撐結構級新特性更新。因此我們投入精力對整體系統重構和優化,重新構建了大規模、輕量級、松耦合、可裁剪、低運營成本 具有完整解決方案 的新一代搜索系統 TurboSearch 。主要有以下特性:

  • 完整的 分布式、海量 搜索系統及運營解決方案

  • 支持便捷 私有化部署

  • 高性能索引及 并行檢索

  • 支持 多粒度索引 及檢索

  • 支持普通檢索、分類檢索、WAND 及精細化的檢索層過濾邏輯

  • 核心組件 解耦,支持橫向擴展,能力可裁剪

  • 無縫對接 AI Lab 各項 NLP 能力,涵蓋 Query 分析及排序等多個領域

  • 支持場景豐富,除傳統的網頁和各類非結構化垂類場景外,同時 可擴展 到多模態向量搜索場景

與業界部分開源引擎框架 ElasticSearch,Solr 等不同的是,TurboSearch 更傾向于面向在線 *高并發、大規模、低時延* 的檢索需求,同時能夠平行擴展到多模態場景,并提供完整的搜索運營能力。TurboSearch 在將會分層次和分階段逐步在公司內部開源。

在 多模態/向量檢索 領域,AI Lab 已經推出 GNES 檢索系統,聚焦于內容對象的 Encoding,以及多種算法模型的平臺化整合。同樣在向量檢索領域,TurboSearch 會逐步從索引層面,探索針對大規模向量數據集的高性能檢索。并從向量索引、及系統化運營層面為 GNES 提供支持。


二. 引擎框架介紹

TurboSearch 引擎主要有六大核心能力:

  • 搜索核心組件:基礎核心能力抽象和組件化,便于擴展,如索引計算、檢索核心等。同時為了降低多進程資源開銷,構建了多線程 C++ 檢索通信框架 smqRPC。

  • 搜索基礎服務:基于搜索核心組件分層包裝的檢索服務,主要包括離線索引、在線檢索及檢索接入三大層次。支持包括內存、磁盤索引在內的分布式索引及檢索環境。

  • 搜索 OSS 體系:包括離線索引生成、在線索引滾動更新、檢索干預、ABTest 等多項能力。后續將進一步完善包括好例、離線效果評估等其它精細化運營系統。

  • 效果擴展組件:搜索效果隨業務場景而變化,我們將打分排序解耦剝離,內置部分基礎相關性排序功能,也可自定義排序。

  • API 組件:提供包括 SDK、smq 協議訪問及 HTTP RESTful 接口等多種訪問方式。

  • Query 分析能力:除了基礎的分詞之外,也具備同義詞、糾錯、時新性計算、意圖識別、成分分析、非比留、新詞發現等全面能力。

TurboSearch 基礎框架:



三. 引擎特性

1. Query 檢索召回

檢索多次下發

一個 Query 的搜索過程可以分為以下幾個主要部分:

  • Query 分析(適用于網頁和垂搜),包括切詞、糾錯、拓展、改寫等。

  • 檢索召回,包括倒排求交、截斷合并等。

  • 打分排序,在 TurboSearch 中包含多層 rank 提高召回率。

然而,單次 Query 召回往往并不能達到搜索預期。比如,搜索 “吃雞”,只召回吃飯相關的文章可能難以命中用戶意圖。將其拓展為 “和平精英”,或其他熱點事件 Query,并將多次拓展結果融合,更容易命中用戶意圖。因此 TurboSearch 應對這樣的 NLP 拓展能力,原生支持多次下發結果融合。


2. QRW & 分層打分排序

QRW 是 AI Lab 多年積累的 Query 分析 NLP 服務,除了覆蓋垂搜所需的 糾錯 同義詞/非比留/基礎相關性等基礎能力之外,也涵蓋了全網搜索所需具備的全部能力,如 Query 改寫/時新性/意圖識別/成分分析/文本分檔 等等。

在排序和召回層面,TurboSearch 設計了 5 層 Rank 來最大化提高召回率,從 L0 - L4 覆蓋離線、倒排求交、精計算、全局精排等多個層面,為每個可能漏招環節做保障。


3. 高性能檢索

并行檢索

文本檢索召回的基礎即倒排求交

最耗時部分集中在 求交+L1 打分 和 L3 打分。在傳統的程序設計中,這兩部分均在單線程中串行執行。使得在高頻詞檢索求交時,單次請求耗時難以控制

TurboSearch 針對兩個高耗時流程,采用 多線程并行處理。將倒排索引切分,來并行化檢索求交+L1:

我們做了一些 特殊的無鎖多線程結果合并設計,避免合并結果等待導致閑置 CPU 的問題。負載未達 100% 時,平均檢索耗時可大幅降低(數據集為長文本新聞數據 250w):

Weak-AND

Weak-AND 在廣告或推薦等小數據集召回場景下,已經有較多的應用。在海量數據檢索中,TurboSearch 正探索其在 長 Query 召回場景 下的應用。通過結合 Weak-AND 與 AND,平衡召回率和檢索性能。

Weak-AND 的性能優化和場景探索將持續進行。

倒排性能優化

求交召回過程中,倒排的索引結構設計,對求交耗時影響較大。內存實時索引倒排在設計上具有以下特性:

  • 倒排索引需要支持 高性能同時讀寫,寫入新文檔和讀取倒排求交的能力。

  • 需要寫入 共享內存 避免進程停止導致索引需要重新加載。

  • 倒排鏈中,存儲塊越多,性能越差,盡量避免倒排塊數量過多。

TurboSearch 對內存倒排索引做以下設計:

其中:

  • BuddyAllocator 單線程運行, 分配釋放處理能力達 1000w/s

  • 分超小塊 CombinedChunk 和普通 SingleSlice,解決超短倒排存儲率問題

  • 小塊 SingleSlice 合并為大 SingleSlice,解決超長倒排中倒排塊過多問題

對比老架構固定塊倒排索引:


4. 多粒度索引

不同于 N-gram 這種暴力索引方式,多粒度索引專注于文檔與 Query 中的隱性詞組發現,對正常分詞補充。檢索時先進行粗粒度詞召回,如果粗粒度無結果或結果偏少,將再次進行細粒度詞召回。通過這個方式來解決松散召回導致的緊鄰結果截斷問題。

如 “海底撈萬象城店” 對應的粗粒度索引為 “P:海底撈 萬象城 店”,保證結果能緊鄰命中召回,如果在粗粒度檢索無結果時,將再次使用 “海底撈”、“萬象城”、“店” 進行檢索召回。既保證了準確性,也能兼顧召回率。


5. 海量數據索引支持

對于海量數據搜索業務場景,脫胎于網頁搜索的 TurboSearch 繼承三種類型的索引集群結構:

  • FOB,全內存索引,支持實時增刪。

  • GOB/NOB,內存倒排+正排,磁盤摘要,不支持實時增刪。

  • WOB,磁盤索引,不支持實時增刪。

根據不用搜索業務數據場景需求,可將各類索引集群組合達到設計目標。


6. 核心邏輯功能插件拓展

TurboSearch 引擎考慮到自定義功能開發拓展,目前對以下核心功能做了插件支持:

  • 過濾庫 filter

  • 打分庫 score

  • 求交 intersect

  • 語法樹 syntax

  • 分詞庫 segment


7. 私有化部署

TurboSearch 整體設計上支持私有化部署。在公司內網環境運營時,可使用已有的服務組件,如 CL5(名字服務)、Sumeru(資源管理) 等。然而在私有化部署場景下,這些公共服務難以一同打包部署。因此 TurboSearch 對這些功能 均有 內建相應能力,可選擇使用,并基于以下設計支持私有化實現:

  • 開發和部署上,較少的內部環境和外部項目依賴。

  • 從運營系統、DB 環境、服務模塊均可支持 Docker 部署。

  • 完善獨立設計的路由管理和資源管理。


四. 系統運營

1. 離線、在線運營架構

以較小數據量的 FOB(實時內存索引系統)集群為例,離線、在線運營系統通過以下設計保證穩定持續服務:

  • 全量數據平滑無縫版本更新,確保線上服務 不受數據滾動影響。

  • 實時數據與全量滾動無縫銜接,確保滾動 不會導致實時數據缺失。


2. 干預系統

在現網運營中,檢索召回排序無法保證所有 Query 達到最佳。對于一些突發高曝光 Badcase,需要有 臨時干預能力。TurboSearch 在接入層設計了干預系統,并沉淀積累了大量干預策略,可覆蓋現網運營大部分干預需求。**主要支持兩大類干預類型:

  • 通用干預規則,系統預先定義和實現了具體的干預處理邏輯。

  • 自定義干預規則,提供干預規則的讀寫接口,滿足不同業務的特定干預需求。


3. 全流程檢索、數據診斷

在持續優化的海量數據搜索業務運營過程中,會有持續或突發的 Badcase 需要定位。而一個海量數據搜索業務中,一般都是 *多集群、多機服務、多層邏輯* 的復雜系統。在整體系統中定位和診斷 Badcase 是一個復雜而困難的工作。比如一篇文檔未被召回有以下多種可能:

  • 文檔數據入庫問題,某些原因數據被刪除或未入庫。

  • 求交篇數階段問題,由于在線檢索考慮耗時和性能問題,無法做到全求交召回,召回太多被截斷。

  • 求交超時截斷問題,出于耗時限制,超高頻詞之間的求交過程常常會出現超時截斷。

  • L1 打分低未進入 L3,L1 取 Top300 進入 L3,因此 L1 打分過低可能導致無法召回。

  • L3 打分低被合并截斷,每一層檢索轉發 access 服務均會對召回結果按照打分取 TopN 截斷返回。

  • L4 打分低或被過濾,多集群召回融合打分會丟棄掉一些文檔。

  • 語法樹本身無法召回目標文檔,下發的語法樹全求交也不可能召回目標文檔。

一篇文章有如此繁多的漏召回可能性。TurboSearch 從在線服務模塊和離線數據流程兩個方面入手,設計全流程的診斷,來協助快速定位召回和數據問題。


五. 應用場景和展望

目前 TurboSearch 已可應用在 傳統文本搜索、關系鏈搜索、LBS 位置相關搜索、中心聚類向量搜索 等場景。在持續改進引擎現有功能之外,我們還會做更多的探索:

  • 持續優化 WAND 檢索性能,以及分析拓展其使用的 Query 場景。

  • 探索基于倒排索引,引入 知識實體的鏈接類搜索,比如搜索 “騰訊總辦”,可從索引層面召回相應結果。

  • 在 多模態/向量檢索 領域,探索新結構索引,比如圖式、樹式索引來優化向量檢索性能和效果。

  • 逐步開源開放整個引擎,并構建協同開發生態。


總結

以上是生活随笔為你收集整理的新一代海量数据搜索引擎 TurboSearch 来了!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。