跳到主要內容

非結構化文件的個資怎麼抓:PII 偵測與去識別化

無標記

.pdf / .docx 這類非結構化文件裡的個資與機敏資訊,怎麼被辨識出來、又怎麼去識別化。涵蓋七類資料的具體盤點與對應手法、遮掉名字為什麼還不夠、用文件形態決定處理強度的最低限度做法,跨到越南之後哪些會變哪些不變,以及什麼時候根本不需要技術方案。

更新於 2026/08/27

顧問業務手上會累積大量客戶與公司內部的文件:勞動契約、薪資清冊、申訴紀錄、工作規則、人事規章。這些文件要拿去餵 RAG、要當對外案例、要委外標註之前,都得先做去識別化。

這篇整理的是「怎麼做」的前半段:先把要處理的東西盤清楚,再決定每一類用什麼手法。規則以台灣為主,跨國情境(目前面對的是越南)另闢第四節處理。

一、資料分類:七類與對應手法

分類的軸不看「資料多敏感」,看「用什麼方法抓得到」。因為手法決定成本:正則抓得到的可以全自動、零人審;只能靠語意判斷的,就得付模型跟人工的錢。

1. 強格式直接識別碼

有固定格式,部分還有檢查碼可驗。誤判率最低,可以全自動處理。以下是台灣的規則集;這一類的規則屬於地區資料,換個國家就換一套,流程本身不動。

資料項格式特性手法
身分證統一編號[A-Z][12]\d{8},有檢查碼正則+檢查碼驗證
外籍居留證統一證號[A-Z][89]\d{8},有檢查碼正則+檢查碼驗證
公司統一編號8 碼,有檢查碼正則+檢查碼驗證
護照號碼台灣 9 碼數字;外籍格式雜正則+上下文關鍵詞
健保卡號12 碼數字正則+上下文關鍵詞
手機號碼09xx-xxxxxx,含 +886 變體正則
市話與分機區碼 2–4 碼+號碼+#分機正則
電子郵件RFC 格式正則
信用卡號Luhn 可驗正則+Luhn
銀行帳號3 碼銀行代號+分行+帳號正則+銀行代號表
郵局帳號局號 7 碼+帳號 7 碼正則
車牌號碼新舊制多種格式正則
勞保證號、勞退個人專戶固定格式正則+上下文關鍵詞
發票號碼AB-12345678正則
出生年月日民國/西元混用正則+日期正規化
郵遞區號3 或 5 碼正則

出生年月日最容易漏抓:同一份文件裡「85.03.12」「民國85年3月12日」「1996/3/12」三種寫法並存是常態,正則要一起吃掉。

什麼是檢查碼驗證

檢查碼是號碼裡內建的一位自我驗證欄位。發號時用前面幾碼算出來接在最後,驗證時把同一套算式再跑一次,對不上就代表這串數字不可能是合法號碼。

以身分證字號 A123456789 為例,最後一碼 9 就是檢查碼:

  1. 開頭字母查表換成兩位數(A=10、B=11⋯⋯Z=33),拆成 N1、N2
  2. 依序乘上固定權重:N1×1、N2×9,接著八個數字 ×8 到 ×1,檢查碼 ×1
  3. 總和能被 10 整除就通過
TEXT
A → 10,所以 N1=1、N2=0
​
1×1 + 0×9 + 1×8 + 2×7 + 3×6 + 4×5 + 5×4 + 6×3 + 7×2 + 8×1 + 9×1
= 1 + 0 + 8 + 14 + 18 + 20 + 20 + 18 + 14 + 8 + 9
= 130
​
130 ÷ 10 整除 → 通過

最後一碼改成 A123456788,總和變 129,除不盡,直接判定不是身分證字號。

PYTHON
LETTER = {c: 10 + i for i, c in enumerate("ABCDEFGHJKLMNPQRSTUVXYWZIO")}
​
def is_valid_twid(s: str) -> bool:
n = LETTER[s[0]]
total = n // 10 + (n % 10) * 9
total += sum(int(d) * w for d, w in zip(s[1:9], range(8, 0, -1)))
return (total + int(s[9])) % 10 == 0

這一步決定了第 1 類能不能全自動。光靠正則 [A-Z][12]\d{8},契約編號、案號、內部流水號、OCR 雜訊都會被一起撈進來;加上檢查碼之後,隨機字串矇混過關的機率只剩十分之一,誤判量砍掉九成。

