LLM/RAG Zoomcamp 課外補充 4:混合搜索 Hybrid Search

本次使用的 GAI 工具是 Google Gemini。

提醒:本文不會詳細介紹混合搜索(之後可能會),而是告訴你到哪裡去進一步學習。

在觀看 2-6 影片時,很明顯因為時間的限制,講師只能很快帶過。

本文將分兩部分來做課外補充:混合搜索基本觀念、目前市場上有哪些開源選擇。


▌什麼是混合搜索?

這裡有三篇易於入門且觀點互補的推薦文章。選擇的標準是:

  1. 觀念清晰:用簡單易懂的方式解釋核心概念。

  2. 圖文並茂:通常包含有助於理解的圖表或程式碼範例。(現在你知道 Gemini 的推薦標準了)

  3. 權威來源:由該領域的領導廠商或專家撰寫,內容可靠。

1. Pinecone - What is Hybrid Search?

  • 中文標題:什麼是混合搜索?

  • 文章來源Pinecone Blog (向量資料庫領導者)

  • 推薦理由

    這篇文章是觀念入門的最佳起點。Pinecone 的技術文章以清晰易懂著稱。它從「為什麼需要混合搜索?」這個根本問題出發,解釋純關鍵字搜索 (Sparse Vector) 和純語意搜索 (Dense Vector) 各自的優缺點。

    文章圖文並茂,用非常直觀的圖表解釋了兩種搜索方式如何結合,並介紹了結果融合 (Result Fusion) 的基本概念。如果想建立穩固的、全面的理論基礎,這篇是必讀首選。

2. Elasticsearch - What is hybrid search?

  • 中文標題:什麼是混合搜索?

  • 文章來源Elasticsearch Blog (搜尋引擎龍頭,Gemini 自己說的喔)

  • 推薦理由

    這篇文章提供了從傳統搜尋引擎演進而來的獨特視角。Elasticsearch 是以關鍵字搜索 (BM25 演算法) 起家的,因此他們解釋混合搜索時,會更側重於如何將他們擅長的關鍵字搜索與新興的向量搜索進行結合。

    文章中詳細介紹了倒數排名融合 (Reciprocal Rank Fusion, RRF) 這個最主流的結果融合技術,解釋了它如何公平地結合來自兩種不同系統的分數。

    閱讀這篇文章,可以理解許多大型系統中,混合搜索的具體工程實現方式。

3. Qdrant - Hybrid Search: The Ultimate Guide

  • 中文標題:混合搜索:終極指南

  • 文章來源Qdrant Blog

  • 推薦理由

    這篇文章是 Qdrant 目前關於混合搜索最新、最全面的官方指南。它不僅涵蓋了課程中學到的「使用元數據過濾 (filtering) 」這種混合搜索方式,還介紹了 Qdrant 後來新增的、對「真正稀疏向量 (Sparse Vectors, 例如 SPLADE 模型)」的支援。該文章的優點是:

    1. 鞏固課程所學:再次看到如何利用 filter 實現精確的關鍵字篩選。

    2. 拓展新知:了解 Qdrant 如何支援更先進的稀疏向量模型,這是混合搜索的另一種主流實現方式。

    3. 範例程式:文章提供了直接可用的 Python 程式碼,展示不同混合搜索策略的實作細節。

4. 閱讀順序建議

  • 先讀 Pinecone 的文章,建立宏觀概念。

  • 再讀 Elasticsearch 的文章,了解業界最常用的 RRF 融合技術。

  • 最後讀 Qdrant 的文章,將所學與課程實作經驗連結,加深理解。


▌選擇哪個開源向量搜索方案?

以下表格以 GitHub Stars 為主要參考指標進行排序。

項目 主要開發者/組織 GitHub Stars (約) 核心語言 主要優勢 (Key Advantage)
Elasticsearch Elastic 73,000+ Java 統一的搜索與分析平台,頂級的混合搜索與日誌分析能力。
Faiss Meta AI 35,700+ C++, Python 業界標準的底層演算法庫,為眾多資料庫提供核心引擎。
Milvus Zilliz / LF AI & Data 35,500+ C++, Go 大規模生產環境設計的雲原生架構,生態系最成熟。
Chroma Chroma-core 20,600+ Python, Rust 極簡的開發者體驗,專為 AI 原生應用與快速原型設計。
Qdrant Qdrant Labs 20,400+ Rust 高性能與低延遲,記憶體安全,過濾與搜索效率極高。
Weaviate Weaviate 9,800+ Go 內建生成式搜索模組,簡化 RAG 應用開發,提供 GraphQL API。

表格重點解讀:

  • 社群熱度王者Elasticsearch 在整體社群熱度 (GitHub Stars) 上具有顯著優勢,這得益於其在全文檢索和日誌分析領域長期的領導地位。

  • 定位差異提醒:表格中 Elasticsearch 的定位是「全能型搜尋引擎」,而 Milvus, Qdrant, Chroma, Weaviate 則是「原生向量資料庫」,Faiss 則是「底層演算法庫」。

  • 如何選擇

    • 如果需要一個統一的平台處理文本、日誌、向量等多種數據,且已熟悉其生態,Elasticsearch 是首選。

    • 如果要建構一個專門處理大規模向量的系統,追求極致性能,MilvusQdrant 是理想選擇。

    • 如果追求最快的開發速度和最簡潔的 API 來搭建 LLM 應用,Chroma 非常適合。

    • 如果想直接使用最底層、最靈活的演算法來自行搭建搜索服務,應選擇 Faiss

更詳細的介紹,等有空再加進來。


▌參考資料