iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
生成式 AI

生成式AI的奇妙旅程:從ChatGPT到個人化應用系列 第 24

Day24 | 向量資料庫與 RAG:賦予大型語言模型「記憶」的關鍵技術

  • 分享至 

  • xImage
  •  

1. 引言:當 AI 不只會「說」,更要「說得對」

隨著 ChatGPT 這類生成式 AI(Generative AI)的創新,我們已經進入了一個對話式智慧時代。這些大型語言模型(LLM)的對話能力確實令人驚艷,但許多企業和開發者很快就發現一個核心問題:「LLM 不懂我們的資料。

不是模型不夠強大,而是它沒有接觸過你公司內部的文件、專案歷史,或是最新的產品手冊。在初始的 LLM 中,世界的知識被壓縮成靜態參數,模型既不會記住你個人的偏好,也無法調用額外的知識來輔助判斷。這就導致了一個常見的困擾:模型容易產生「幻覺」(Hallucination),給出聽起來可信但與事實不符的答案。

那麼,我們如何才能打造一個「懂你資料」的 AI 助理,讓它從「很會說」進化到「說得對」呢?

答案就藏在我們今天的主角——向量資料庫(Vector Database),以及它所驅動的 檢索增強生成(RAG, Retrieval-Augmented Generation) 架構中。向量資料庫正是為 LLM 應用提供「記憶」和「外部知識庫」的剛性需求工具。接下來,讓我們深入拆解這項關鍵技術的定義、原理以及它在 AI 時代的應用潛力。


2. 向量世界的基石:概念與原理深度解析

向量資料庫是 AI 應用底層基礎設施中的重要一環。它提供了一種高效且快速的方式,用來儲存和擷取高維度的點(即向量)。

2.1 核心概念:向量、嵌入與向量資料庫

A. 向量 (Vector) 與嵌入 (Embedding)

  • 定義與原理: 資訊以多種形式存在,包括非結構化的文字文件、多媒體和音訊。透過機器學習模型(嵌入模型,Embedding Model)的創新,我們可以將所有類型的資料編碼成向量。向量是 AI 理解世界的通用數據形式,它將高維數據(如文本)壓縮成一個低維空間的數學表示,藉此擷取資產的含義和內容,並保留語義關係。
  • 生活範例: 當你在智慧型手機上拍照並搜尋類似影像時,背後就是將你的照片轉換為一個向量,然後在資料庫中搜尋相鄰(相似)的資料點。
  • 技術範例: 在新聞推薦系統中,透過自然語言處理 (NLP) 演算法,可以將新聞標題和內容中的關鍵詞(例如「CBA 體育」、「總決賽」)轉換為新聞向量用戶特徵向量,用於新聞推薦。

B. 向量資料庫 (Vector Database)

  • 定義: 向量資料庫專門提供以高維度點存放和擷取向量的功能。
  • 關鍵功能: 除了儲存外,它還具有額外功能,可用於高效快速地查詢 N 維空間中的最近鄰。這類資料庫能保證 100% 資訊完整性,並提供查詢、刪除、修改、元數據過濾等操作。
  • 與傳統資料庫的差異: 傳統資料庫的索引是精確匹配(有或無數據返回)。而向量搜尋是模糊匹配,透過查詢相鄰向量來尋找類似的資產,返回的是相對最符合要求的 Top N 個數據。

2.2 向量索引的靈魂:HNSW 演算法深度解析

向量資料庫通常採用近似最近鄰 (ANN) 演算法進行索引,例如 k-最近鄰 (k-NN) 索引技術,而 HNSW (Hierarchical Navigable Small World) 就是其中一種被廣泛採用的演算法。

A. HNSW 的定義與優勢

  • 定義: HNSW 是一種圖形基礎的索引演算法 (graph-based indexing algorithm)。它用於改善高維度浮點向量的搜索性能。
  • 優勢: HNSW 提供優異的搜索準確度和低延遲,是專用向量資料庫(如 Milvus)中常見的索引類型。

B. HNSW 的工作原理:多層級圖結構