信用卡號用的是另一套,叫 Luhn,1954 年由 IBM 的 Hans Peter Luhn 提出。原理同一類,權重規則更簡單:從右邊數,每隔一位乘 2,乘完超過 9 的減掉 9,全部加起來能被 10 整除就通過。

用測試卡號 4539 1488 0343 6467(公開的測試號碼,不是真卡):

TEXT
位置 4 5 3 9 1 4 8 8 0 3 4 3 6 4 6 7
乘2 ×2 ×2 ×2 ×2 ×2 ×2 ×2 ×2
結果 8 5 6 9 2 4 7 8 0 3 8 3 3 4 3 7
↑16-9 ↑12-9 ↑12-9
​
8+5+6+9+2+4+7+8+0+3+8+3+3+4+3+7 = 80
80 ÷ 10 整除 → 通過
PYTHON
def luhn(s: str) -> bool:
digits = [int(c) for c in s if c.isdigit()][::-1]
total = 0
for i, d in enumerate(digits):
if i % 2 == 1:
d *= 2
if d > 9:
d -= 9
total += d
return total % 10 == 0

Luhn 抓得出所有單一位數打錯,以及絕大多數相鄰兩位對調,唯一漏網的是 09 跟 90 互換。它的設計目的是防手動輸入錯誤,不是防偽造:知道算法的人要湊一個通過驗證的假卡號很容易。除了信用卡,手機 IMEI、加拿大社會保險號也用 Luhn。

信用卡號在勞資文件裡不算常見,但報帳單、費用核銷、出差申請這類文件會出現。它的處境比較接近第 6 類的 IT 憑證:卡號出現在你手上的文件裡本身就是合規問題(PCI DSS 對持卡人資料的儲存有明確限制),遮掉之後可能還要往回追這份文件為什麼會有卡號、有沒有別的副本。

有兩個地方容易誤會。通過檢查碼只證明格式合法,不證明真有這個人;去識別化本來就不需要查真偽,目標是「這看起來是身分證字號,遮掉」。另外,沒有檢查碼的號碼別假裝有:手機、健保卡號、護照都只能靠上下文關鍵詞壓誤判,誤判率天生比較高。

公司統一編號與外籍居留證統一證號也有檢查碼。統編的餘數規則財政部調整過,實作前要查一下現行規定。

2. 弱格式直接識別碼

沒有格式特徵,正則抓不動,得靠詞典或 NER。誤判率高,要設人審門檻。

資料項為什麼難手法
中文姓名與一般詞彙重疊,無格式特徵姓氏表+NER+欄位名上下文
英文與外籍音譯名移工文件常見,音譯無標準NER
地址(戶籍/通訊/公司)縣市區路段巷弄號樓之,寫法極不一致正則骨架+郵遞區號與路名詞典
Line ID、社群帳號自由字串上下文關鍵詞
緊急聯絡人、眷屬姓名同姓名,但多出現在表格欄位NER+表格欄位名
簽名、印章在影像層,不在文字層見第 7 類
什麼是 NER

NER 是 Named Entity Recognition,命名實體辨識。它在一段文字裡標出哪幾個字合起來是一個人名、地名或組織名,輸出是位置區間加上類型。

正則問的是「這串字元長得對不對」,NER 問的是「這幾個字在這個句子裡扮演什麼角色」。人名沒有格式可言,只能靠上下文判斷。

TEXT
輸入:本公司林口分公司之陳美玲於 113 年 3 月申請留職停薪
​
NER 輸出:
林口分公司 ORG
陳美玲 PER
113 年 3 月 DATE

同樣三個字「王品牛」,在「王品牛排用餐」裡是組織的一部分,在「王品牛先生來電」裡是人名。字面一樣,判斷靠前後文,這是查字典做不到的事。常見類型是 PER(人)、LOC(地)、ORG(組織),有些模型還會標 DATE、MONEY、TIME。

繁中主流是中研院的 CKIP Transformers(BERT-based,繁體語料訓練),另外有 spaCy 中文模型、HanLP。越南那邊是 underthesea、PhoBERT、VnCoreNLP。這些都能地端跑。

