LLM、Embedding 與 RAG:為 agent 建立可靠上下文
LLM 負責「說」,embedding 負責「找」,RAG 則把找到的資料固定成 prompt,這樣 agent 才不會憑空回答。
對話復刻:LLM 是 embedding 嗎?
你問:「LLM 本身就是 embedding 嗎?」這是很多初學者的直覺。
- 答案:不是。LLM 是用來理解與生成文字的系統,embedding 是把文字變成向量的表示方法,兩者有關係但用途不同。
- 比喻:LLM 會看、想、說;embedding 只會給你文字的座標,讓你知道哪些句子語意接近。
本質拆解:LLM vs Embedding
LLM 的訓練目標像是 next token prediction 或 instruction following,它的輸出是一段文字;embedding 的訓練則專注在把文字映射為高維向量,方便用距離表示語意接近度。
LLM 擅長生成與推理,embedding 擅長比較與檢索。Embedding 不會自己寫答案,LLM 不會自動找資料,兩者合作時才能做出有根據的回覆。
功能對照表
| 能力 | LLM(說) | Embedding(找) |
|---|---|---|
| 輸出 | 文字 + 機率分布 | 高維向量 |
| 用途 | 理解指令、生成答案、改寫與推理 | 語意搜尋、相似度比較、索引文檔 |
| 在 agent 流程的角色 | 把檢索到的內容整理成自然語言回答 | 把 md 文件庫和問題轉成座標,被用來找最 relevant 的段落 |
為什麼 RAG 可以降低幻覺
- LLM 只是根據機率推測下一句,如果沒有真實的上下文就容易憑空補完,造成幻覺。
- RAG 讓 agent 先用 embedding 對 md 文件庫做 semantic search,找到最 relevant 的段落,再把這些段落塞進 prompt。
- LLM 會「看到真實資料」再回答,有了來源,它就比較少憑空猜。這是把 uncertainty 降為可驗證 context 的過程。
- 因此 agent 的 prompt 可以加上限制:「只用這些段落回答,並標註來源」,進一步壓低無根據回覆的機率。
在你的 Markdown 文件庫裡怎麼佈局
- 把常用的規範、Q&A、流程寫成小段 Markdown,配好標題與 tag,讓 embedding 轉 vector 時 context 明確。
- 用 vector DB 或 simple store 暫存 embedding,agent 有問題時先跑 semantic search,抓最貼近的段落。
- 把結果和問句一起送到 LLM,並加上 prompt template(例如角色、任務、輸出格式),讓它直接依據檢索結果回答。
embedding 負責找資料、LLM 負責說話,RAG 是兩者的協作流程。
常見誤解
- 「LLM 內建 embedding 就不需要額外模型」:很多聊天模型沒優化檢索結果,專門的 embedding model 效果更穩。
- 「有了 LLM 就能直接從文件中找到答案」:若沒先檢索,模型根本不知道你本地 md 哪段 relevant。
- 「Embedding 可以自己回答問題」:它只能提供向量與相似度,不會生成自然語言答案。
一句話整理
LLM 是說話的模型、embedding 是找資料的表示法,RAG 把找到的資料固定成 prompt;在你的 Markdown 文件庫裡,這樣的分工就能讓 agent 回答更有根據。
1 分鐘小測驗:RAG 怎麼降幻覺?
Q:在 RAG 流程裡,embedding 最主要的工作是什麼?