Architecture - 2026-09-11 - 4 分鐘閱讀
企業導入 AI 第二階:資料與檢索
企業導入 AI 的第二階,把內部文件匯入索引並依角色分範圍,讓同一個問題由不同角色來問回傳各自該看到的資料,而範圍由索引執行,模型不參與。
這是系列的第二篇。系列從第 0 篇的完整參考架構圖開始,第 1 篇講身份與 gateway。第二階對應圖上編號②的那一欄「資料與檢索」,三個方塊:企業資料來源、匯入與索引、檢索索引。檢索索引方塊上標的是「RAG,依角色範圍」,而角色要等第一階的角色與範圍做起來才存在,所以這一階排第二。這一階不寫入也不送出,能出的最壞結果就是答錯。

公司沿用第 1 篇的晴川,約 40 人,8 個工程師、2 個行銷。晴川是編的,只用來把這一階走一遍。第一階做完之後,所有人都從身份提供者登入,每通 call 都走 gateway,每個人身上帶著角色。他們能問的還是模型本來就知道的東西,因為晴川自己的材料一份都還沒進索引。
企業資料來源:文件、工單、資料庫
第一個方塊點名哪些內部系統在範圍內。方塊上的標註是「文件、工單、資料庫」。在晴川就是工程 wiki、客服工單系統,還有產品資料庫裡的一張客戶表。沒有一份寫下來的清單,「AI 有我們的資料」這句話沒有人能查證,真的出事的時候也講不出影響範圍。
這裡真正要緊的性質是:這些系統各自本來就有存取規則,而規則不會跟著內容走。一頁只給工程看的 wiki,是 wiki 在擋。把它的文字複製進索引,那個限制留在 wiki 那邊。做完的樣子是:一份寫下來的系統清單,每一行帶著這個系統今天實際在執行的存取規則,以及誰在管它;沒寫在清單上的東西,在補進清單之前不進索引。
匯入與索引:分塊、嵌入
內容從那些系統拉出來,切成分塊,轉成可以按語意搜尋的向量。方塊上的標註是「分塊、嵌入」。沒有這個方塊就沒有東西可搜,每個答案都只能來自模型訓練時看過的內容。
這裡有兩件事會出錯,而且兩件都很安靜。第一件是分塊會把「這段話為什麼可以直接引用」的上下文切掉。一段來自標記為已作廢那頁的文字、一行從沒核准過的政策草稿、一句客戶自己寫在工單裡的話,單獨變成一個 chunk 之後,讀起來都像是一句成立的陳述。第二件是權限。查詢的當下手上只有向量和相似度分數,所以該套的存取規則得在匯入時就掛在 chunk 上,趁來源文件還認得出來的時候。
這個方塊的另一半是第一次載入之後的事。文件會被改、被刪、被重新分級,而一份只建過一次的索引,會開始拿已經不存在的材料回答問題。做完的樣子是:每個 chunk 都帶著來源文件的身份、以及該文件在匯入當下的存取規則,而來源文件被刪掉或重新分級時,它的 chunk 在團隊寫下來的時限內跟著移除或改級。
檢索索引:RAG,依角色範圍
第一階的角色在這裡才真的被用到。問題進來時帶著提問者的角色,索引先過濾成這個角色看得到的 chunk,搜尋只在過濾後剩下的東西上排序。方塊上的標註是「RAG,依角色範圍」。沒有這道過濾,晴川的 wiki、工單、客戶紀錄躺在同一個索引裡,行銷問一句話就可能撈回只有客服該看到的客戶紀錄。索引從頭到尾就沒有按角色切開過。
順序就是這個方塊的全部。先過濾再搜尋,交到模型手上的材料,提問者本來就有權限讀。把「只用這個人看得到的文件回答」寫進 prompt,是對一個已經拿到材料的系統提出的請求。做完的樣子是:過濾在搜尋之前跑,同一個問題由兩種角色來問回來的 chunk 不一樣,而範圍由索引執行,模型在這件事上沒有角色。
查證一個答案比拿到它慢
這一階是唯讀的,很容易讀成風險低。它實際的意思是這一階的成本用人的時間來付。一個旁邊附了三份內部文件出處的答案,比什麼都沒附的答案更花時間查,因為附了出處看起來就像已經查過了,而要知道到底對不對,只能把三份都打開讀過那幾段。
我自己跑過三條線,加了 AI 之後產出都變快,三條線的瓶頸都回到把關的人身上。量上去了,能查的人數沒有變。晴川會以排隊的形式看到同一件事:生一個草稿答案是幾秒的事,對著出處確認是幾分鐘的事,而願意做確認的人數,就成了這套東西能被用到多少的天花板。
把天花板往上抬的工作,是讓單次查證變便宜。做完的樣子是:每個答案都帶著它用到的 chunk,每個 chunk 帶一個連結,點下去直接開到原始文件的那一段,查一個答案的成本是一次點擊。
進第三階前的檢查
拿真的文件和兩個真的帳號來跑。挑一份只有客服看得到的文件,挑一個答案只出現在這份文件裡的問題。用行銷的身份問,答案裡不能有它。用客服的身份問同一句,答案裡要有。然後把 prompt 裡所有跟權限有關的句子刪掉,兩邊各再跑一次。只要有一邊的結果變了,範圍就是寫在 prompt 裡的,這個方塊還沒做起來。
第二半是索引跟得上來源。在來源系統刪掉一份文件,等過團隊寫下來的更新時限,問一個原本靠這份文件回答的問題,它的內容不會再回來。兩半都得由系統本身執行才算過。沒過之前,第三階不是下一件該做的事,因為 agent 讀的就是這個索引,這一階沒套上的範圍,它會原封不動繼承。
自架版的圖上,資料與檢索這一欄畫得一模一樣。兩版的差別從這裡開始有感,原因只有一個:匯入會把內部文件的文字送給負責算嵌入的那一方,所以在雲端版,這些內容在匯入過程中就跨過了企業邊界,走的正是第一階把 PII / DLP 過濾擋在前面的那條路。第 3 篇講 agent 與唯讀連接器,這一階做出來的範圍,會變成 agent 自己能讀到多少的上限。