誤判率高的原因有四個,會疊在一起:

  • 中文沒有空格,詞的邊界要模型自己猜。「陳美玲」被切成「陳美」+「玲」,遮蔽就遮錯位置
  • 姓名跟一般詞彙重疊。「林口」的「林」是常見姓氏,地名很容易被誤判成人名,結果把公司名遮掉
  • 罕見姓氏、外籍音譯名、OCR 錯字都會讓模型失手
  • 領域落差最要命。這些模型多半用新聞語料訓練,實際餵進去的卻是薪資清冊、申訴書,表格排版與法律用語都是模型沒看過的文體,準確率會明顯掉

所以不會單靠 NER,實務上疊三層:欄位名上下文(「姓名:」後面那一格幾乎一定是人名)、姓氏表過濾、跨文件一致性投票(同一個字串在別份文件被判為人名,這份就跟著判)。

LLM 也能做 NER,通常更準也不用訓練,但慢、貴,而且原文要送出去,跟第四節的跨境傳輸限制直接衝突。合理的分工是 NER 當第一道:地端跑、批次快、成本低,先掃掉八成的姓名地址;剩下模型信心低的片段再交給 LLM 或人工,送出去的量也小很多。

3. 特種個資(個資法 §6)

法律上另有一套更嚴的蒐集處理限制。這一類幾乎都沒有格式,只能靠語意判斷,是 LLM 真正該上場的地方。勞資顧問手上的案件文件,這類內容不少。

資料項出現場景手法
醫療與健檢紀錄、診斷書病假證明、職災案件LLM 語意+人審
身心障礙證明、職災傷病描述職災補償、定額進用LLM+關鍵詞
犯罪前科、良民證錄用審查LLM+關鍵詞
工會會員身分、工會活動參與勞資爭議、不當勞動行為案件LLM
原住民身分、國籍與族群定額進用、移工管理關鍵詞+LLM
宗教信仰、政治傾向申訴書偶爾出現LLM
基因、性生活性騷擾調查案件LLM+整段人審

4. 人事與薪酬敏感資料

法律上不全屬個資,但在顧問情境下常常需要處理,條件見第三節。特點是很多是「數字」而非「識別碼」,所以手法通常是泛化成區間而不是整個遮掉。

資料項手法
薪資、獎金、薪級、調薪紀錄上下文關鍵詞+數值區間化
出勤與加班時數、打卡紀錄表格欄位辨識+泛化
考績、績效評等關鍵詞
懲處、申誡、記過紀錄LLM 語意
資遣與解僱事由、離職原因LLM 語意
申訴、性騷擾調查、爭議調解內容LLM+整段人審
薪轉帳戶同第 1 類,正則處理

5. 準識別碼

單獨看都不是個資,組合起來卻能還原到個人。這是最容易整桶漏掉的一類,也是重識別風險的主要來源。

資料項手法
部門、職稱、職級泛化(「副店長」→「基層主管」)
到職日、年資、年齡泛化為區間
性別、婚姻狀況、國籍視 k 值決定保留或泛化
員工編號、工號、分機假名化,保留跨文件一致性
工作地點、廠區、門市代號泛化到縣市層級

處理原則是 k-匿名任一組準識別碼的組合,在資料集中至少要對應到 k 個人;不足就往上泛化,直到達標。,實際做起來要跨文件統計,沒辦法單份文件獨立處理完。

6. IT 憑證與技術識別

資料項特徵手法
API Token、API Key各家有前綴:sk-、ghp_、AKIA、AIza、xoxb-前綴表+熵值偵測
私鑰、SSH key-----BEGIN ... PRIVATE KEY-----正則
JWTeyJ 開頭三段式正則
資料庫連線字串postgres://user:pass@host正則
.env 內容、Service Account JSON鍵值結構正則+結構解析
內網 IP、主機名、URL、port標準格式正則
MAC address、裝置 UUID標準格式正則

7. 載體層:影像與檔案 metadata

這不是一種資料類型,是一整個容易被漏掉的層,前面六類都可能藏在這裡。

位置內容手法
掃描件、身分證影本、簽名與印章圖前六類皆可能出現OCR+版面偵測,遮蔽需重繪影像
docx metadataauthor、last modified by、company直接清洗,不需偵測
PDF XMP metadata作者、建立工具、原始檔路徑直接清洗
追蹤修訂、註解修訂者與註解者姓名解析時一併處理
檔名與路徑「王小明_離職申請.docx」檔名一併改寫

二、遮掉名字就夠了嗎?

