Prompt 寫得再好,AI 也不知道一份「蔥鹽雞肉沙拉」的真實碳水量
Day19 講完 hallucination 的本質:為什麼不能相信 AI 給的營養數字。這篇要再往前問一步——AI 為什麼會給錯? 很多時候不是它不夠聰明,而是它手上根本沒有正確答案可以參考。
「知識」跟「事實」是兩種不同的東西
AI 學到的是「知識」:漢堡大概是高熱量食物、蔬菜大多低熱量,這類常識它很清楚。但系統需要的是「事實」:某一家店的某一個品項,精確是幾大卡、幾克蛋白質。這種具體數字,只有品牌官網的營養標示才有,AI 沒看過,也不可能生成出正確的版本。
可以用考試來比喻:閉卷考試靠記憶作答,開書考試可以翻課本查表。 早期的菜單生成,等於叫 AI 閉卷回答;後來的做法,是幫它把課本準備好。
Grounding:讓 AI 從你給的資料裡選,而不是憑印象講
這種「先準備一份可信資料,再讓 AI 依據這份資料回答」的做法,一般稱為 grounding(可以理解成「讓答案有依據」)。這個專案的 Food DB,就是在做這件事。
早期版本:AI 自己估算,哪裡出了問題
最早的菜單生成,AI 只能靠自己的知識估算「一個麥當勞漢堡大概有多少熱量」。對簡單的食物(一顆蛋、一片吐司)還算堪用;但對複合菜色(一個漢堡、一個便當)風險就很大,因為 AI 對「這個品牌的這個品項」根本沒有精確資料,它給的數字本質上是憑常識推測,跟「查表得到的真實數字」是兩回事。
後來的轉變:建一份真實食物資料庫(Food DB)
解決 hallucination 不能只靠「叫 AI 小心一點」或「把 prompt 寫得更精確」。真正的解法是給它一份可信的資料可以查:把品牌官網的營養標示整理成資料庫,菜單生成時先從裡面篩出候選食物,AI 只負責在候選清單裡挑選(這就是 Day15 講的第二次呼叫的輸入之一)。
| 比較項目 | 早期版本 | 加入 Food DB 之後 |
|---|---|---|
| AI 的角色 | 憑印象估算食物的營養 | 從已知正確的候選清單裡挑選 |
| 數字的來源 | AI 的常識推測 | 品牌官網的營養標示 |
| 風險 | 複合菜色的數字容易失真 | 數字有出處,可以回頭查證 |
這篇的重點是一個心態上的轉變:AI 最大的問題不一定是它不夠聰明,而是它手上沒有正確答案。 與其期待 AI 生成事實,不如先把事實準備好,再遞給它。接下來要分享的,就是這份 Food DB 從設計、蒐集到存放的完整過程,下一篇先從「資料要長什麼樣子」開始。