最近和快手的搜索團隊有過一次詳細的溝通,具體來說是讓快手的搜索工程師給我上了一課。越聊越發現,短視頻和直播時代的搜索,已經不是傳統搜索那套邏輯能搞定的了。內容變了,提問方式變了,場景節奏變了,原來依賴的搜索范式,早已跟不上這個高速流動、強語義驅動的多模態內容世界了。
所以在這篇文章里,我想從工程師的視角,把現代搜索這件事講明白。
一、搜索走到十字路口
傳統搜索這件事,起點很樸素:用戶提供 Query(搜索詞),系統幫忙“找到”最相關的那些數據記錄。
早年的搜索,有點像翻一本巨大的字典。用戶敲幾個詞,系統在倒排索引里去查,這些詞出現在哪些文檔,再按一些規則——比如 PageRank 算法——做選擇和排序,給出最相關的搜索結果。信息以文字為主,頁面更新頻率也相對可控,這套搜索范式撐起了整個網頁搜索時代。
但短視頻和直播改變了這一切,今天的搜索,面對的是這樣的世界:
有人搜“適合通勤的妝容”,期望看到的是短視頻里的上妝步驟;
有人搜“一小時內帶貨好的女裝直播間”,希望下一秒就能進到正在熱賣的直播間里;
有人隨手念一句“教小孩子寫作業的搞笑視頻”,搜索要能聽得懂、找得到,還要實時地把最新的內容推上來。
想要搜索的內容除了文字外,還有視頻、直播、長音頻,形式從單模態變成了多模態,節奏從“按天更新”變成了“按秒刷新”。傳統基于詞的檢索,像翻一本只記錄生字的字典,對于這種“多模態、強時效”的內容世界,完全是力不從心的:只看“字面上的詞”,無法理解復雜語義和場景。
然后傳統搜索就開始打補丁,依賴人工規則:同義詞擴展(蘋果手機擴展到 iPhone)、Term 省略(只保留關鍵詞)、實體歸一(蘋果公司、Apple、Apple Inc.” 歸一到同一企業實體)、各種 Rank 特征,鏈路越做越長,越做越重。
用戶需求越來越“像人說話”,內容越來越“像現實世界”,這就是快手搜索團隊看到的十字路口。那么,是繼續在舊范式上堆規則,還是干脆重構搜索鏈路,從底層把“理解能力”和“實時能力”重新連接起來?快手團隊選擇了后者。
于是,有了基于語義 ID 的判別式倒排 UniDex,以及統一生成式搜索架構 UniSearch:一個重寫傳統倒排方式,一個重寫生成式搜索,把工業級搜索這條路往前推了一大步。
二、從詞表到語義 ID:UniDex 徹底變革搜索倒排
UniDex 是快手提出的基于語義 ID 的新型倒排檢索,用來更準確召回短視頻內容。要理解 UniDex 做了什么,可以先回到傳統搜索引擎的“核心”:倒排索引。
倒排索引很像圖書館里的一排卡片柜。每個詞是一張卡片,上面記錄著這個詞出現在哪些文檔里。查詢“登山”,系統就去“登山”卡片對應的抽屜里,把關聯的文檔都搬出來做下一步篩選。幾十年里,搜索引擎就是靠這種“詞 → 文檔列表”的結構支撐互聯網世界。
但是短視頻的世界,本質上是“語義”和“場景”的世界,而不是簡單的“詞和表”的世界。
比如有人搜“適合新手的小白健身教程”,真正表達的意思是:“別太難”“動作清晰”“節奏合適”“內容扎實”。如果只是按字面去查“新手”“健身”“教程”,很容易漏掉那些真正適合他的內容。
UniDex 怎么做呢?既然問題出在“詞”上,那就別再圍著“詞和表”打轉了,而是讓模型先把視頻和 Query 理解成一組更本質的“語義 ID”。
我們可以把“視頻語義 ID”想象成給每個視頻打上的一串“語義二維碼”:編碼器吃進去的是視頻的畫面、標題、文案等多模態特征;輸出的是一組離散的語義 ID——它不再是中文詞匯,而是模型學習出來的“語義格子”;
Query 走同一套編碼和量化流程,也被映射到同一個語義空間里。
這樣,搜索系統不再是“哪個詞出現在哪些視頻里”,而是“哪些視頻和這個 Query 掉進了同一片語義格子里”。
在這個基礎上,UniDex 把傳統倒排里的兩個關鍵環節——召回和排序——統一成了兩部分:UniTouch 和 UniRank。
UniTouch:用語義倒排做召回
UniTouch 把 Query 和視頻都編碼成多組語義向量,然后用量化的方法把這些向量映射成離散的語義 ID 集合。倒排索引不再按“詞”建,而是按“語義 ID”建。
當一個 Query 進來時:
在線模型實時編碼這個 Query,產出一組語義 ID;
系統去“語義 ID 倒排表”里查有哪些視頻擁有這些 ID;
只要有一個 ID 匹配,就可以被召回,而不再死盯著完全相同的詞面匹配。
相比傳統 Term-based 倒排,這種 Model-based 倒排有幾個直接的好處:
泛化能力強:
即便用戶輸入的是以前沒見過的新詞組合,只要語義接近,系統就能通過語義 ID 把視頻召回來,長尾 Query 的召回質量明顯改善。
鏈路大幅簡化:
過去要靠多路 Touch 方案 + 一堆規則堆出來的效果,現在交給模型直接學習語義空間,人工調整的工作量大幅下降。
資源效率更高:
語義 ID 本身是離散、緊湊的表示,在索引構建、存儲、更新上的成本更低,也更利于并行計算和加速。
快手的同學給我講,他們做的內部實驗顯示,在相同數據集上,UniDex 相比傳統稀疏化檢索模型,在 Recall@300、MRR@10 等核心指標上都有兩位數的提升,在線端整體響應速度也提高了約 25%,同時算力開銷更低。
UniRank 做的事情是:釋放語義檢索的上限
只做語義 ID 的匹配,還不足以把搜索能力“拉滿”。UniRank 更像是“精細的裁縫”,專門負責在 UniTouch 召回的候選里做更細粒度的語義匹配。它仍然采用雙塔結構,把 Query 和視頻分別編碼成多組向量,但在排序階段做了更細的 Token-level 交互:
Query 不是一個整體向量,而是一組語義 Token;視頻同樣是一組語義 Token;模型會讓 Query 的每個語義 Token 都去和視頻的所有 Token 做相似度匹配,再綜合這些匹配結果做最終打分。
這種細粒度的交互,讓模型可以更好地理解“這條視頻是如何對應這個 Query 的”,而不只是粗略地算一個整體相似度。這對于復雜、多約束的搜索句子尤為重要。
通過 UniTouch + UniRank 的組合,UniDex 完成了從 Term-based 倒排到 Model-based 倒排的“全量替換”。在快手的主搜場景中,它既提升了召回效果,又顯著降低了系統的存儲和算力成本,這相當于把傳統倒排這塊“老基建”重新翻修了一遍。