姓名、身分證字號都拿掉之後,薪資、考績這些留著到底有沒有差?

多數情況下這個判斷成立,因為薪資、出勤、考績是敏感「屬性」,不是「識別碼」。一份沒有名字的薪資數字,就只是一個數字。反過來說,數字全遮掉,那份文件拿去做分析或 RAG 也就沒意義了。

但有兩種情況會讓這個判斷翻車,而且在中小企業客戶身上很常見。

三、最低限度:用文件形態決定處理強度

每份文件都把七類跑滿,錢多半是白花的。比較省的做法是先判斷文件形態,再決定跑到第幾層。

三種文件形態

形態例子個資密度額外處理
A. 敘述型工作規則、人事規章、SOP、契約範本、內部公告極低,多半只有簽核人無,人事薪酬類完全不處理
B. 個案型申訴書、調解紀錄、懲處通知、職災報告、離職證明一份對一人加語意層:事由描述本身可能識別
C. 名冊型薪資清冊、出勤表、員工名冊、考績表一列一人,最容易被交叉比對加準識別碼泛化與 k-匿名

三層處理強度

  1. Tier 0:一律做,全自動零人審

    第 1 類強格式識別碼、第 6 類 IT 憑證、第 7 類 metadata 與檔名。

    正則就解決,成本極低,沒有不做的理由。

  2. Tier 1:一律做,需要模型

    第 2 類姓名與地址。

    誤判率高,要設人審門檻。

  3. Tier 2:條件觸發

    第 3、4、5 類:特種個資、人事薪酬、準識別碼。

    只有文件被判為 B 型或 C 型才啟動。

實務上 A 型文件通常佔量最大,公司內部規則那一整批幾乎都是 A。這一刀切下去,多數文件只要跑 Tier 0 跟 Tier 1。

TF-IDF 在這裡的角色

判斷一份文件屬於 A、B 還是 C,正好是 TF-IDF 加線性分類器最擅長的事:不需要 LLM、不需要大量標註,訓練成本極低,而且判錯也不致命,把門檻設寬一點偏保守,誤判成高強度只是多花錢。

TF-IDF 在整條流程裡只做一件事:決定每份文件跑到第幾層。辨識工作交給正則、NER 與 LLM。

四、跨國:什麼會變,什麼不變

前三節的規則以台灣為主。業務跨到越南之後,七類的分類架構不用動,因為分類的軸是「用什麼方法抓得到」,這件事跟國別無關。真正要換的是規則集內容與法源。

規則集要抽出來

實作上把識別碼規則做成註冊表,一個 locale 對應一組 {pattern, validator, context_keywords},偵測引擎讀註冊表跑,新增國家等於新增一筆資料,不改程式。

七類的跨國影響

類別跨國影響
1. 強格式直接識別碼換規則集,但驗證強度可能下降,見下方
2. 弱格式直接識別碼衝擊最大。越南姓名是姓+墊字+名的結構,Nguyễn 一個姓就佔近四成,中文 NER 完全不適用;地址是 tỉnh/huyện/xã 三級制,跟台灣結構無關
3. 特種個資法源不同。台灣依個資法 §6,越南依 PDPD(Nghị định 13/2023),敏感個資的列舉範圍不一樣。這是「該不該遮」的問題,跟「怎麼抓」無關
4. 人事與薪酬大致通用
5. 準識別碼手法通用,但母體規模差很多。越南廠 3000 人跟台灣辦公室 20 人,同樣的 k 值意義完全不同
6. IT 憑證完全通用,唯一不受國別影響的一類
7. 載體層通用,但 OCR 要支援越南文的變音符號

越南:檢查碼會退化

台灣這邊之所以能把第 1 類設成 Tier 0 全自動零人審,是因為檢查碼幫機器確認抓對了。越南的號碼大多沒有這一層。

CCCD(12 碼身分證)目前的理解是沒有公開的檢查碼,只有結構:前 3 碼省市代碼、第 4 碼含世紀與性別、接著 2 碼出生年、後 6 碼流水。能做的是「結構驗證」,用省市代碼表與出生年合理性去篩,強度比檢查碼弱。稅號 MST 則有檢查碼。

結論是 Tier 0 的零人審前提在越南不成立,第 1 類在越南要往 Tier 1 靠,設抽樣人審。

跨境傳輸要先拍板

