在 RAG + LLM 系統中,向量空間扮演著至關重要的角色。它就像一張知識地圖,幫助 LLM 快速定位相關資訊。
向量空間的概念,是將文字、圖像等資料轉換成高維空間中的點。這些點之間的距離,代表了它們在語義上的相似程度。當我們提出一個問題時,RAG 系統會將其轉換成向量,並在向量空間中搜索最接近的點,從而找到相關的資訊。
數據分析:
- 研究表明,使用高品質的向量嵌入模型,可以將 RAG 系統的檢索準確度提高 20% 以上。
- 向量索引的效率,直接影響了 RAG 系統的響應速度。
- 例如,FAISS 向量索引,可以在毫秒級別內,搜索數百萬個向量。
- 在今天的嘗試中,我們發現,使用 all-mpnet-base-v2 模型,可以有效地將文本轉換成具有語義資訊的向量。
然而,建立一個高品質的向量空間,並非易事。它需要以下幾個關鍵要素:
- 大量的資料:
- 向量空間的密集程度,直接影響了 RAG 系統的檢索效果。
- 資料量越大,向量空間的覆蓋範圍越廣,LLM 找到相關資訊的機率也越高。
- 例如,Google 的搜尋引擎,擁有數千億個網頁,可以提供極其密集的向量空間。
- 專業的技術:
- 將資料轉換成向量,需要使用專業的嵌入模型。
- 建立和維護向量索引,也需要專業的技術。
- 例如,Facebook 的 Sentence Transformers 模型,是一種常用的向量嵌入模型。
- 在今天的嘗試中,我們使用了 faiss-cpu 函式庫,建立了一個基於 L2 距離的平面索引。
- 持續的維護:
- 隨著時間的推移,資料庫中的資訊會不斷更新。
- 為了保持向量空間的準確性,我們需要定期更新向量索引。
- 例如,金融領域的 RAG 系統,需要每天更新市場數據和新聞資訊。
在我們的實作過程中,我們發現,即使是少量的資料,也能夠建立一個有效的向量空間。然而,當我們嘗試使用 Facebook 的 RAG 模型時,卻遇到了困難。這讓我們意識到,不同的 RAG 模型,可能對向量空間的建立和使用方式,有不同的要求。
案例分析:
- 電子商務公司,可以使用 RAG + LLM 系統,建立產品推薦系統。
- 透過建立產品描述和使用者評論的向量空間,系統可以快速找到與使用者興趣相似的產品。
- 在今天的嘗試中,我們發現,使用 sentence-transformers 模型,可以有效地將產品描述和使用者評論轉換成向量。
技術細節:
- 嵌入模型(Embedding Model):
- 將文字、圖像等資料轉換成向量的模型。
- 例如,Word2Vec、GloVe、BERT 和 Sentence Transformers。
- 向量索引(Vector Index):
- 用於快速搜索相似向量的資料結構。
- 例如,IVF(倒排檔案索引)、HNSW(分層可導航小世界)和 PQ(乘積量化)。
- 距離度量(Distance Metric):
- 用於計算向量之間距離的函數。
- 例如,歐幾里得距離、餘弦相似度和點積。