HNSW 演算法的核心是建立一個多層級的圖形結構,就像一張具有不同縮放級別的地圖。

  1. 分層結構 (Hierarchy):

    • 底層 (Bottom Layer): 包含所有的數據點。
    • 上層 (Upper Layers): 包含從下層採樣的數據點子集。
    • 每個層級的節點代表數據點,邊緣表示它們之間的鄰近度。
  2. 搜索流程 (Greedy Search):

    • 入口點 (Entry Point): 搜索從頂層的一個預定節點開始。
    • 貪婪搜索 (Greedy Search): 演算法在當前層次上貪婪地移動到最接近查詢向量的鄰居。上層主要用於導航目的,作為一個粗略的篩選器,快速接近目標。
    • 層次下降 (Layer Descend): 一旦在當前層次達到一個局部最小值 (local minimum),演算法就會透過預先建立的連接跳轉到下一個較低的層次,並重複貪婪搜索。
    • 最終精煉 (Final Refinement): 這個過程持續進行,直到到達最底層,在那裡進行最終的精煉步驟,以識別最精確的最近鄰居。

C. HNSW 性能關鍵參數 (Index Parameters)

HNSW 的性能取決於幾個控制圖形結構和搜索行為的關鍵參數:

參數 說明 調整建議 影響結果
M 每個節點在圖中每個層次的最大連線數(邊緣數)。 預設值為 30。對於高維度數據或高召回率要求,可增加 M。追求速度或降低記憶體時可減少 M。建議範圍:。 M 越高,圖形越密集,召回率和準確性越高,但記憶體開銷增加,插入時間變慢。
efConstruction 索引構建過程中考慮的候選鄰居數量。 預設值為 360。增加 efConstruction 可提高索引準確性,因為探索了更多潛在連接。建議範圍:。 efConstruction 越高,索引越準確,但索引時間變長,構建期間記憶體使用量增加
ef 搜索過程中評估的鄰居數量。此參數僅影響搜索過程,且專門應用於圖形的底層。 預設值為 TopK 结果 (limit)。增加 ef 可提高找到最近鄰的可能性(高召回率),但會增加搜索時間。建議範圍:[K, 10K]。 ef 越高,搜索準確性越高,但搜索時間增加

3. 深入探討:向量資料庫的應用、市場與挑戰

向量資料庫不只是一個資料儲存工具,它更是驅動下一代 AI 應用,特別是 RAG 架構的基礎設施。

3.1 核心應用場景:RAG 架構與企業智慧

向量資料庫最關鍵且爆發式增長的應用,就是為大型語言模型提供「記憶」,這主要透過 RAG(Retrieval-Augmented Generation) 架構實現。

A. RAG 的核心流程

RAG 結合了兩個階段:檢索 (Retrieval) 和生成 (Generation)。

| 步驟 | 說明 | 技術實現 |
| :--- | :--- | :--- | :--- |
| Step 1:語料庫準備 (Prepare) | 將企業專有的知識或語料(如文件、簡報、手冊)整理、拆段 (chunking),並透過 Embedding 模型轉化為向量化文本。這些向量被索引並儲存在向量資料庫中。 | 使用 get_embedding 函式將文字轉為向量。 Milvus/Pinecone/pgvector 等向量資料庫。 |
| Step 2:問題輸入 (Input) | 使用者的提問 (Query) 會被 Embedding 引擎轉化為提問向量。 | 使用 get_embedding 函式將提問轉為向量。 |
| Step 3:向量搜索 (Search) | 提問向量進入向量資料庫,透過向量搜尋引擎(例如 HNSW 索引)計算向量相似度。 | 搜尋向量資料庫找出 Top N 條語義最相關的內容(Facts/Context)。這是個模糊匹配過程。 |
| Step 4:Prompt 優化 (Prompt Optimization) | 輸出的 Top N 條相關內容,會與使用者的問題一起作為 Prompt (提示) 輸入給 LLM 模型。 | 組合 Prompt,通常包含一個 Prefix Prompt(例如:「根據以下內容回答問題,如果答案不在提供的文本中,請回答『我不知道』」)。 |
| Step 5:結果返回 (Result) | LLM 根據提供的上下文 (Context) 生成最終回答。 | 得到的生成內容更精準,且有效緩解了幻覺問題。 |

B. 實際應用場景

