最近看到一個有意思的工作,原文來自:
https://blog.voyageai.com/2025/07/23/voyage-context-3/?utm_source=TWITTER&utm_medium=ORGANIC_SOCIAL
voyage-context-3:聚焦分段細節,融入全局文檔上下文
概要: Voyage AI 推出了 voyage-context-3
,這是一款情境化分段向量模型。它能為文本分段(chunk)生成向量,在無需手動添加元數據或上下文的情況下,自動捕獲完整的文檔上下文,從而顯著提升檢索準確性。與傳統方法(無論是否進行增強)相比,其檢索精度更高。同時,voyage-context-3
更簡單、更快、成本效益更優,可直接替代標準向量模型,無需改變現有工作流程,并且降低了對分段策略的敏感性。
在分段級別和文檔級別的檢索任務中,voyage-context-3
的表現均優于:
- OpenAI-v3-large 分別高出 14.24%和 12.56%。
- Cohere-v4 分別高出 7.89% 和 5.64%。
- Jina-v3 延遲分段(late chunking)分別高出 23.66% 和 6.76%。
- 情境化檢索(contextual retrieval)分別高出 20.54% 和 2.40%。
voyage-context-3
還支持多維度和多種量化選項,這得益于 Matryoshka 學習(Matryoshka learning)和量化感知訓練(quantization-aware training),在保持檢索精度的同時,顯著降低了向量數據庫的存儲成本。例如,voyage-context-3
(二進制,512 維)在性能上超越了 OpenAI-v3-large(浮點,3072維)0.73%,同時將向量數據庫存儲成本降低了 99.48%——這意味著幾乎相同的性能,但成本僅為 0.5%。
voyage-context-3
是一款新穎的情境化分段向量模型,其分段向量(chunk embedding)不僅編碼了分段自身內容,還能夠捕獲完整文檔的上下文信息。voyage-context-3
可以無縫替代現有 RAG(檢索增強生成)流水線中使用的標準、上下文無關的向量模型,通過捕獲相關上下文信息來提高檢索質量。
與采用獨立分段的上下文無關模型(例如 OpenAI-v3-large、Cohere-v4),以及通過重疊分段或附加元數據等方式為分段添加上下文的現有方法相比,voyage-context-3
在簡化技術棧的同時,顯著提升了檢索性能。
在分段級別(檢索最相關的分段)和文檔級別(檢索包含最相關分段的文檔)檢索任務中,voyage-context-3
平均表現均優于:
- OpenAI-v3-large:分段級別高出 14.24%,文檔級別高出 12.56%。
- Cohere-v4:分段級別高出 7.89%,文檔級別高出5.64%。
- 情境增強方法 Jina-v3 延遲分段1:分段級別高出 23.66%,文檔級別高出 6.76%。
*情境化檢索2:分段級別高出 20.54%,文檔級別高出 2.40%。 voyage-3-large
:分段級別高出7.96%,文檔級別高出 2.70%。
RAG 中的分段挑戰
聚焦細節與全局上下文的權衡。 在檢索增強生成(RAG)系統中,將大型文檔分解為更小的片段(即分段,chunks)是一個常見且往往必要的步驟。最初,分段主要是受限于模型有限的上下文窗口(盡管 Voyage 模型近期已顯著擴展了這一窗口)。更重要的是,分段能使向量包含對相應文本段的精確細粒度信息,從而使搜索系統能夠精準定位相關文本段。然而,這種聚焦有時會犧牲更廣闊的上下文。此外,如果不進行分段,用戶必須將完整的文檔傳遞給下游 LLM,這會增加成本,因為許多 token 可能與查詢無關。
例如,如果一份 50 頁的法律文件被向量化為一個單一的向量,那么諸如"客戶端與服務提供商基礎設施之間的所有數據傳輸應采用 GCM 模式的 AES-256 加密"這樣的詳細信息,很可能在聚合中被掩蓋或丟失。通過將文檔分段成段落并分別向量化每個段落,生成的向量可以更好地捕獲"AES-256 加密"之類的局部細節。但是,這樣的段落可能不包含全局上下文——例如"客戶名稱"——而這對于回答"客戶 VoyageAI 希望使用哪種加密方法?"這樣的查詢是必需的。
理想情況下,開發者期望同時擁有聚焦細節和全局上下文,且無需進行權衡。目前常用的變通方法——如分段重疊(chunk overlaps)、使用 LLM 進行上下文摘要(例如 Anthropic 的情境化檢索),或元數據增強——可能會給本已復雜的 AI 應用流水線引入額外的步驟。這些步驟通常需要進一步的實驗來調優,從而增加了開發時間和操作成本。
情境化分段向量模型介紹
Voyage AI 推出了情境化分段向量(contextualized chunk embeddings)模型,它能夠同時捕獲聚焦細節和全局上下文。該模型能一次性處理整個文檔,并為每個分段生成獨立的向量。每個向量不僅編碼了其分段內的具體信息,還編碼了粗粒度的文檔級上下文,從而實現了更豐富、語義感知更強的檢索。關鍵在于,神經網絡能夠同時"看到"所有分段,并智能地決定哪些來自其他分段的全局信息應注入到各個分段的向量中。
- 自動感知完整文檔上下文。 情境化分段向量模型能捕獲文檔的完整上下文,無需用戶手動或明確提供上下文信息。這與獨立的片段向量相比,顯著提升了檢索性能,并且比其他上下文增強方法更簡單、更快速、更經濟。
- 無縫即插即用,存儲成本相當。
voyage-context-3
可直接替代現有搜索系統、RAG 流水線和智能體系統中使用的標準、上下文無關的向量模型。它接受相同的輸入分段,并生成具有相同輸出維度和量化方式的向量——這些向量現已通過文檔級上下文進行了豐富,從而提升了檢索性能。與引入大量向量和存儲成本的 ColBERT 模型不同,voyage-context-3
生成的向量數量相同,且完全兼容任何現有向量數據庫。 - 對分段策略的敏感度更低。 盡管分段策略仍然會影響 RAG 系統的行為——并且最佳方法取決于數據和下游任務——但情境化分段向量模型在經驗上已證明能降低系統對這些策略的敏感度,因為模型會智能地用全局上下文補充過短的分段。
情境化分段向量模型優于手動或基于 LLM 的上下文處理方法,因為神經網絡經過訓練,能夠從大型數據集中智能地捕獲上下文,從而超越了特設方法(ad hoc effort)的局限性。voyage-context-3
在訓練時同時使用了文檔級和分段級相關性標簽,并采用了雙重目標,旨在使模型在保留分段級粒度的同時,融入全局上下文。
評估詳情
分段級別與文檔級別檢索。 對于給定的查詢,分段級別檢索(chunk-level retrieval)返回最相關的分段,而文檔級別檢索(document-level retrieval)則返回包含這些分段的文檔。下圖展示了來自 n 個文檔的分段在這兩種檢索級別上的表現。最相關的分段(通常稱為"黃金分段")以粗體綠色顯示;其對應的父文檔以藍色顯示。
數據集。 評估在 93 個特定領域檢索數據集上進行,這些數據集涵蓋了九個領域:網絡評論、法律、醫療、長文檔、技術文檔、代碼、金融、對話和多語言。具體列表可在此電子表格中查看。每個數據集包含一組查詢和一組文檔。每份文檔由通過合理的分段策略創建的有序分段序列組成。與往常一樣,每個查詢都有若干相關文檔,可能附帶一個表示相關程度的分數,稱之為文檔級相關性標簽,可用于評估文檔級檢索。此外,每個查詢還包含一份最相關分段的列表及其相關性分數,這些分段通過包括 LLM 標注在內的各種方式精心整理。這些被稱為分段級相關性標簽,用于分段級檢索評估。
評估還包含了專有的真實世界數據集,例如技術文檔和包含標題元數據的文檔。最后,使用與先前關于檢索質量與存儲成本分析相同的數據集,評估了 voyage-context-3
在不同向量維度和各種量化選項下的性能,采用標準單向量檢索評估方法。
模型。 評估了 voyage-context-3
以及幾種替代模型,包括:OpenAI-v3-large(text-embedding-3-large
)、Cohere-v4(embed-v4.0
)、Jina-v3 延遲分段(jina-embeddings-v3
)、情境化檢索、voyage-3.5
和 voyage-3-large
。
指標。 對于給定的查詢,根據余弦相似度檢索出前 10 個文檔,并報告歸一化折讓累積增益(NDCG@10),這是一種用于衡量檢索質量的標準指標,也是召回率的一種變體。
結果
所有評估結果都可以在這個電子表格中找到,以下將詳細分析這些數據。
特定領域質量。 下面的柱狀圖顯示了 voyage-context-3
在每個領域中,使用全精度 2048 向量時的平均檢索質量。在以下分段級檢索圖表中,可以看到 voyage-context-3
在所有領域中都優于所有其他模型。如前所述,對于分段級檢索,voyage-context-3
平均分別優于 OpenAI-v3-large、Cohere-v4、Jina-v3 延遲分段和情境式檢索 14.24%、7.89%、23.66% 和 20.54%。
voyage-context-3
在文檔級檢索中也超越了所有其他模型,這在下面的相應圖表中有所體現。平均而言,voyage-context-3
在文檔級檢索方面分別優于 OpenAI-v3-large、Cohere-v4、Jina-v3 延遲分段和情境式檢索 12.56%、5.64%、6.76% 和 2.40%。
真實世界數據集。 voyage-context-3
在專有的真實世界技術文檔和內部數據集上表現強勁,超越了所有其他模型。以下柱狀圖展示了分段級檢索結果。文檔級檢索結果可在評估電子表格中查看。
分段敏感度。 與標準、上下文無關的向量模型相比,voyage-context-3
對分段大小變化的敏感度較低,并且在分段較小時表現更強。例如,在文檔級檢索中,voyage-context-3
的方差僅為 2.06%,而 voyage-3-large
的方差為 4.34%。當使用 64 token 分段時,voyage-context-3
性能優于 voyage-3-large
6.63%。
上下文元數據。 同時評估了當上下文元數據被前置到分段時的性能。即使將元數據前置到由 voyage-3-large
向量的分段中,voyage-context-3
仍然能夠超越它高達 5.53%,這表明 voyage-context-3
在無需額外工作和資源來前置元數據的情況下,實現了更好的檢索性能。
Matryoshka 向量與量化。 voyage-context-3
支持 2048、1024、512 和 256 維的向量,這得益于 Matryoshka 學習(Matryoshka learning)3。同時,它還支持多種向量量化選項——包括 32 位浮點、有符號和無符號 8 位整數以及二進制精度——并能最大限度地減少質量損失。為了進一步闡釋上述圖表,下圖展示了文檔中的單向量檢索。與 OpenAI-v3-large(浮點,3072 維)相比,voyage-context-3
(int8,2048 維)在檢索質量提高 8.60% 的同時,將向量數據庫成本降低了 83%。此外,將 OpenAI-v3-large(浮點,3072 維)與 voyage-context-3
(二進制,512 維)進行比較,向量數據庫成本降低了 99.48%,而檢索質量提高了 0.73%;這意味著幾乎相同的檢索性能,但成本僅為 0.5%。
如何使用 voyage-context-3
voyage-context-3
現已推出免費 2 億個 token 。可以通過此快速入門教程開始體驗。
我們可以直接傳遞文本分割器(chunker)的輸出,它已經被構造為所需的列表列表 - 每個內部列表包含單個文檔的塊。
# Contextualized embedding model
query_embd_context = vo.contextualized_embed(inputs=[[query]], model="voyage-context-3", input_type="query").results[0].embeddings[0]embds_obj = vo.contextualized_embed(inputs=texts,model="voyage-context-3",input_type="document"
)contextualized_chunk_embds = [emb for r in embds_obj.results for emb in r.embeddings]
使用上下文化的塊嵌入執行語義相似性搜索。現在,我們可以執行相同的語義相似性搜索,但使用上下文化的塊嵌入。
# Compute the similarity
# Voyage embeddings are normalized to length 1, therefore dot-product and cosine
# similarity are the same.
similarities_context = np.dot(contextualized_chunk_embds, query_embd_context)# Rank similiarities
ranks_context = np.argsort(np.argsort(-similarities_context)) + 1# Combine chunks with their ranks and similarities
ranked_contextualized_chunks = []
for i, (chunk_data, similarity, rank) in enumerate(zip(all_chunks, similarities_context, ranks_context)):ranked_contextualized_chunks.append({"chunk": chunk_data["chunk"],"doc_id": chunk_data["doc_id"],"similarity": float(similarity),"rank": int(rank)})print(f"Contextualized chunk similarities:\n{json.dumps(ranked_contextualized_chunks, indent=2)}")
下表總結了(上下文無關)和(上下文化塊嵌入)的檢索排名。我們可以看到,在上下文嚴重丟失的情況下,上下文化塊嵌入可以顯著提高檢索準確率。它沒有優先考慮引用 SEC 文件的塊,而是正確地將 Leafy Inc. 收入增長的信息列為最相關信息,并將“黃金塊”置于頂部。
輸入問題:query = “What was the revenue growth for Leafy Inc. in Q2 2024?”
用戶可以將 voyage-context-3
無縫集成到任何現有的 RAG 流水線中,無需進行任何下游更改。情境化分段向量模型尤其適用于:
- 長篇、非結構化文檔,例如白皮書、法律合同和研究報告。
- 跨分段推理,即查詢需要跨越多個章節的信息。
- 高敏感度檢索任務——例如金融、醫療或法律領域——在這些領域,遺漏上下文可能導致代價高昂的錯誤。
Jina. " 長上下文向量模型中的延遲分段。"2024 年 8 月22 日。 ??
Anthropic. " 情境化檢索介紹。"2024 年 9 月 19 日。 ??
Matryoshka 學習:相關論文可參考 https://arxiv.org/abs/2205.13147。 ??