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