三、UniSearch:統一生成式搜索架構
UniDex 解決的是“判別”問題:在大量候選對象里,找出哪些視頻或直播更匹配當前的 Query。但在一些高動態場景里,比如直播搜索,另一個問題就會變得同樣重要——能不能直接“生成”出最合適的目標?
直播搜索是快手重要的搜索流量來源,也是短視頻應用場景中的新業務領域,為應對直播業務場景高時效性要求的挑戰,快手搜索技術團隊設計了統一的生成式搜索架構,提升用戶體驗并優化搜索效率。
如果說倒排索引是“從已有的視頻里挑”,生成式搜索更像是“讓模型寫一串指令,告訴系統應該把誰推到前面來”。UniSearch 就是解決這個問題的。
1. 技術創新:生成式搜索的真端到端訓練方案
傳統的工業搜索系統大多是多級聯的:
第一層是召回,重點是“找得到”;
第二層是粗排,重點是快速做一次粗略排序;
第三層是精排,重點是“排得好”;
后面還可能有重排、融合、多路策略等等。
每一層都有自己的模型和特征,訓練目標也各不相同。系統雖然好用,但復雜、脆弱,維護成本極高,而且很難做到“端到端的整體最優”。
生成式推薦/搜索模型(如 oneRec 等)嘗試用大模型來統一這條鏈路,但往往仍然是“兩段式”:先離散化物品,再單獨訓練一個生成模型預測這些離散 ID,離散化和生成是兩個目標,很難真正統一起來。
UniSearch 的思路,是把這條鏈路壓縮成一個統一的生成式框架,并做到真正的端到端訓練:
一端是 Search Generator
用 Encoder-Decoder 架構做核心大腦。編碼器接收的是 Query、用戶歷史行為、上下文等;解碼器則自回歸地生成視頻或直播的語義 ID 序列。換句話說,它直接“寫出了”系統應該召回和排序的結果。
另一端是 Video Encoder
它負責把每個視頻或直播間編碼成一組連續的語義向量,并通過 VQ-VAE 這樣的方式離散化為語義 ID。這里的關鍵是:碼本(codebook)的學習、視頻表示的學習和生成式目標,是在同一個訓練框架里聯合完成的,而不是訓練完一個再去適配另一個。