透過 RAG 架構,向量資料庫使 AI 應用不再僅限於通用的對話,更能處理具備語義理解需求的應用:

  • 企業知識查詢: AI 能從 HR 文件中找出語意最接近的段落,回答「我們公司的請假規定是什麼?」。
  • 客戶問答回覆: AI 能從產品手冊中找出說明,回應「產品 ABC 為什麼會跳錯誤碼 E47?」。
  • 多模態搜尋: 支援視覺化、語意和多模態搜尋。例如,透過向量分析的個性化推薦系統,可以根據用戶的歷史瀏覽記錄(關鍵詞)生成用戶特徵向量,進而從數百萬筆資料中推薦與用戶最感興趣的新聞。
  • 混合搜尋 (Hybrid Search): 開發人員可以將從影像和掃描文件中擷取的中繼資料(metadata)與向量一起編製索引,以便在關鍵字和向量上進行混合搜尋,並將語義理解融合到相關性排名中,以改善搜索結果。

3.2 商業價值與市場格局

向量資料庫的興起並非偶然,而是由 LLM 應用帶來的剛性需求驅動。

  • 成本效益: 數據向量化(Embedding)的成本非常低。例如,數據向量化($0.0004/每 1000 tokens)比最便宜的 GPT 3.5-turbo API 調用($0.002/每 1000 tokens)便宜了一個數量級。考慮到其對搜索精準度的提升,其經濟價值非常高。
  • 市場潛力: 隨著非結構化數據的增加(IDC 預測到 2025 年中國的數據量將有 80% 是非結構化數據),向量資料庫在非結構化數據處理需求中的佔比將持續提升。推測到 2025 年,向量資料庫將佔非結構化數據處理需求的約三成。
  • 競爭格局: 大模型廠商本身不構成直接競爭,因為 LLM 的訓練和推理只涉及 Embedding 模型,不需要向量資料庫。市場主要由專業廠商主導,例如 Zilliz (Milvus)PineconeWeaviateQdrant

3.3 挑戰、限制與潛在風險

儘管向量資料庫帶來巨大的創新,但作為一項相對新穎的技術,它也面臨著多方面的挑戰。

A. 模型與技術限制

  1. 效能與準確性的權衡: 向量索引技術(如 HNSW)是基於近似最近鄰 (ANN) 算法。ANN 算法需要在效率、儲存空間和搜索準確性之間進行權衡。需要持續推動改善可擴展性、近似準確性、延遲效能和經濟效益。
  2. 維護複雜度: 對於一些開源專用資料庫(例如 Milvus),雖然性能強大,但有使用者反映其維護起來比較麻煩,有時候會「莫名其妙地沒結果」。
  3. 核心功能成熟度: 許多向量資料庫仍需要讓核心資料庫能力更為成熟,例如安全、彈性、營運支援和支援多樣化的工作負載。

B. RAG 架構的維運挑戰

在實際導入 RAG 系統時,企業會遇到以下挑戰:

  • 內容更新同步: 內部知識庫經常更改,Embedding 資料也必須同步更新。
  • 分段策略優化 (Chunking): 如何將長文件拆分成適當的片段非常關鍵。太細可能找不到重點,太粗又不準確。
  • 權限控管: 為了保障企業數據安全,不同角色應當只能看到不同資料範圍,這需要良好的權限設計。
  • 查詢效能: 當資料量增大時,向量搜尋速度仍然可能成為瓶頸。

C. 外部風險

向量資料庫的應用直接受大模型應用的影響。儘管市場發展迅速,但如果商業應用落地推進緩慢,則會影響相關公司的市場開拓。此外,國內廠商在技術推進上可能存在不及預期的風險,因為目前市場仍以海外產品為主。


4. 向量資料庫的選擇與分層比較

當開發者開始選型時,市場上有幾種主要的解決方案,從專用的向量資料庫到傳統資料庫的擴展,各有其優勢與限制。

4.1 專用資料庫 vs. 擴展型資料庫

專用向量資料庫(如 Milvus, Weaviate, Qdrant)是天生為了處理高維度向量運算而設計的。相對地,關係型資料庫如 PostgreSQL 則透過擴展功能(如 pgvector)來支援向量。

