【一文讀懂】RAG 的重要組成 - Embedding Model

根據我的觀察,在各個熱門的 RAG 引擎(如 AnythinRAG,RAGFlow,Dify)中,都包含了 Embedding Model(嵌入模型),那嵌入模型這個強大的工具,在 RAG 引擎中究竟起到什麼作用呢?本篇我將會通過通俗易懂的方式,爲各位同學揭開它的神祕面紗。

01 什麼是 Embedding

在學習嵌入模型之前,首先要搞明白什麼是 Embedding ?Embedding 是將離散的非結構化數據轉換爲連續的向量表示的技術。在自然語言處理中,Embedding 常常用於將文本數據中的單詞、句子或文檔映射爲固定長度的實數向量,使得文本數據能夠在計算機中被更好地處理和理解。通過 Embedding,每個單詞或句子都可以用一個實數向量來表示,這個向量中包含了該單詞或句子的語義信息。

以文本處理爲例,假設你有一句話:“貓喜歡魚。”在計算機中,單詞是以文字的形式存在的,但計算機並不能直接理解這些文字。Embedding 的作用就是把每個單詞轉化爲一個向量,例如把 “貓” 轉化爲一個向量 [0.1, 0.2, 0.3],把 “魚” 轉化爲另一個向量 [0.4, 0.5, 0.6]。這樣,計算機就能用這些向量來進行各種計算,比如找出 “貓” 和“魚”之間的關係。

這些向量不僅僅是隨機的數字,而是通過學習得到的,使得在某些特定的任務上,它們能夠很好的表示數據之間的相似性和關係。例如,相似的詞(如 “貓” 和“狗”)在向量空間中會比較接近,而不相似的詞(如 “貓” 和“汽車”)則會比較遠。

那爲什麼需要 向量 呢?計算機處理文字時,它們只能處理數字。因此,我們需要將文本轉換爲計算機可以理解的數字形式。這個向量就像是數據在數學空間中的一個 “地址”,通過這個 “地址”,計算機能夠更容易地理解數據之間的關係。

02 什麼是 Embedding Model

在自然語言處理(NLP)中,Embedding model(嵌入模型) 是一種將詞語或句子轉換成數字向量的技術。它實際上是將高維、離散的輸入數據(例如文本、圖像、聲音等)轉換成低維、連續的向量表示的過程。Embedding Model 就像是給每個詞或句子分配一個獨特的 “指紋”,這個“指紋” 能夠在數學空間中表示這個詞或句子的含義。這種模型將每個詞語或句子轉換成一個固定長度的數字向量。通過這種方式,計算機可以對文本進行數學計算,比如比較詞語的相似性、分析句子的意義等。

03 Embedding Model 的作用

在 RAG(Retrieval-Augmented Generation)引擎中,Embedding model 扮演着至關重要的角色,它用於將文本轉換爲向量表示,以便進行高效的信息檢索和文本生成。以下是 Embedding model 在 RAG 引擎中的具體作用和示例:

1. 文本向量化:

    - 作用:將用戶的問題和大規模文檔庫中的文本轉換爲向量表示。

    - 舉例:在 RAG 引擎中,用戶輸入一個問題,如 “如何製作意大利麪?”,Embedding model 會將這個問題轉換爲一個高維向量。

2. 信息檢索:

    - 作用:使用用戶的查詢向量在文檔庫的向量表示中檢索最相似的文檔。

    - 舉例:RAG 引擎會計算用戶問題向量與文檔庫中每個文檔向量的相似度,然後返回最相關的文檔,這些文檔可能包含製作意大利麪的步驟。

3. 上下文融合:

    - 作用:將檢索到的文檔與用戶的問題結合,形成一個新的上下文,用於生成回答。

    - 舉例:檢索到的關於意大利麪的文檔會被 Embedding model 轉換爲向量,並與問題向量一起作爲上下文輸入到生成模型中。

4. 生成回答:   

    - 作用:利用融合了檢索文檔的上下文,生成模型生成一個連貫、準確的回答。

    - 舉例:RAG 引擎結合用戶的問題和檢索到的文檔,生成一個詳細的意大利麪製作指南作爲回答。

5. 優化檢索質量:    

    - 作用:通過微調 Embedding model,提高檢索的相關性和準確性。

    - 舉例:如果 RAG 引擎在特定領域(如醫學或法律)中使用,可以通過領域特定的數據對 Embedding 模型進行微調,以提高檢索的質量。

6. 多語言支持:

    - 作用:在多語言環境中,Embedding model 可以處理和理解不同語言的文本。

    - 舉例:如果用戶用中文提問,而文檔庫包含英語內容,Embedding model 需要能夠處理兩種語言的文本,並將它們轉換爲統一的向量空間,以便進行有效的檢索。

7. 處理長文本:

    - 作用:將長文本分割成多個片段,併爲每個片段生成 Embedding,以便在 RAG 引擎中進行檢索。

    - 舉例:對於長篇文章或報告,Embedding model 可以將其分割成多個部分,每個部分都生成一個向量,這樣可以在不損失太多語義信息的情況下提高檢索效率。

通過以上幾點,Embedding mode 在 RAG 引擎中提供了一個橋樑,連接了用戶查詢和大量文本數據,使得信息檢索和文本生成成爲可能。如下圖所示,Embedding mode 正處於整個 RAG 系統的中心位置。

04 RAG 引擎中的工作流

以下是一個 RAG 引擎中工作流的示意圖,此流程基本與各大 RAG 引擎相匹配,只是各個不同的 RAG 引擎,其內部算法可能有所區別而已。讓我們一起來看看,RAG 引擎是如何工作的。

上圖中的 1-5 步,流程說明如下:

  1. 將查詢傳遞給嵌入模型,並在語義上將查詢內容表示爲嵌入的查詢向量。

  2. 將嵌入式查詢向量傳遞給向量數據庫。

  3. 檢索前 k 個相關上下文 – 通過查詢嵌入和我們知識庫中所有嵌入塊之間的距離來衡量檢索結果。

  4. 將查詢文本和檢索到的上下文文本傳遞給對話大模型(LLM)。

  5. LLM 將使用提供的內容生成回答內容。

05 總結

通過以上分析,估計各位同學對 RAG 引擎的工作流,以及 Embedding model 的作用已經有所瞭解,明白這些基礎知識後,對以後繼續學習大模型的 Fine-tuning,LangChain,AI Agent 等方法和概念提供了莫大幫助。

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