PDPD 對個資的跨境傳輸有申報要求。這件事決定越南的文件能不能送到雲端 LLM,比前面所有偵測細節都更早需要決定:如果不能,第 3 類的語意判斷就只剩地端模型一條路,成本與效果都要重估。

跨國情境下,這個問題要在動工前先問,不要等 pipeline 都搭好才發現整條路走不通。

五、先問要不要做

前面四節都在講怎麼做。這一節講什麼時候不用做。

三個條件同時成立才划算

技術去識別化要值得做,需要量大、接收方不可信、無法用權限控制,三個同時成立。少一個,通常有更便宜的解法。紙本時代的做法一直都是鎖檔案室跟借閱登記,很少有人真的把文件洗一遍。

目的需要技術去識別化嗎
內部 RAG(HRM AI)不需要,見下方
餵雲端 LLM問題不在這一層,見下方
對外案例、教材量小,人工改寫更划算,還能連情境一起改掉
委外標註、交第三方廠商需要,量大且對象不可控
訓練模型需要,量大

情境一:內部 RAG

文件本來就全公司看得到的話,把它放進 RAG 並不會產生新的揭露。RAG 不改變資料的可見範圍,只改變取用的便利性;索引範圍跟原本的權限對齊,就沒有去識別化的問題。

這裡該做的是來源分級:確認每份進索引的文件原本給誰看,讓檢索結果照同一條線過濾。

但有三件事要留意。

  1. 便利性本身會製造問題。 「全公司看得到」跟「全公司一秒查得到」是兩回事。原本要翻三小時檔案才拼得出「誰被記過」,現在一句話就有答案。這不見得違法,但員工觀感、工會反應、內部信任都會出事。
  2. 來源清單常常混進不該全員看的東西。 工作規則的附件裡有簽核人手機、範本裡忘了刪的真實案例、公告 PDF 的 metadata 還留著人事主管姓名。審查的對象是來源清單,逐份確認它原本的可見範圍。
  3. 雲端 embedding 也是傳輸。 如果向量化走的是雲端 API,文件其實已經出門了。「內部 RAG」這個名字很容易讓人以為資料沒離開公司。

情境二:餵雲端 LLM

這裡真正的問題是能不能送出去。去識別化只是繞過限制的其中一條路,而且是最貴的一條。

三個選項照優先序排:

  1. 地端模型

    文件不出門,問題直接消失。成本與效果要評估,但這是唯一能徹底解決的做法。

  2. 企業條款

    Azure OpenAI、Bedrock、Vertex 這類提供資料處理協議、不用於訓練、zero data retention 的方案,讓「送出去」這件事本身變成可接受的行為。

  3. 去識別化

    洗乾淨再送。排最後。

排最後有個理由:它的失敗模式不可逆。漏掉一筆,資料就真的出去了,沒有第二道防線。拿它當送出門的通行證,等於把整份合規責任壓在一個做不到 100% 的技術上。

前兩個選項失敗的代價是成本或談判破局,第三個失敗的代價是外洩。

如果還是要做

定位成風險分流與人工複核輔助,產出是一份降低風險的文件加一張待審清單。

最省的一刀是分流。 高風險文件(B 型個案、C 型名冊)不進自動流程,或走人工通道,讓機器只處理它有把握的 A 型。這比把準確率從 95% 推到 99% 便宜太多,也可靠太多。

人工確認那一關要設計。 介面只放一個「請確認」按鈕的話,人會全部按過去,品管上叫橡皮圖章,等於沒有這一關。要讓它有效:只呈現模型信心低的片段、可疑項預設標紅並要求逐項處理、限制每次審查量避免疲勞、記錄誰在什麼時間確認了什麼。

最後一項是重點。誰按下確認,誰承擔。這把「系統有沒有 100%」的問題,轉成「有沒有盡到適當安全維護措施」,而後者才是法律真正在問的。

六、內部 RAG 的權限控管

第五節的結論是內部 RAG 不需要去識別化,需要的是權限對齊。這一節講怎麼對齊。

一句話原則:檢索結果的可見範圍等於來源文件的可見範圍。權限跟著文件走,不跟著索引走。

權限模型直接繼承來源系統

不要為了 RAG 另外發明一套權限。文件原本放在哪裡(SharePoint、Google Drive、檔案伺服器、HR 系統),就沿用那邊的授權設定,否則會養出兩套會不同步的權限,而且不同步的那一天你不會知道。