在訓練過程中,UniSearch 還把傳統搜索里“召回—粗排—精排”的漏斗結構,改寫成一種“殘差漸進式”的語義學習目標:模型先學會“粗粒度”的語義區分,類似傳統召回;再在此基礎上學習更細粒度的殘差語義,類似粗排、精排不斷 Refinement。
整個過程像在不斷雕刻一塊石頭,從粗糙輪廓到最終細節,全程由同一個模型完成。
這樣做的好處在于:過去是工程師把漏斗邏輯寫在系統里,現在是把漏斗邏輯“學習進了模型里”;item 表征與 item 生成不再是兩套邏輯,而是真正統一在同一個優化目標下。
從系統角度看,UniSearch 用一個統一的生成架構,替換掉了以往多階段、多模型、多策略的復雜鏈路,在簡化的同時,用端到端訓練把整體效果提升上去了。
在線偏好 Search Preference Optimization(SPO)是另一個需要解決的問題。
離線訓練先解決“模型要合理”,真正考驗搜索系統的是“能不能沿著用戶偏好持續迭代”。
UniSearch 上線后,會持續接收兩類關鍵信號:
來自在線精排模型的“專業評分”;
來自真實用戶行為的反饋,如點擊、進間、停留時長等。
在此基礎上,系統構建獎勵機制,并以類似 GRPO 的強化學習范式,進行搜索場景下的 Search Preference Optimization(SPO)。
我們可以這么理解:對同一個 Query,模型會生成多個候選結果序列;系統依據每個序列在線表現給出獎勵分數;模型根據獎勵信號調整生成策略,讓“更符合用戶真實偏好”的生成模式成為主流。
這有點像 ChatGPT 通過人類反饋調整回答風格,只不過 UniSearch 調整的是“搜索結果列表”的生成方式。
從“翻字典”到“生成結果”,不只改變了搜索系統的技術形態,更讓搜索首次有機會在工業規模上,把“搜索邏輯”真正交給模型學習,而不是寫死在規則里。

