向量數(shù)據(jù)庫和 Embedding 是當(dāng)前 AI 領(lǐng)域的熱門話題。
Pinecone 是一家向量數(shù)據(jù)庫公司,剛剛以約 10 億美元的估值籌集了 1 億美元。
Shopify、Brex、Hubspot 等公司都在他們的 AI 應(yīng)用程序中使用向量數(shù)據(jù)庫和 Embedding。那么,它們究竟是什么,它們是如何工作的,以及為什么它們在 AI 中如此重要呢?讓我們一探究竟。
我們先看第一個問題,什么是 Embedding?你可能在 Twitter 上已經(jīng)看到這個詞被無數(shù)次提及。
簡單來說,Embedding 就是一個多維向量數(shù)組,由系列數(shù)字組成 。它們能夠代表任何東西,比如文本、音樂、視頻等等。我們這里將主要關(guān)注文本。
創(chuàng)建 Embedding 的過程非常簡單。這主要依靠 Embedding 模型(例如:OpenAI 的 Ada)。
你將你的文本發(fā)送給模型,模型會為你生成該數(shù)據(jù)的向量結(jié)果,這可以被存儲并在之后使用。
Embedding 之所以重要,是因為它們賦予我們進(jìn)行語義搜索的能力 ,也就是通過相似性進(jìn)行搜索,比如通過文本的含義。
因此,在這個例子中,我們可以在一個向量空間上表示“男人”、“國王”、“女人”和“王后”,你可以非常容易地看到它們在向量空間之間的關(guān)系。
來看一個更直觀的例子:
假設(shè)你是一個有一大箱玩具的小孩?,F(xiàn)在,你想找出一些類似的玩具,比如一個玩具汽車和一個玩具巴士。它們都是交通工具,因此它們是相似的。
這就是所謂的 “語義相似性”—— 表示*某種程度上** 事物具有*相似的含義或想法 。
現(xiàn)在假設(shè)你有兩個相關(guān)聯(lián)但并不完全相同的玩具,比如一個玩具汽車和一個玩具公路。它們并不完全相同,但因為汽車通常在公路上行駛,所以它們是相互關(guān)聯(lián)的。
那么,Embedding 為何如此重要呢?主要是由于大語言模型(LLM)存在上下文限制 。在一個理想的世界中,我們可以在一個 LLM 提示中放入無限數(shù)量的詞語。但是,正如許多人所知,目前我們還做不到。以 OpenAI 的 GPT 為例,它限制在大約在 4096 - 32k 個 token。
因此,由于其 “內(nèi)存”(即我們可以填充到其 token 的詞語的數(shù)量),我們與 LLM 的交互方式受到了嚴(yán)重限制。這就是為什么你不能將一個 PDF 文件復(fù)制粘貼到 ChatGPT 中并要求它進(jìn)行總結(jié)的原因。(當(dāng)然,現(xiàn)在由于有了 gpt4-32k,你可能可以做到這一點了)
那么,怎么把 Embedding 和 LLM 關(guān)聯(lián)起來解決 token 長度限制的問題呢?實際上,我們可以利用 Embedding,只將相關(guān)的文本注入到 LLM 的上下文窗口中。
讓我們來看一個具體的例子:
假設(shè)你有一個龐大的 PDF 文件,可能是一份國會聽證會的記錄(呵呵)。你有點懶,不想閱讀整個文件,而且由于其頁數(shù)眾多,你無法復(fù)制粘貼整個內(nèi)容。這就是一個 Embedding 的典型使用場景。
所以你將 PDF 的文本內(nèi)容先分成塊,然后借助 Embedding 將文本塊變成向量數(shù)組,并將其存儲在數(shù)據(jù)庫中。
在存儲分塊的向量數(shù)組時,通常還需要把向量數(shù)組和文本塊之間的關(guān)系一起存儲,這樣后面我們按照向量檢索出相似的向量數(shù)組后,能找出對應(yīng)的文本塊,一個參考的數(shù)據(jù)結(jié)構(gòu)類似于這樣:
{ [1,2,3,34]:'文本塊1', [2,3,4,56]:'文本塊2', [4,5,8,23]:'文本塊3', …… }
現(xiàn)在你提出一個問題:“他們對 xyz 說了什么”。我們先把問題“他們對 xyz 說了什么?”借助 Embedding 變成向量數(shù)組,比如[1,2,3]。
現(xiàn)在我們有兩個向量:你的問題 [1,2,3] 和 PDF [1,2,3,34],然后,我們利用相似性搜索,將問題向量與我們龐大的 PDF 向量進(jìn)行比較。OpenAI 的 Embedding 推薦使用的是余弦相似度。
好了,現(xiàn)在我們有最相關(guān)的三個 Embedding 及其文本,我們現(xiàn)在可以利用這三個輸出,并配合一些提示工程將其輸入到 LLM 中。例如:
已知我們有上下文:文本塊 1,文本塊 2,文本塊 3。
現(xiàn)在有用戶的問題:他們對 xyz 說了什么?
請根據(jù)給定的上下文,如實回答用戶的問題。
如果你不能回答,那么如實告訴用戶“我無法回答這個問題”。
就這樣,LLM 會從你的 PDF 中獲取相關(guān)的文本部分,然后嘗試如實回答你的問題。
這就簡單的闡述了 Embedding 和 LLM 如何為任何形式的數(shù)據(jù)提供相當(dāng)強大的類似聊天的能力。這也是所有那些“與你的網(wǎng)站/PDF/等等進(jìn)行對話” 的功能如何工作的!
請注意 Embedding 并非 FINE-TUNING。
來源:twitter-thread.com/t/ZH/ 1655626066331938818
審核編輯:劉清
-
ChatGPT
+關(guān)注
關(guān)注
28文章
1517瀏覽量
6932
原文標(biāo)題:向量數(shù)據(jù)庫是如何工作的?
文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論