3秒看懂
Bi-Encoder 是一種深度學習模型架構範式,其核心思想是將輸入的兩個文本(如問題和文件)分別編碼成獨立的向量表示(Embedding),然後通過計算這兩個向量之間的相似度(如餘弦相似度)來判斷它們的相關性。它是建置大規模語義檢索和匹配系統的核心技術。
3分鐘產業解釋
在資訊爆炸的時代,如何從海量文本資料(網頁、文件、商品描述、使用者評論)中快速找到與查詢最相關的內容,是搜尋引擎、推薦系統、客服機器人等應用的核心挑戰。傳統基於關鍵詞的方法(如BM25)難以理解語義。
Bi-Encoder 的出現,將這一難題轉化為一個向量檢索問題。它像一個高效的“編碼器工廠”:
- 離線建庫:使用一個編碼器(通常是Transformer)將文件庫中的所有文本預先計算成向量,存入高效的向量資料庫(如FAISS、Milvus)。
- 線上查詢:當用戶輸入查詢時,使用另一個(或同一個)編碼器將查詢即時編碼成向量。
- 閃電匹配:在向量資料庫中,通過近似最近鄰搜尋演算法,瞬間找出與查詢向量最相似的幾個文件向量。
這種架構的核心優勢在於解耦:文件編碼可以離線完成,查詢編碼是輕量級的,而向量相似度計算速度極快。這使得系統能夠在毫秒級時間內,從億級文件中檢索出結果,滿足了即時性應用的需求。它支撐著現代網際網路的語義搜尋、廣告匹配、內容推薦等關鍵業務,是AI落地的基石技術之一。
15分鐘專家深入
Bi-Encoder 不僅是一種模型,更是一套完整的表徵學習與檢索工程範式。其核心創新點在於“獨立編碼”這一設計哲學,它犧牲了編碼階段兩個文本的充分互動,換來了檢索階段無與倫比的效率。
從技術內涵看,Bi-Encoder 系統包含三個關鍵元件:
- 雙塔/獨立編碼器:兩個編碼器(通常共享權重,即同一個模型)分別處理輸入文本A和B。這本質上是將複雜的語義匹配任務,分解為“學習好的文本表示”和“定義表示空間的距離”兩個子任務。
- 對比學習目標:模型通過對比學習進行訓練。在訓練時,將(query, 正相關文件)作為正樣本對,(query, 不相關文件)作為負樣本對。目標函式(如InfoNCE Loss)驅使模型讓正樣本對的向量距離儘可能近,負樣本對的向量距離儘可能遠。負樣本的挖掘策略(如隨機負取樣、困難負樣本挖掘)對模型效能影響巨大。
- 近似最近鄰檢索:訓練好的模型將文本對映到向量空間後,檢索問題就轉化為在這個空間中尋找最近鄰。使用HNSW、IVF-PQ等ANN演算法,可以在亞毫秒級完成搜尋。
關鍵效能瓶頸在於“獨立編碼”帶來的資訊互動缺失。對於需要深度推論、精確匹配的任務(如判斷句子間蘊含關係、文件問答),Bi-Encoder的效果通常不如同等引數的Cross-Encoder。因此,在工程上常採用級聯架構:先用Bi-Encoder快速召回Top-K個候選,再用更精確但更慢的Cross-Encoder對候選進行精排,以平衡效果與效率。
技術原理
Bi-Encoder 的核心機制在於將語義匹配任務建模為向量空間中的幾何問題。
1. 核心架構與前向傳播
# 虛擬碼示意
query = "如何學習機器學習?"
doc = "機器學習入門教程與實戰指南"
# 步驟1: 獨立編碼
query_embedding = Encoder(query) # 通常輸出 [CLS] token 或所有token的均值/池化
doc_embedding = Encoder(doc) # 使用同一個Encoder
# 步驟2: 計算相似度
# 常用餘弦相似度或點積
similarity = cosine_similarity(query_embedding, doc_embedding)
關鍵引數:
- Embedding 維度 (d):通常為768(如BERT-base)、1024或更高。維度越高,表示能力越強,但計算和儲存成本也越高。
- Encoder 模型:早期常用CNN/LSTM,現在主流是預訓練語言模型(PLM),如BERT、RoBERTa、Sentence-BERT、BGE、E5等。
- 池化策略:如何將變長的序列編碼轉為固定維度的向量。常見有[CLS] token、平均池化、加權池化等,對效能影響顯著。
2. 訓練目標:對比學習 訓練的關鍵是構造有效的正負樣本對,讓模型在向量空間中進行“拉拽”和“推斥”。
對於一批訓練資料 (q, d+, d1-, d2-, ..., dk-):
Loss = -log( exp(sim(q, d+)/τ) / [exp(sim(q, d+)/τ) + Σ_i exp(sim(q, di-)/τ)] )
- τ (Temperature):溫度係數,控制分佈的平滑程度,影響訓練的難度和穩定性。
- 負樣本 (d-):質量是關鍵。簡單的隨機負樣本會導致模型學習到“捷徑”。實踐中常採用批內負樣本(同一batch內其他樣本的正例文件互為負例)、困難負樣本挖掘(與查詢語義相近但實際不相關的文件)來提升模型區分能力。
3. 推論與檢索
[離線]
文件庫 D = {d1, d2, ..., dn}
向量庫 V = {Encoder(d1), Encoder(d2), ..., Encoder(dn)}
建立 ANN 索引 (e.g., HNSW)
[線上]
查詢 q -> vq = Encoder(q)
在 ANN 索引中檢索 Top-K 個與 vq 最近的向量
返回對應的文件 {d_i1, d_i2, ..., d_iK}
ANN演算法的召回率(Recall@K)與速度(QPS)是工程核心指標。
技術演進史
- 前深度學習時代 (2010s前期):以DSSM (Deep Structured Semantic Models) 為代表。使用深度神經網路將查詢和文件對映到語義空間,是Bi-Encoder思想的雛形,主要應用於搜尋廣告匹配。
- 表徵學習興起 (2010s中後期):隨著InferSent、USE等工作的出現,利用LSTM/CNN編碼句子並計算相似度成為主流。Sentence-BERT (2019) 里程碑式地將BERT引入該架構,證明了預訓練模型能生成高質量句子嵌入,使Bi-Encoder效能產生質變。
- 預訓練與對比學習融合 (2020s至今):
- SimCSE (2021):通過在編碼器中使用Dropout構造正樣本的無監督對比學習,極大提升了句向量的質量。
- Contriever, GTR:探索更大規模預訓練模型和更大數據對檢索能力的提升。
- 指令微調範式:如E5, BGE, GTE等模型,通過讓模型學習遵循“查詢-文件”的指令格式,在多種嵌入任務上取得SOTA,並推動了開源模型的繁榮。
- 多模態擴充套件:Bi-Encoder範式已成功擴充套件至圖文檢索(如CLIP)、影片檢索等領域。
技術路線對比 (量化表)
下表從技術本質和工程特性對比了三種主流文本相關性建模方法:
| 特性 | Bi-Encoder (雙塔) | Cross-Encoder (交叉編碼器) | Late Interaction (如ColBERT) |
|---|---|---|---|
| 核心思想 | 獨立編碼,計算向量相似度 | 拼接輸入,聯合編碼打分 | 獨立編碼, token級互動 |
| 架構 | 兩個獨立的編碼器,分別輸出 [CLS] 向量。 | 一個編碼器,將 [CLS] Query [SEP] Doc [SEP] 拼接後輸入。 | 兩個獨立的編碼器,輸出 每個token的向量。 |
| 互動方式 | 無直接互動,在向量空間層面比較。 | 深層、充分的互動,通過Self-Attention交叉。 | 淺層、後期的互動,在token向量層面計算MaxSim。 |
| 檢索階段效率 | 極高 (ANN檢索, 毫秒級) | 極低 (必須對每個候選文件進行完整編碼,無法預先計算) | 高 (文件向量可離線預計算,查詢時進行MaxSim,比Bi-Encoder慢但比Cross快) |
| 訓練階段效率 | 高 (可並行編碼,僅計算向量相似度損失) | 低 (需要為每個樣本對進行完整前向傳播) | 中高 (類似Bi-Encoder,但計算MaxSim有一定開銷) |
| 效果潛力 | 受限於資訊瓶頸,對複雜語義匹配能力較弱。 | 最強,充分建模詞間關係,適合複雜語義匹配。 | 接近Cross-Encoder,通過token級互動彌補了Bi-Encoder的資訊損失。 |
| 主要應用場景 | 大規模召回/檢索第一階段 (搜尋、推薦初篩) | 精排/重排序第二階段 (對Top-K結果精排) | 介於兩者之間,可用於召回或精排,是效能較好的折中方案。 |
結論:Bi-Encoder是效率最優解,Cross-Encoder是效果最優解,Late Interaction是效能折中方案。實際系統常採用級聯(Cascade)架構:Bi-Encoder召回 -> (可選Late Interaction粗排) -> Cross-Encoder精排。
上下游
上游(輸入與基礎設施):
- 預訓練語言模型 (PLM):BERT, RoBERTa, DeBERTa, LLaMA等,提供強大的基礎語義表示能力。
- 文本資料:高質量的(query, document)配對資料是訓練的關鍵。來源包括搜尋日誌、問答社群、人工標註等。
- 算力:GPU/TPU叢集用於模型訓練和大規模向量索引建置。
下游(應用與服務):
- 網際網路核心應用:語義搜尋引擎(替代/增強關鍵詞搜尋)、推薦系統(內容/商品召回)、廣告系統(查詢與廣告匹配)。
- 企業服務:智慧客服/問答系統(知識庫檢索)、文件管理(企業內部文件搜尋)、程式碼檢索。
- 新興場景:檢索增強生成(RAG)的核心元件,為大語言模型提供外部知識源;多模態檢索;對話系統。
關鍵指標
評估一個Bi-Encoder系統,需要從模型效能和工程效率兩個維度考量:
模型效能指標 (離線評估):
- 檢索質量:
- MRR@K / MAP:衡量相關文件排名靠前的程度。
- Recall@K:在Top-K個結果中,找回了多少比例的相關文件。是召回階段最核心的指標。
- NDCG@K:考慮文件相關程度等級的排名質量指標。
- 語義匹配:在語義相似度基準測試集(如STS-B, BEIR)上的相關性得分。
工程效率指標 (線上評估):
- 延遲 (Latency):單次查詢的端到端耗時,包括編碼和檢索。毫秒級是基本要求。
- 吞吐 (Throughput/QPS):系統每秒能處理的查詢數。
- 索引建置時間:將文件庫編碼並建置成ANN索引所需時間。
- 召回率-速度權衡 (Recall@K vs. QPS):在固定QPS下能達到的召回率,或達到目標召回率所需的QPS。這是ANN演算法選擇和調優的核心。
供需與市場資料
- 需求側:所有處理非結構化文本(及多模態資料)並需要快速檢索的網際網路和企業應用。隨著RAG和AI Agent的興起,對高質量、低延遲的向量檢索需求呈爆發式增長。
- 供給側:
- 模型層:開源社群主導,以Hugging Face Model Hub為核心,湧現瞭如BGE, E5, GTE, Sentence-Transformers等大量優秀的開源預訓練嵌入模型。閉源模型則以OpenAI的
text-embedding-ada-002等API形式提供服務。 - 基礎設施層:向量資料庫成為獨立賽道,代表公司包括Pinecone、Weaviate、Qdrant、Zilliz (Milvus)等。傳統資料庫(如PostgreSQL, Elasticsearch)也整合向量檢索外掛。
- 模型層:開源社群主導,以Hugging Face Model Hub為核心,湧現瞭如BGE, E5, GTE, Sentence-Transformers等大量優秀的開源預訓練嵌入模型。閉源模型則以OpenAI的
- 市場資料:這一快速增長的市場,從側面反映了Bi-Encoder範式及相關技術的巨大商業價值。具體市場規模需參照權威機構(如Gartner、IDC)釋出的即時行業分析報告。
代表公司與資本對映
- AI模型/平台公司:
- OpenAI:提供
text-embedding系列模型API。 - Cohere:核心產品即為企業級嵌入模型和檢索服務。
- Hugging Face:開源模型生態的中心,託管了絕大多數頂尖嵌入模型。
- OpenAI:提供
- 向量資料庫公司 (關鍵基礎設施):
- Pinecone:託管式向量資料庫領導廠商,估值數十億美元。
- Weaviate、Qdrant、Chroma:廣受歡迎的開源向量資料庫。
- Zilliz:開源專案Milvus背後的公司,提供雲端服務。
- 雲端服務商:
- Amazon AWS (OpenSearch Service, Kendra)、Google Cloud (Vertex AI Matching Engine)、Microsoft Azure (Azure AI Search) 均將向量檢索作為核心AI服務提供。
- 應用層公司:
- 搜尋引擎、廣告技術(如Criteo)、推薦系統(如Spotify, TikTok)公司是深度使用者和技術創新者。
投資邏輯
- 基礎設施先行:RAG和AI應用爆發的第一波紅利將由向量資料庫和嵌入模型服務獲得。它們是AI應用的“水電煤”,具有平台型潛力和網路效應。
- 開源模型商業化:頂級開源嵌入模型的公司(如BAAI-北航等團隊、MosaicML等)可能通過提供企業級微調、部署和最佳化服務來實現商業化。
- 垂直應用整合:能夠將先進的Bi-Encoder檢索技術與特定領域(如法律、醫療、金融)知識和工作流深度結合的SaaS公司,將建置深厚的壁壘。
- 關注效能與成本拐點:隨著模型和硬體進步,更小、更高效的嵌入模型可能帶來新的應用場景。訓練和推論成本是核心競爭維度。
常見誤讀糾偏
- 誤讀1:Bi-Encoder效果一定比Cross-Encoder差。
- 糾偏:這是在同等模型容量和互動深度下的理論比較。但在大規模檢索場景下,一個經過精心對比學習訓練的、大容量的Bi-Encoder,其效果可能遠超一個小型的Cross-Encoder。效果取決於具體任務、資料和模型設計。核心區別在於應用場景,而非絕對效果。
- 誤讀2:向量維度越高,Bi-Encoder效果越好。
- 糾偏:向量維度與模型容量和表示能力相關,但並非線性關係。過高的維度會帶來儲存成本激增和檢索速度下降,可能陷入“維度災難”。存在一個價效比拐點,即在該維度下,模型效能提升帶來的收益被儲存和計算成本抵消。實踐中,通常需要在效果和效率之間尋求平衡。
- 誤讀3:任何文本任務都應該先用Bi-Encoder做召回。
- 糾偏:對於短文本、關鍵詞密集、實體明確的查詢(如部分電商搜尋),傳統的關鍵詞檢索(如BM25)可能依然高效且準確。Bi-Encoder的優勢在於理解語義和意圖,適用於查詢與文件表述差異大的場景(如自然語言問答)。系統設計應允許混合檢索策略。
學習路徑
- 入門概念:理解Sentence-BERT論文,瞭解如何用BERT生成句向量並計算相似度。
- 掌握訓練:學習對比學習(Contrastive Learning)原理,實踐SimCSE等經典工作,理解負樣本的重要性。
- 工程實踐:使用
sentence-transformers庫快速搭建一個Bi-Encoder檢索系統。學習使用FAISS或Milvus建置向量索引。 - 進階研究:閱讀BEIR、MTEB等基準測試論文,瞭解模型在不同任務上的泛化能力。研究Late Interaction(如ColBERT)等改進範式。
- 產業應用:深入瞭解RAG架構,學習如何將Bi-Encoder與LLM結合,建置智慧問答系統。
一句話總結
Bi-Encoder 通過解耦編碼與匹配,以精妙的效率換效果權衡,將複雜的語義理解任務轉化為高效的向量檢索問題,從而成為支撐現代大規模AI應用(如語義搜尋和RAG)不可或缺的基石性技術範式。
延伸閱讀與來源
- 奠基論文:Reimers, N., & Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. EMNLP.
- 重要改進:Gao, T., Yao, X., & Chen, D. (2021). SimCSE: Simple Contrastive Learning of Sentence Embeddings. EMNLP.
- 前沿模型:Xiao, S., et al. (2023). C-Pack: Packaged Resources To Advance General Chinese Embedding. (BGE模型)。
- 基準測試:Thakur, N., et al. (2021). BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models.
- 產業分析:向量資料庫市場分析報告(如來自Gartner, Forrester或VC機構如a16z的報告)。