你精心挑選了5個少樣本示例,塞進系統(tǒng)提示詞,上線。測試集通過率漂亮,生產(chǎn)環(huán)境儀表盤數(shù)字穩(wěn)定——直到一封郵件砸進來:一個退款咨詢被錯分成物流問題,用詞和你的5個示例毫無相似之處。
這是每個靜態(tài)少樣本提示詞終將撞上的墻。5個示例只能覆蓋輸入分布的頭部,尾部無處不在,而真正的bug都藏在尾部。
![]()
解法是把示例從常量變成檢索問題。每個查詢進來,從庫中拉取最相似的k個歷史示例,注入提示詞,再調(diào)模型。提示詞隨查詢變形。下面70行代碼就是全部。
手工挑選示例本質(zhì)是抽樣問題。你讀了50條工單,選5個"有代表性"的,上線。這5個錨定了模型對所有后續(xù)輸入的行為——長得像這5個的能泛化,不像的就翻車。
三股力量讓情況隨時間惡化:
你可以靠堆更多靜態(tài)示例暫時掩蓋。到20個開始吃上下文預(yù)算,到40個明顯拖慢每次調(diào)用、抬高單請求成本,到60個模型開始忽略列表后面的示例。示例數(shù)量與準(zhǔn)確率的關(guān)系絕非線性。Anthropic的提示工程指南建議多數(shù)任務(wù)用3到5個,正對應(yīng)這個天花板。
天花板不是示例數(shù)量,而是它們是否匹配眼前的查詢。
建一個庫:歷史輸入配正確輸出。把庫中每個輸入嵌入向量存儲。查詢時嵌入新輸入,檢索最相似的k個示例,格式化進提示詞,調(diào)模型。庫可以是測試集、歷史標(biāo)注數(shù)據(jù)、或過去修正的反饋日志。
相比靜態(tài),三處變化:
成本是每次查詢一次嵌入查找(熱內(nèi)存索引上約幾十毫秒),上下文窗口仍裝5個示例,只是按查詢動態(tài)挑選。k值可在3到10之間調(diào),代碼改動很小。
動態(tài)勝出的場景,按影響排序:
靜態(tài)仍贏的場景:
數(shù)據(jù)量經(jīng)驗法則:少于約50條標(biāo)注,保持靜態(tài);超過約200條,動態(tài)幾乎總贏;中間區(qū)間,兩邊跑eval讓數(shù)字說話。這些是啟發(fā)式而非實證發(fā)現(xiàn),有條件時錨定到自己的測試集。
下面是完整Python實現(xiàn)。用Anthropic做對話調(diào)用,本地sentence-transformers做嵌入(無需搭建向量數(shù)據(jù)庫即可運行)。真實部署時,把內(nèi)存numpy索引換成pgvector、Qdrant或你現(xiàn)有棧里的方案。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.