以 HRM 的情境,可見範圍大致是四層:

層級內容誰能看
全員工作規則、人事規章、SOP、公告、福利說明所有員工
部門所屬部門的出勤、考核、人力配置該部門主管
人資全公司名冊、薪資結構、申訴與調查案件HR 與經營層
本人自己的薪資、出勤、考績、勞健保員工本人

「本人」這一層是 HRM 特有的難題。前三層是文件層級的權限,一份文件對一群人開放,向量庫的 metadata filter 就能處理。但「本人」是資料列層級:同一份薪資清冊裡,每一列只有一個人能看,文件層的 ACL 模型撐不住。

過濾要做在檢索之前

做法原理評價
索引分離每個權限等級各建一個索引最不會出錯。等級少又穩定時的首選;缺點是跨等級文件要複製,權限異動要重建
前過濾向量檢索時就帶入權限條件正解。多數向量庫支援 filtered search,要留意過濾後的召回率下降
後過濾先檢索 top-k,再依 metadata 篩掉有風險,不建議

後過濾的問題在於 top-k 會被高權限文件佔滿,篩完之後可能只剩兩三筆甚至是空的,而使用者無從得知答案是在殘缺的檢索結果上生成的。這種失敗是沉默的。

還有一個容易漏的細節:ACL 要帶到 chunk 層。文件切塊之後,每一塊存進向量庫時都要帶上權限 metadata。只在文件層記錄、chunk 沒帶的話,過濾條件根本套不上去。

權限會變,索引不會自己知道

調職、離職、專案結束,權限每天都在變,但索引裡的 ACL 是建檔當下的快照。

比較省事的做法是在 ACL 裡存群組:索引寫的是「業務二部主管群組」,成員異動由來源系統管理,索引完全不用動。真正需要即時查的只剩「這個人現在屬於哪些群組」,那是一次很輕的查詢。

離職當天要能立刻失效,這件事不能靠定期同步的排程。

生成階段還有四個洩漏面

檢索過濾做對了,資料還是可能從後面漏出去。

  1. 答案要附引用來源。 這既是讓使用者判斷可信度,也是唯一能發現越權的方式。答案裡出現一份他不該看到的文件,只有標了出處才看得出來。
  2. 聚合效應。 每一份來源都合法,組合出來的答案卻可能構成新的揭露。第五節提到的「全公司看得到」跟「一秒查得到」的差別,在生成階段會被放大。
  3. 對話紀錄與快取。 語意快取如果跨使用者共用,會直接把 A 的答案送給 B。對話歷史被拿去做分析或給管理後台看,也是同樣的問題。查詢紀錄本身就很敏感,「某人連續三天在問資遣費怎麼算」這件事就是資訊。
  4. 提示注入。 文件內容裡藏的指令可能誘導模型吐出 context 裡的其他內容。防線是讓 context 裡從頭到尾只有這個人有權看的東西,模型層不做第二次過濾。

沒有權限時怎麼回應

這裡有個容易忽略的洩漏:回「你沒有權限查看這份文件」,等於告訴對方這份文件存在。在人事情境下,光是「有一份關於你的調查報告」就是資訊。

保守做法是一律回「查無相關資料」。缺點是使用者會困惑、會重複問。折衷是依內容敏感度分級:一般文件可以提示「有 N 筆結果因權限未顯示,請洽人資」,調查案件與個案文件則完全不透露存在。

稽核紀錄

記錄誰在什麼時間問了什麼、命中哪些 chunk。這是合規要求,也是唯一能事後發現異常的方式。

但查詢紀錄本身要當敏感資料保管:設保存期限、限制誰能看、不要讓部門主管能翻自己下屬問過什麼。

權限撐不住的三種情況

回到去識別化的時機只有這三種:

  1. 跨等級的聚合統計。 「全公司平均加班時數」需要讀所有名冊,但答案本身不敏感。這種要另外預先算好去識別化的彙總資料集,不要讓 RAG 直接讀原始名冊。
  2. 對外或委外。 案例、教材、第三方標註。
  3. 送出公司邊界。 包含雲端 embedding,見第五節。

除此之外,內部 RAG 的個資問題都是權限問題。

讀完這篇了嗎?
建立於 2026/08/27 非結構化文件-pii-去識別化.mdx