【一文讀懂】RAG 的重要組成 - 向量數據庫

向量數據庫(Vector Database),看似莫測高深的一個名詞,在衆多 AI 技術文章中經常出現,那向量數據庫究竟是個什麼鬼呢?本篇深入淺出,爲各位同學介紹一下它的相關知識。

01 什麼是向量

首先,向量數據庫中保存的就是向量數據了,那什麼是向量呢?向量是一個數學概念,它可以表示爲一個包含多個數值的列表,這些數值(也稱爲分量)按照一定順序排列。在不同的上下文中,向量可以用來表示不同的事物。比如在日常生活中向量可以這樣表示:

向量的例子比比皆是,不難理解,覆蓋了我們生活中的方方面面。向量表中每個分量的意義,可以根據不同的實際用途而自由定義。

01 AI 中的向量

在 AI 領域中,將文本數據轉換成向量的過程就像把書裏的文字變成一種特殊的密碼,讓計算機能夠讀懂和處理,以下是幾種常用的向量數據表示方法:

1. 詞袋模型(Bag of Words, BoW)

詞袋模型是一種簡單的方法,它把文本看作一個單詞的集合,不考慮單詞的順序。我們會先確定一個詞彙表,統計每個單詞在文本中出現的次數。

例子:

假設我們有兩個句子:

句子 1: "我喜歡貓"

句子 2: "我喜歡狗"

我們先建立一個詞彙表:["我", "喜歡", "貓", "狗"]

然後我們可以將每個句子表示爲一個向量:

句子 1: [1, 1, 1, 0] ("我" 出現 1 次,"喜歡" 出現 1 次,"貓" 出現 1 次,"狗" 出現 0 次)

句子 2: [1, 1, 0, 1] ("我" 出現 1 次,"喜歡" 出現 1 次,"貓" 出現 0 次,"狗" 出現 1 次)

2. TF-IDF(Term Frequency-Inverse Document Frequency)

TF-IDF 是對詞袋模型的一個改進,它不僅考慮單詞在單個文檔中的頻率,還考慮單詞在整個語料庫中的重要性。它對於常見的單詞(如 “的”、“是”)會賦予較低的權重。

如果繼續使用上面的句子,我們計算每個單詞的 TF-IDF 值,然後用向量表示。這樣可以更好地區分文本之間的差異。

3. 詞嵌入(Word Embedding)

詞嵌入是一種將單詞映射到高維空間中的方法,使得語義相似的單詞在向量空間中也相近。常用的詞嵌入模型有 Word2Vec 和 GloVe。

例子:

在詞嵌入中,單詞 “貓” 和“狗”可能會被表示爲如下向量:

“貓”: [0.5, 0.2, 0.1]

“狗”: [0.4, 0.2, 0.3]

在這個向量空間中,儘管具體數字不同,但 “貓” 和“狗”的向量相對更近,因爲它們都是動物。

4. 句子或文檔嵌入

除了單詞,完整的句子或文檔也可以被轉化爲向量,常用的模型有 BERT 等。它們可以理解上下文,使得同義句的向量更接近。

例子:

句子 “我愛貓” 和“我喜歡貓”可能在模型中被表示爲:

“我愛貓”: [0.6, 0.5, 0.1]

“我喜歡貓”: [0.7, 0.4, 0.2]

儘管這兩個句子的詞不同,但它們的向量相似度較高,反映出它們的語義相近。

通過這個過程,原本複雜的文本數據就被轉換成了計算機可以理解和處理的向量形式。這些向量可以被用來訓練機器學習模型,讓模型學會識別文本中的模式和關係,比如判斷一個評論是正面的還是負面的,或者把一種語言翻譯成另一種語言。

03 向量數據庫的作用

我們把上述的向量數據放入數據庫中,就形成了向量數據庫。那向量數據庫在 RAG 技術中能起到什麼作用呢?其實也不難理解,向量數據庫在大模型 RAG(Retrieval-Augmented Generation,檢索增強生成)技術中,可以通俗地理解爲一個高效的 “知識倉庫” 和“搜索引擎”,它幫助大語言模型快速找到並使用相關信息。

下面用一個例子來說明這個過程:

假如你是一位圖書管理員,你的圖書館裏有成千上萬本書。每天,有人來問你各種問題,你需要從這些書中找到答案。但是,如果每回答一個問題,你都要一本一本地翻閱這些書,那效率就太低了。這就是傳統大型語言模型可能面臨的問題。

現在,我們有了向量數據庫這個得力助手,它通過簡易的流程,讓你在查找資料時的效率得到顯著提升。

1. 整理書架:首先,你把每本書的內容轉換成一種特殊的 “編碼”(即向量化),然後根據這些編碼整理書架,這樣你就可以快速找到相關的書籍。在向量數據庫中,這個過程稱爲 “索引”。  

2. 快速檢索:當有人問你問題時,你無需去翻閱整本書,而是根據問題的內容,快速找到包含答案的書籍。向量數據庫通過比較問題的 “編碼” 和書籍的“編碼”,迅速找出最相關的幾本書。

3. 智能組合:找到相關書籍後,你不是簡單地把整本書的內容都給對方,而是挑選最相關的一部分內容,結合問題,給出一個清晰、準確的答案。在 RAG 技術中,這就是將檢索到的信息與問題結合,生成答案的過程。  

假設有人來問:“中國的首都是哪?”你不需要去翻閱關於中國的整本書,而是快速在向量數據庫中找到與 “中國” 和“首都”這兩個關鍵詞最相關的信息片段,然後告訴他們答案是“北京”。

04 向量數據庫與嵌入模型的關係

上篇提到了另一重要工具 Embedding Model(嵌入模型),它與向量數據庫經常在同一個 RAG 引擎中同時出現,並且同時工作,它們之間存在以下關係:

1. 數據存儲: 嵌入模型生成的向量通常需要存儲在某種形式的數據庫中,向量數據庫提供了一種高效的存儲和可供檢索的容器。  

2. 相似性搜索: 嵌入模型的目標之一是使得相似的數據在向量空間中彼此接近。向量數據庫支持這種基於距離的相似性搜索,使得可以快速找到與查詢向量最相似的數據。

3. 性能優化: 向量數據庫的索引結構和查詢優化技術可以顯著提高嵌入模型在實際應用中的性能,尤其是在需要處理大規模數據集時。

4. 應用場景: 在推薦系統、圖像檢索等應用中,嵌入模型用於生成數據的向量表示,而向量數據庫則用於存儲這些向量並提供快速的相似性搜索服務。

05  結語

最近幾篇文章的內容雖然都有點枯燥,但都是大語言模型知識鏈中必不可少的一環,搞懂這些知識和概念是各位深入瞭解大語言模型原理的必經之路,向量數據庫與嵌入模型都是其中的重要知識點,大家可參考以下相關文章。

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