vec2text 技術已開源!一定條件下,文本嵌入向量可“近乎完美地”還原 原創
編者按: 我們今天為大家帶來的這篇文章,作者的觀點是文本嵌入向量并非我們想象中的安全載體,在某些條件下,通過適當的技術手段可以高精度地還原出原始文本內容。
作者在本文介紹了其開發的 vec2text 方法 —— 一種基于迭代優化的文本反演技術,能夠以 92% 的精確率還原 32 個詞元的文本序列,BLEU 分數高達 97 分。這一技術為企業在部署 AI 系統時的數據安全策略敲響了警鐘。
本文系原作者觀點,Baihai IDP 僅進行編譯分享
作者 | Jack Morris
編譯 | 岳揚
01 向量數據庫的崛起
近年來,隨著生成式 AI 的迅猛發展,眾多企業正爭相將 AI 技術融入其業務中。其中一個最普遍的做法,是構建能夠基于文檔數據庫中的信息來回答問題的 AI 系統。解決此類問題的主流方案大多基于一項關鍵技術:檢索增強生成(Retrieval Augmented Generation, RAG)。
RAG 系統概覽。?來源:"Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"[1]
這正是當下許多人開啟 AI 應用之旅所采用的一種既經濟又快捷的方案:將大量文檔存儲于數據庫中,讓 AI 根據給定的輸入檢索最相關的文檔,然后依據檢索到的文檔信息生成對輸入的響應。
這些 RAG 系統通過使用“嵌入向量”(embeddings)—— 即由嵌入模型(embedding model)生成的文檔向量表征 —— 來確定文檔的相關性。這些嵌入向量本質上是通過數學方式來表征語義關聯性,因此,與搜索需求相關的文檔,在嵌入向量空間中應具有較高的向量相似度(vector similarity)。
RAG 的普及推動了向量數據庫這一新型數據庫的崛起,這種數據庫專為存儲和搜索大量嵌入向量而設計。一些初創公司已經獲得了數億美元的資金[2-5],它們聲稱可以通過簡化嵌入搜索過程(embedding search)來促進 RAG 的發展。而 RAG 的有效性,正是大量新興應用將文本轉化為向量并存儲于這些向量數據庫的原因所在。
02 嵌入向量難以解讀
那么文本嵌入向量中存儲的究竟是什么?除了必須體現語義相似性(semantic similarity)這一要求外,對于給定文本輸入應分配何種嵌入向量并無任何約束。嵌入向量中的數值具有不確定性,其具體取值取決于模型的初始化狀態。我們或許能解讀不同嵌入向量之間的關聯性,但永遠無法理解單個嵌入向量的具體數值含義。
一個神經嵌入模型(淺藍色)接收文本輸入并生成用于搜索的嵌入向量
現在設想你是一名軟件工程師,正為公司搭建 RAG 系統。你決定將向量存儲在向量數據庫中。此時你發現,該數據庫實際存儲的是嵌入向量,而非原始文本數據。數據庫中充斥著大量看似隨機的數字,它們雖然代表著文本數據,但系統實際上從未真正“接觸”過任何原始文本。
你清楚這些文本對應的是受公司隱私政策保護的客戶文檔。但嚴格來說你從未將任何文本傳輸至外部;傳輸的始終是嵌入向量,這對你而言僅是一組隨機數字。
如果有人黑進數據庫并獲取所有文本嵌入向量 —— 這是否會造成嚴重后果?如果服務提供商想將您的數據售賣給廣告商 —— 他們能否做到?這兩種場景的核心在于:攻擊者能否獲取嵌入向量并通過某種方式反推出原始文本。
03 從文本到嵌入向量...再回到文本
從嵌入向量中復原原始文本的問題,正是我們在論文《Text Embeddings Reveal As Much as Text》(EMNLP 2023)[6] 中要解決的問題。嵌入向量是一種安全的信息存儲和通信載體嗎?簡而言之:能否從輸出的嵌入向量中還原輸入文本?
在深入探討具體解決方案之前,讓我們進一步剖析該問題。文本嵌入向量(text embeddings)本質上是神經網絡的輸出結果 —— 是對輸入數據實施非線性函數運算與序列化矩陣乘法后的產物。在傳統的文本處理神經網絡中,字符串輸入被拆分為若干詞元向量,這些向量會反復經歷非線性函數運算。在模型的輸出層,所有詞元將被聚合為單個嵌入向量。
信號處理(signal processing)領域有一條著名的規則叫數據處理不等式(data processing inequality),它表明:任何函數都無法為輸入數據增加信息量,它們僅能維持或削減既有信息量。盡管業界普遍認為神經網絡遠離輸入層的隱藏層會逐步構建更高級的特征表示,但實際上,它們并沒有添加任何輸入數據中原本不存在的信息。
此外,非線性層肯定會造成一些信息損失。現代神經網絡中“無處不在”的一個非線性層便是 ReLU 函數 —— 其核心運算邏輯是將所有負輸入值歸零。當 ReLU 函數在典型文本嵌入模型的許多模型層中被反復應用后,就不可能保留輸入的所有信息。
04 其他領域的信息反演問題
類似問題在計算機視覺領域也廣受關注。多項研究結果表明,來自圖像模型的深度表征(本質上是嵌入向量)可以在一定程度上還原輸入的圖像。早期的一項研究(Dosovitskiy, 2016)[7]表明,可以從深度卷積神經網絡(CNN)的特征輸出中還原圖像。研究者通過深度卷積神經網絡(CNN)提取的高層次特征信息,可以逆向重構出輸入圖像的近似版本,盡管重構的圖像不夠清晰,但仍保留了與原圖像相似的主要特征和結構。
在計算機視覺領域,反演模型(inversion models)(圖中使用黃色標注)在僅給定 ImageNet 分類器輸出的 1000 個類別概率值(其中絕大多數接近 0)的情況下,成功重建了圖像。(此圖來自《Understanding Invariance via Feedforward Inversion of Discriminatively Trained Classifiers》[8])
自 2016 年以來,人們不斷改進圖像嵌入反演技術:已開發出具有更高精度的反演模型[8-10],并被證明適用于更多場景[11]。令人驚訝的是,某些研究表明,僅憑 ImageNet 分類器的輸出(1000 個類別的概率值)也可以實現圖像的反演。
05 vec2text 的實現之旅
既然圖像表征能夠實現反演(inversion),那么文本表征為何不可?讓我們來思考一個簡化了的研究場景下的文本嵌入還原問題。在此實驗中,我們將文本輸入限制為 32 個詞元(tokens)(約 25 個單詞,相當于一條長度適中的句子),并將這些文本全部嵌入(embed)到由 768 個浮點數構成的向量中。若以 32 位精度(32-bit precision)計算,這些嵌入向量占用 32 * 768 = 24,576 比特(bits)即約 3 千字節(3 kilobytes)。
用海量比特表達寥寥數詞。 在這種情況下,你認為我們能否完美地重建原始文本呢?
首先,我們需要定義一個衡量標準,用來評估我們完成任務的效果。一個直觀的指標是"精確匹配率"(exact match),即反演后得到完全一致輸入文本的頻率。現有的反演方法在該指標上都沒有取得任何成功,可見其標準之嚴苛。因此我們或許應從更平緩的指標起步 —— 衡量復原文本與輸入文本的相似度。為此我們將采用 BLEU 分數(BLEU score),你可將其簡單理解為復原文本與原文的相似程度。
定義好評估指標后,我們將提出基于該指標的驗證方案。作為初步嘗試,我們可將反演問題轉化為傳統機器學習任務:收集海量的嵌入向量-文本配對數據集(embedding-text pairs),訓練一個以嵌入向量為輸入、輸出對應文本的模型。
這正是我們的實踐方案:我們構建了一個以嵌入向量為輸入的 Transformer 模型,并采用經典語言建模方法對輸出文本進行訓練。 通過該初步方案,我們獲得了一個 BLEU 分數約為 30/100 的模型。實際表現中,該模型能推測輸入文本的主題并捕捉部分詞匯,但會打亂詞匯順序且多數詞匯預測錯誤。其精確匹配率趨近于零。事實證明:要求模型通過單次前向傳播(forward pass)逆向還原另一模型的輸出是極其困難的(其他復雜文本生成任務亦如此,例如生成嚴格符合十四行詩押韻結構(perfect sonnet form)或需要同時滿足多重約束條件的文本)。
所考察架構概述。先前工作(左圖)采用僅解碼器架構(decoder-only architecture),并將嵌入向量作為前綴輸入(prefix)。我們最初訓練的編碼器-解碼器模型(中圖)在編碼器端(encoder-side)對升維處理的語句嵌入向量進行條件化處理。在我們的最終方案(右圖)中,除了升維處理后的“假設”嵌入向量外,還額外引入了“假設”文本作為輔助輸入。
在訓練初始模型后,我們發現了一個有趣現象。另一種衡量模型輸出質量的方法是:對生成的文本(我們稱之為“hypothesis(假設)”)進行重嵌入處理(re-embedding),并測量該嵌入向量與真實嵌入的相似度。 使用我們模型生成的文本來計算時,觀測到余弦相似度(cosine similarity)高達 0.97。這意味著我們能生成在嵌入空間中逼近真實文本(ground-truth text)但又不完全相同的文本。
(插敘:如果情況并非如此呢?也就是說,如果嵌入模型將錯誤的生成文本與原始文本映射為完全相同的向量表示,則該嵌入器(embedder)將具有信息有損性(lossy),導致多個輸入被映射至相同的輸出。此時,問題就會無解了 —— 因為當多個不同文本序列對應同一個嵌入向量時,系統根本無法追溯原始輸入。但在實際實驗中從未觀測到此類嵌入沖突(collisions)。)
生成文本與真實文本具有不同嵌入向量的觀察,啟發了我們采用類優化方法(optimization-like approach)實現嵌入反演。 給定目標嵌入向量(即需要獲得的真實嵌入)和當前“假設”文本及其嵌入(當前狀態),可訓練一個校正器模型(corrector model):該模型以輸出比原假設文本更接近真實嵌入的內容為訓練目標。
Vec2Text 方法概述。在獲得目標嵌入向量 e(藍色)和調用嵌入模型 φ(藍色模型)的查詢權限后,系統通過迭代生成(黃色模型)假設嵌入 ê(粉色)來逼近目標。
我們的目標現已明確:構建一個能同時接收真實嵌入向量、“假設”文本序列及其嵌入空間位置作為輸入,并預測原始文本序列的系統。我們將此視為一種“學習型優化”(learned optimization) —— 以離散序列的形式在嵌入空間中逐步推進。這正是我們命名為 vec2text 的方法核心。
在對一些細節進行處理并對模型進行訓練后,可得知該方法效果極佳!單次校正前向傳播即可將 BLEU 分數從 30 提升到 50。該模型的優勢在于天然支持遞歸查詢:給定當前文本及其嵌入向量,可運行多個優化步驟,迭代生成“假設”文本,重新將它們嵌入,并將其作為輸入反饋給模型。經過 50 步迭代和若干優化技巧,我們實現了:32 詞元序列的精確還原率達 92%,BLEU 分數達到 97!(通常達到 97 的 BLEU 分數意味著近乎完美重建每個句子,可能偶爾出現標點偏差。)
06 未來工作方向
文本嵌入向量能夠被完美反演(inverted)這一事實引出了諸多后續問題。首先,文本嵌入向量包含了固定的比特數量;當序列長度超過一定閾值時,信息必然無法完美存儲于此向量中。盡管我們能復原大多數長度為 32 詞元的文本,但某些嵌入模型可處理長達數千詞元的文檔。文本長度、嵌入維度與嵌入可逆性的關系分析將留給未來研究。
另一待解問題是:如何構建能防御反演攻擊的系統。是否存在一種模型,既能有效生成有實用價值的文本嵌入,又能對原始文本進行混淆處理?
最后,我們期待該方法在其他模態中的應用前景。vec2text 的核心思想(在嵌入空間中實施迭代式優化)未使用任何文本模態專用的技巧。這是一種通過黑盒訪問模型逐步還原任意固定輸入信息的方法。這些理念如何應用于其他模態嵌入的反演,以及更廣義的非嵌入反演方法,仍有待探索。
若需使用我們的模型反演文本嵌入,或自行開展嵌入反演實驗,請訪問 Github 倉庫:
??https://github.com/jxmorris12/vec2text??
References
Inverting Visual Representations with Convolutional Networks (2015), ??https://arxiv.org/abs/1506.02753??
Understanding Invariance via Feedforward Inversion of Discriminatively Trained Classifiers (2021), ??https://proceedings.mlr.press/v139/teterwak21a/teterwak21a.pdf??
Text Embeddings Reveal (Almost) As Much As Text (2023), ??https://arxiv.org/abs/2310.06816??
Language Model Inversion (2024), ??https://arxiv.org/abs/2311.13647??
END
本期互動內容 ??
?文章揭示的文本嵌入向量可逆性(近乎完美還原 32 詞元文本),是否讓你對將敏感數據存儲在向量數據庫中感到擔憂?你的公司/項目會因此重新評估使用向量數據庫存儲敏感文本的策略嗎?
文中鏈接
[1]??https://proceedings.neurips.cc/paper/2020/file/6b493230205f780e1bc26945df7481e5-Paper.pdf??
[3]??https://siliconangle.com/2023/04/06/chroma-bags-18m-speed-ai-models-embedding-database/??
[6]??https://arxiv.org/abs/2310.06816??
[8]??https://arxiv.org/pdf/2103.07470.pdf??
[9]??https://arxiv.org/abs/1806.00400??
[10]??https://arxiv.org/abs/2008.01777??
[11]??https://arxiv.org/abs/2112.09164??
本文經原作者授權,由 Baihai IDP 編譯。如需轉載譯文,請聯系獲取授權。
原文鏈接:
??https://thegradient.pub/text-embedding-inversion/??