2. 使用場景:直播搜索落地與在線學習
生成式搜索 UniSearch 最先落地的,是快手的直播搜索。
直播是一個極端動態的場景:直播間隨時開播、下播;商品、話題、氛圍、互動方式不停變化。
用戶搜索“電鋼琴教學直播”“今晚穿搭分享”“新機發布會”等關鍵詞時,系統不僅要理解語義,還要理解此時此刻,哪幾個直播間最值得他進去看看。
在這種環境下,傳統的多路召回 + 多級排序,很容易變成一臺龐大但響應遲緩的機器。而 UniSearch 的統一生成架構,更像一個反應靈敏的“指揮塔”。
它在線上的工作大致是這樣的:
生成模型實時產出碼本分布
當用戶輸入一個直播搜索 Query 時,Search Generator 接收 Query 和用戶上下文信息,輸出一組關于“語義 ID 序列”的概率分布。
動態 Trie 樹保證“又新又合法”
快手會用一個大致 1 分鐘顆粒度的時間窗,不斷刷新“當前在線直播間 → 最新語義 ID 路徑”的映射關系。這些路徑被組織成一棵動態 Trie 樹,實時監聽直播碼本更新。生成模型在這棵 Trie 上做 Beam Search,只探索那些真正存在的直播間路徑,既保證生成結果的合法性,又能跟上直播間的實時變化。
Reward System 持續在線學習
用戶是否進間、停留多久、是否換 Query,這些行為都會被轉換為獎勵信號,通過 SPO 機制反哺給模型。模型一邊服務用戶,一邊學習用戶,用業務效果作為“第二條損失函數”。
從實驗結果看,UniSearch 上線到直播搜索鏈路后,帶來了非常直接的收益:
直播間進間次數相對提升 3.31%,是近兩年來該指標的最大收益;
換 Query 率下降約 0.38%,用戶更少因為“不滿意搜索結果”而反復改詞;
進一步拆開看,接近 58.73% 的“進直播間”提升來自新用戶,對平臺不熟的新用戶,反而更容易通過 UniSearch 找到合適的直播間。
對用戶來說,這是一次“感覺更順”的體驗升級:搜一次,推來的直播更精準,不需要來回折騰。對業務來說,這是一次“效率更高”的分發升級:同樣的搜索流量,帶來更多有效進間和轉化,同時后端鏈路的算力和存儲成本并沒有以同樣比例增長,甚至還得以優化。
目前,UniDex 作為統一語義倒排,已經在快手綜合搜索等核心業務中落地;UniSearch 則在直播搜索這樣的強動態場景里跑在前線,共同構成了快手新一代工業搜索的“雙引擎”。
四、新一代工業搜索的方向與價值
我們從 UniDex 和 UniSearch 上可以清晰的看到快手在新一代工業級搜索上的三條主線:
第一條,是從詞到語義。
傳統搜索的單位是“詞”,新一代搜索的單位是“語義”。語義 ID 把視頻、直播、Query 統一映射到同一個離散空間,用模型學習出來的“語義格子”取代人工維護的“詞表 + 規則”,讓系統更擅長理解“用戶真正想要什么”,尤其是在長尾、多約束、口語化的 Query 上。
第二條,是從級聯到統一生成。
傳統搜索鏈路,像一臺由許多齒輪拼接起來的大機器,強大,但每個齒輪都需要人去調。
UniDex 用模型重構倒排,把召回和排序統一在語義范式下;UniSearch 則進一步用 Encoder-Decoder 把“召回—粗排—精排”的漏斗學進模型里,再通過 SPO 的用戶行為持續微調。
搜索不再只是一串工程模塊的組合,而是逐步變成一個可以端到端訓練、端到端優化的智能體。
第三條,是從離線規則,到在線偏好學習。
早期搜索系統的優化,多半發生在離線:調整策略、調權重、改特征。在 UniSearch 這樣的新架構里,在線獎勵(reward)和用戶行為被直接寫入優化目標,模型學到的不只是“相關性”,還有“平臺和用戶真正關心的偏好”。
站在今天看,這樣的新一代工業搜索,已經在快手綜合搜索、直播搜索等核心業務里落地并發揮了重要作用。對用戶來說,搜索變得更快、更準;對平臺來說,搜索帶來了更多進間和收益;在業務上同時兼顧內容理解、實時性、個性化與穩定可落地。
要我看,這就是一條可以看得見的技術演進路徑,為短視頻、知識庫、網頁等內容搜索提供通用底層能力。
未來,當更多的知識庫、創作平臺、內容社區都走向多模態,快手的這套現代創新搜索技術,或許會成為新的“基礎設施”。(MacTalk)





京公網安備 11011402013531號