類別 代表產品 技術焦點與優勢 限制與挑戰
專用向量資料庫 Milvus, Weaviate, Qdrant, Pinecone 專為向量相似性搜索優化,採用 ANN 算法。高性能、高可擴展性(能處理數百萬到萬億向量)。 Milvus:支援 GPU 加速向量搜索,有可視化操作界面。 Weaviate:支援內建嵌入、文本搜索、以及 BM25 關鍵詞搜索 + 混合搜索。 Qdrant:資源佔用少,可以在一個集合中儲存多種向量。 需要額外學習與維護新系統。 Pinecone 是專有技術,可能產生供應商鎖定。
關係型 DB 擴展 PostgreSQL + pgvector 團隊熟悉度高,部署容易。可以將文字、metadata 和向量儲存在同一個地方。內建對全文搜索(如 BM25 擴展功能)的良好支援。 效能通常較差,在資料量大時難以擴展。在 ANN 基準測試中,pgvector 通常墊底。
向量庫/非 DB FAISS, ANNOY, HNSWLib 適合概念驗證 (PoC)。HNSWLib 可支持并发读写,並且在生產環境中如果 RAM 空間足夠,可以實現極致效能。 通常只儲存靜態向量,不儲存關聯對象,缺乏 CRUD 功能。缺乏部署生態系統和容錯性。

4.2 搜索方式的差異

在專用向量資料庫中,搜索方式也呈現多樣化,不再是單純的向量比對:

資料庫 獨特的搜索方式/功能 說明
Milvus 多向量搜索 (Multi-vector Search) 適用於集合中有兩個或更多向量字段的情況。通過執行多個 ANN 搜索並結合結果進行重排,可明顯增加召回能力和提高搜索結果的有效性。
Weaviate 混合搜索 (Hybrid Search) 將 BM25 關鍵詞搜索和向量相似度搜索結合起來對結果進行排名,實現了語義和關鍵詞的優勢結合。
Qdrant 全文過濾器應用於向量搜索 雖然 Qdrant 不打算支持 BM25 或其他非向量基礎的檢索,但它可以將全文過濾器應用於向量搜索,即在具有特定單詞或短語的記錄中執行向量搜索。

4.3 向量相似度指標 (Metric Types)

向量資料庫使用不同的距離函數來衡量向量之間的相似性。Milvus 支援 COSINE (餘弦距離)、L2 (歐幾里得距離) 和 IP (內積) 等。選擇合適的度量標準對於不同任務的準確性至關重要。

指標名稱 描述 適用場景 優點與缺點
餘弦距離 (COSINE) 測量兩個向量之間角度的餘弦值。 高維空間/文本比較 (如文檔分類、語義搜索)。 主要考慮向量方向,適合文本等高維且標準化的數據。不適用於需要匹配向量維度的場景。
歐幾里得距離 (L2) 在多維空間中計算兩個向量之間的直線距離。 圖像識別、語音識別、手寫分析。 直觀、易於計算。在高維空間中可能因「維度災難」而表現不佳。
內積 (IP/Dot Product) 計算向量對應分量的乘積之和。 推薦系統、協同過濾。 計算速度快,能反映向量的大小和方向。對向量的大小和方向都敏感。

5. 結語:通往「智慧」AI 的下一站

今天的內容有點硬核,我們從向量資料庫的定義、到 HNSW 的多層結構,再到 RAG 的完整流程和市場選型,詳細探討了這項為 AI 賦予「記憶」的關鍵技術。

從過去依賴 TF-IDF 演算法的簡單關鍵詞匹配,到現在利用向量實現語義相似度搜索,AI 技術的發展已經從「數據檢索」進化到「語義理解」。向量資料庫正是釋放資料語義價值,讓 AI 不只是會講話,而是講**「對你有幫助的話」**的基礎。

如果你是開發者,正在努力讓你的 AI 助理能回答企業內部知識;如果你是產品經理,正在思考如何打造更精準的推薦系統;那麼向量資料庫絕對是你在 AI 時代不能忽視的基石。

雖然技術仍在快速發展,新的向量資料庫不斷湧現,但掌握 RAG 架構和向量索引(如 HNSW)的核心原理,能幫助你在這場 AI 浪潮中,選對工具,少走冤枉路。讓我們一起期待並動手實作,將這些知識庫變成真正有智慧的 AI 應用吧!


上一篇
Day23 | Few-Shot Learning 與 RAG:大型語言模型(LLM)知識增強的雙重策略
系列文
生成式AI的奇妙旅程:從ChatGPT到個人化應用24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言