向量數據庫是如何工作的?

向量數據庫和 Embedding 是當前 AI 領域的熱門話題。

Pinecone 是一家向量數據庫公司,剛剛以約 10 億美元的估值籌集了 1 億美元。

Shopify、Brex、Hubspot 等公司都在他們的 AI 應用程序中使用向量數據庫和 Embedding。那麼,它們究竟是什麼,它們是如何工作的,以及爲什麼它們在 AI 中如此重要呢?讓我們一探究竟。

我們先看第一個問題,什麼是 Embedding?你可能在 Twitter 上已經看到這個詞被無數次提及。

簡單來說,Embedding 就是一個多維向量數組,由系列數字組成。它們能夠代表任何東西,比如文本、音樂、視頻等等。我們這裏將主要關注文本。

創建 Embedding 的過程非常簡單。這主要依靠 Embedding 模型(例如:OpenAI 的 Ada)。

你將你的文本發送給模型,模型會爲你生成該數據的向量結果,這可以被存儲並在之後使用。

Embedding 之所以重要,是因爲它們賦予我們進行語義搜索的能力,也就是通過相似性進行搜索,比如通過文本的含義。

因此,在這個例子中,我們可以在一個向量空間上表示 “男人”、“國王”、“女人” 和“王后”,你可以非常容易地看到它們在向量空間之間的關係。

來看一個更直觀的例子:

假設你是一個有一大箱玩具的小孩。現在,你想找出一些類似的玩具,比如一個玩具汽車和一個玩具巴士。它們都是交通工具,因此它們是相似的。

這就是所謂的 “語義相似性”—— 表示某種程度上事物具有相似的含義或想法

現在假設你有兩個相關聯但並不完全相同的玩具,比如一個玩具汽車和一個玩具公路。它們並不完全相同,但因爲汽車通常在公路上行駛,所以它們是相互關聯的。 

那麼,Embedding 爲何如此重要呢?主要是由於大語言模型(LLM)存在上下文限制。在一個理想的世界中,我們可以在一個 LLM 提示中放入無限數量的詞語。但是,正如許多人所知,目前我們還做不到。以 OpenAI 的 GPT 爲例,它限制在大約在 4096 - 32k 個 token。

因此,由於其 “內存”(即我們可以填充到其 token 的詞語的數量),我們與 LLM 的交互方式受到了嚴重限制。這就是爲什麼你不能將一個 PDF 文件複製粘貼到 ChatGPT 中並要求它進行總結的原因。(當然,現在由於有了 gpt4-32k,你可能可以做到這一點了)

那麼,怎麼把 Embedding 和 LLM 關聯起來解決 token 長度限制的問題呢?實際上,我們可以利用 Embedding,只將相關的文本注入到 LLM 的上下文窗口中。

讓我們來看一個具體的例子:

假設你有一個龐大的 PDF 文件,可能是一份國會聽證會的記錄(呵呵)。你有點懶,不想閱讀整個文件,而且由於其頁數衆多,你無法複製粘貼整個內容。這就是一個 Embedding 的典型使用場景。

所以你將 PDF 的文本內容先分成塊,然後藉助 Embedding 將文本塊變成向量數組,並將其存儲在數據庫中。

在存儲分塊的向量數組時,通常還需要把向量數組和文本塊之間的關係一起存儲,這樣後面我們按照向量檢索出相似的向量數組後,能找出對應的文本塊,一個參考的數據結構類似於這樣:

{

[1,2,3,34]: '文本塊 1',

[2,3,4,56]: '文本塊 2',

[4,5,8,23]: '文本塊 3',

……

}

現在你提出一個問題:“他們對 xyz 說了什麼”。我們先把問題 “他們對 xyz 說了什麼?” 藉助 Embedding 變成向量數組,比如[1,2,3]。

現在我們有兩個向量:你的問題 [1,2,3] 和 PDF [1,2,3,34],然後,我們利用相似性搜索,將問題向量與我們龐大的 PDF 向量進行比較。OpenAI 的 Embedding 推薦使用的是餘弦相似度。

好了,現在我們有最相關的三個 Embedding 及其文本,我們現在可以利用這三個輸出,並配合一些提示工程將其輸入到 LLM 中。例如:

已知我們有上下文:文本塊 1,文本塊 2,文本塊 3。

現在有用戶的問題:他們對 xyz 說了什麼?

請根據給定的上下文,如實回答用戶的問題。

如果你不能回答,那麼如實告訴用戶 “我無法回答這個問題”。

就這樣,LLM 會從你的 PDF 中獲取相關的文本部分,然後嘗試如實回答你的問題。

這就簡單的闡述了 Embedding 和 LLM 如何爲任何形式的數據提供相當強大的類似聊天的能力。這也是所有那些 “與你的網站 / PDF / 等等進行對話” 的功能如何工作的!

請注意 Embedding 並非 FINE-TUNING。

作者:Sully

來源:https://twitter-thread.com/t/ZH/1655626066331938818

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/fQjNdpRjVYMkNSP_Ly-0MQ