做外賣產品的幾年裡,我有很長一段時間都在做 Search 和 Recommendation。
這兩個東西常常被放在一起講,但解決的 User Problem 其實不太一樣。
最簡單的理解是:
Search:我大概知道我要找什麼。
Recommendation:我不知道要什麼,你先給我一些選擇。
例如今天突然很想吃麥當勞,我會直接 Search:
「麥當勞」
甚至:
「麥脆雞」
這時 User Intent 很明確,Search 要做的事情就是:
快、準,不要擋路。
但如果今天是:
「晚餐吃什麼?」
不知道。
那我可能開始滑首頁,看看附近熱門、最近常吃、猜你喜歡。
這就是 Recommendation 很重要的場景。
以前做產品時,這兩條 Journey 我非常熟悉。
但現在回頭看,我覺得中間其實一直存在第三種 User。
例如今天我腦袋裡其實有一些想法:
今天有點冷,想吃熱的。
不想吃太油。
最近那些店有點吃膩了。
最好不要超過 300 元。
我不是「不知道要吃什麼」。
我其實知道很多。
但問題是:
我要 Search 什麼?
「熱的」?
「不油」?
「300 元」?
「沒吃過」?
這些都不像我們以前習慣的 Search Query。
但如果直接去滑 Recommendation,也不一定能解決。
因為 Recommendation 可能知道:
我過去很常吃日料。
所以又推了一排日料給我。
問題是:
我今天就是不想吃平常那些。
這群 User,其實卡在 Search 和 Recommendation 中間。
以前做 Search,我很常遇到一個問題:
User 輸入的東西,不一定是標準 Keyword。
有人搜店名、有人搜菜名、有人搜 Cuisine,同一個東西大家的講法也可能完全不同。
所以 Search 背後一直都在做:
Query
↓
Query Understanding
↓
Intent / Rewrite / Synonym
↓
Recall
↓
Ranking
也就是:
把 User 的表達,轉成 System 理解的東西。
所以「理解 User 說什麼」並不是 LLM 出現之後才有。
Search 已經做很多年了。
Recommendation 面對的是另一個問題:
User 根本沒有 Query。
那怎麼辦?
只能從其他 Signal 判斷。
例如:
最後回答:
「在 User 什麼都沒說的情況下,我應該先給他看什麼?」
所以 Search 和 Recommendation 本來就是互補的。
一個從 Query 出發。
一個從 Behavior / Context 出發。
但一直有一塊比較難處理:
User 有 Intent,只是還不夠明確。
例如:
「想吃清淡的,但不要沙拉。」
「最近吃太多便當了,想換點不一樣的。」
「下雨天想吃熱的,30 分鐘內可以送到。」
「今天跟小孩一起吃,不要辣,最好有麵。」
這些需求非常自然。
我們每天都可能這樣跟朋友講。
但以前放進 App,可能得先拆成:
Price [300 以下 ▼]
Spicy [不辣 ▼]
Delivery [30 min ▼]
Category [麵食 ▼]
問題是:
User 腦袋裡原本根本不是一張 Filter Form。
他只是想:
「今天想吃個小孩也能吃、不要辣的麵。」
AI 真正改變的,不只是讓 Search 可以輸入更長的 Query。
而是:
產品開始可以接受一個還沒有完全結構化的需求。
這讓我想到 Recommendation 裡一個很典型的問題:
Exploration vs. Exploitation。
已經知道 User 喜歡什麼,就繼續推薦,通常比較容易轉換。
但如果永遠只推吃過、點過、喜歡過的東西,User 也很難發現新的選擇。
所以 Recommendation 本來就會做適度 Exploration。
但問題是:
我們以前其實不知道 User 今天想不想 Explore。
有時候我想的是:
「拜託不要冒險,我今天只想吃平常那家。」
有時候卻是:
「吃膩了,拜託給我點新的。」
同一個 User,Historical Behavior 完全一樣。
但今天的:
Current Intent 完全不同。
自然語言剛好可以補上這個 Signal。
例如 User 說:
「最近那些都吃膩了,想換新的,但不要太冒險。」
System 已經知道他平常吃日料、台式、韓式,很少吃辣,客單價通常在 200~300。
那 AI 就可以把:
Current Intent + Historical Preference
一起拿來縮小候選。
這時候 Search 和 Recommendation 的界線也開始變得沒那麼清楚。
它不是單純 Search。
也不是被動 Recommendation。
而是讓 User 從一個還不完整的想法開始:
「想吃熱的」
↓
「但不要太油」
↓
「最近那些有點吃膩了」
↓
Current Intent + Context
↓
縮小候選
↓
給出幾個真正適合的選擇
User 不需要一開始就知道正確 Keyword。
也不需要自己面對十幾個 Filter。
他只需要:
把目前知道的講出來。
System 再幫忙把模糊 Intent 收斂成可以 Search、Recommendation、Ranking 的條件。
這也是我現在看 AI Product 很在意的一件事。
有 Chatbox,不代表所有 Journey 都應該 Conversation First。
如果 User 說:
「Starbucks」
結果 AI 回:
「好的!請問今天想喝什麼類型的飲料呢?」
我可能會很想把 App 關掉。
因為 Intent 已經很明確。
直接給 Search Result 就好。
反過來,如果 User 說:
「今天很冷,想喝熱的,但不要咖啡。」
這時還要求他自己去:
飲料
→ 非咖啡
→ 熱飲
→ Filter
也很笨。
所以真正好的 AI UX,不是把所有 Search 變成 Chat。
而是:
根據 User Intent 的清晰程度,選擇最有效率的 Interaction。
「麥當勞」
「牛肉麵」
「XX 店」
不要多問。
直接找。
「不知道吃什麼。」
「先看看。」
用 Historical Behavior、Context、Popularity 幫 User 開始探索。
「想吃熱的、不辣,最近那些有點吃膩了。」
User 已經有 Constraints,只是還沒有答案。
這時自然語言最有價值。
模糊 明確
│──────────────────────────────────────│
Recommendation Conversational Search
Discovery
以前我們很常問:
「這個 User 是 Search User 還是 Browse User?」
現在我可能會先問:
「他的 Intent 到底有多清楚?」
做了幾年 Search 和 Recommendation,我現在還是不覺得它們會被 AI 取代。
因為 User 本來就有不同狀態。
有時候:
我知道我要什麼。
有時候:
我完全不知道。
但其實更多時候是:
我知道一點,但還說不出一個精準答案。
以前我們用 Category、Filter、Collection、Search Suggestion、Recommendation,努力幫 User 收斂這些模糊需求。
現在 Natural Language 多提供了一種可能:
User 不需要先學會怎麼描述給 System 聽,而是先把自己知道的講出來,讓 System 幫忙把需求收斂。
Intent 明確,就別逼 User 聊天;Intent 模糊,也別逼 User 猜 Keyword。
Search、Recommendation 和 AI 不需要互相取代。
它們應該服務不同程度的 Intent。
而 AI 真正補上的,是中間那塊以前比較難做好的:
「我知道一些,但還不知道自己到底要找什麼。」
