跳到主要內容

RAG 的向量怎麼選:Mistral 與 Voyage AI 的取捨

已生成 3

RAG 的第一哩路是把文字變成向量。這篇整理 embedding 在檢索中的位置、三個真正的旋鈕(維度/精度/領域),以及 Mistral 與 Voyage AI(by MongoDB)兩條路線的取捨與選型時機。

更新於 2026/07/30

做 RAG 時,大家把最多注意力放在 prompt 和選哪個 LLM,但決定「到底找不找得到對的資料」的,是更前面那一步:把文字變成向量的 embedding。模型選錯、維度開太滿、或忘了還有 rerank,後面接什麼大模型都補不回來。這篇把 embedding 在 RAG 的位置講清楚,再比較 Mistral 與 Voyage AI 兩條路線。


先想清楚 embedding 在 RAG 的位置

embedding 做的事只有一件:把 query 和每一段文件 chunk把長文件切成的小段落,通常數百 token,是檢索與 embedding 的基本單位。 放進同一個高維向量空間,讓「語意相近」變成「距離相近」。檢索時算 query 向量和庫裡每個向量的相似度,取最近的 top-k相似度最高的前 k 筆結果,例如 top-20。 幾筆送給 LLM。

關鍵是分清兩件事:embedding 決定「找得到什麼」,rerank檢索的第二段:用更重的模型把粗篩出的候選重新精排,把最相關的排到最前面。 決定「排得對不對」。很多人只做了第一段就說 RAG 不準——其實是少了第二段。

示意圖 · diagram generated/rag-embedding-pipeline.tsx
第一段 · embedding 檢索:找得到什麼第二段 · rerank:排得對不對文件庫切成 chunks使用者 query同一個 embeddingEmbedding modelquery 與 chunks → 同一個向量空間向量庫 Vector DB存所有 chunk 向量相似度檢索cosine → top-k 候選(如 top-20)Reranker 精排rerank-2.5 → top-n(如 top-3)LLM → 答案
RAG 檢索管線:embedding 負責把 query 與 chunks 放進同一個向量空間做粗篩,rerank 負責精排;兩段缺一不可。

三個真正的旋鈕

選 embedding 不是「挑一個最強的模型」這麼簡單。真正會影響成本與品質的是這三個旋鈕,而且它們常常比「換一家模型」更關鍵。

1. 維度(Matryoshka)

向量的維度越高,能塞進去的語意細節越多、檢索品質通常越好——但每筆向量的儲存、記憶體與比對成本也線性上升。近年的模型支援 Matryoshka一種訓練法,讓向量的前段維度就已濃縮最重要的資訊,因此可以直接截斷到較短維度而只損失少量品質。 表示法:同一個模型輸出的向量,你可以只保留前 256/512/1024/2048 維,品質只掉一點點。Voyage 的 4 系列支援這四段;Mistral 的 codestral-embed 甚至能截到任意整數維度。

2. 精度(量化)

除了「幾維」,還有「每一維用幾個位元存」。量化把 32-bit 浮點數壓成更小的表示(如 8-bit 整數或 1-bit 二元),大幅降低儲存與比對成本,換取少量品質。把預設的 float32 換成 int8(省 3/4)甚至 binary(1 bit,省 31/32),儲存與比對速度都大降,品質只微降。這是壓低向量庫成本最有效的槓桿,卻最常被忽略。

下面這個互動可以親手拖:把維度與精度往下調,看儲存怎麼崩塌式地變小。

動畫 · motion generated/embedding-dimension-tradeoff.tsx
每筆向量
4.1 KB
總儲存(1.0M 筆)
4.10 GB
比 float32×2048 省
50%
每筆向量儲存(相對 float32 × 2048 = 100%)
相對檢索品質(示意)
97%
相對比對速度(示意)
~2.0×
相對 float32 × 2048 基準
維度(Matryoshka 截斷)
精度(量化 dtype)
知識庫規模1.0M 筆 chunk

儲存數字為精確計算(每維位元組:float32=4、int8=1、binary=1/8)。相對品質與速度僅為示意,用來建立直覺,非任何實測基準。

拖動維度與精度,看百萬級知識庫的向量儲存如何崩塌式縮小——品質只掉一點。相對品質/速度為示意,非實測基準。

3. 領域

通用模型對一般文章夠用,但程式碼、金融、法律這類語料有自己的詞彙與結構,領域專用模型的檢索命中率會明顯較高。Voyage 有 voyage-code-3、voyage-finance-2、voyage-law-2;Mistral 則用 codestral-embed 專攻程式碼。選錯領域,維度開再高也救不回來。


Mistral 路線

線上 API 通用 + 程式碼 歐洲公司

法國 Mistral 提供兩個 embedding 模型,走「簡單、少旋鈕」的路線:

模型維度Context精度選項價格定位
mistral-embed1024(固定)8,192 tokenfloat32約 $0.10 / 1M token通用文字
codestral-embed1536 預設,最高 3072,可截任意維8,192 tokenfloat32 / int8 / uint8 / binary約 $0.15 / 1M token程式碼專用

mistral-embed 的向量是 norm 1(單位長度),所以 cosine similarity、dot product、Euclidean distance 三者等價,比對邏輯怎麼寫都不會錯。codestral-embed 則把維度與精度的旋鈕開好開滿,適合要壓儲存的大型程式碼庫。

TSembed-mistral.ts
import { Mistral } from "@mistralai/mistralai";
​
const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY });
​
const res = await client.embeddings.create({
model: "mistral-embed",
inputs: ["把這段話變成向量。", "還有這一段。"],
});
​
// res.data[i].embedding 是 1024 維的 number[]
const vectors = res.data.map((d) => d.embedding);

選 Mistral 的常見理由是資料落地:歐洲公司、有 EU 資料處理選項,對受 GDPR 或資料主權要求的專案較好交代。旋鈕少也意味著決策負擔小。


Voyage AI 路線(by MongoDB)

線上 API 全系列 + 領域模型 綁 Atlas

Voyage AI 專做檢索模型,產品線最完整:通用、程式碼、金融、法律、多模態,外加 reranker。

模型維度Context定位
voyage-4 / voyage-4-large / voyage-4-lite256 / 512 / 1024 / 204832,000 token通用(large 品質最高、lite 便宜快)
voyage-4-nano128 / 256 / 51232,000 token開放權重、極輕量
voyage-code-3256 / 512 / 1024 / 204832,000 token程式碼
voyage-finance-2102432,000 token金融
voyage-law-2102416,000 token法律
rerank-2.5—(輸出相關性分數)—精排用的 reranker

4 系列與 voyage-code-3 都支援 Matryoshka 維度截斷與 int8 / binary 量化,把前面講的兩個旋鈕開好;32,000 token 的 context 也比 Mistral 的 8,192 寬鬆,長文件切 chunk 的彈性更大。

身世與綁定

MongoDB 於 2025 年 2 月 24 日以約 2.2 億美元收購 Voyage AI,現為「Voyage AI by MongoDB」,深度整合進 MongoDB Atlas Vector Search。多數模型有 200M token 免費額度(領域模型 50M),計費綁定你的 Atlas 帳戶。如果你的向量庫本來就打算放 Atlas,這個整合是實打實的順路;反過來說,也是一種生態綁定。

Voyage 最被低估的一塊其實是 rerank-2.5。embedding 負責把候選撈出來,reranker 負責把對的排到最前面——兩段一起用,檢索品質常常比換更貴的 embedding 模型還有感。


什麼時候選哪個

判斷點通常不是「哪家分數高」,而是這幾件事:語料領域、資料要放哪、要不要壓成本。下面把常見情境收成一張互動選型卡。

動畫 · motion generated/embedding-model-selector.tsx

一般文件 / 客服 RAG

voyage-4Voyagemistral-embedMistral

多數專案的起點——文件問答、客服知識庫。voyage-4 品質優先,mistral-embed 旋鈕少、上手快。

先用預設維度跑通,別一開始就糾結量化。
不論選哪個,正式上線都建議在 embedding 之後補上 rerank(如 rerank-2.5)。
六種情境下的 embedding 選型建議:先看領域與資料落地,再談維度與成本;上線別忘了 rerank。

建議的落地順序

  1. 先用預設維度跑一版能檢索的 POC

    挑一個通用模型(voyage-4 或 mistral-embed)、用預設維度與 float32,先把「query 進來、撈得到相關 chunk」這條路打通,不要一開始就糾結量化。

  2. 用你自己的資料評估領域模型

    拿真實語料做小規模 A/B:通用 vs 領域模型(程式碼/金融/法律)。因為換模型要整庫重算,這個評估越早做越省。

  3. 上線前補上 rerank

    在 embedding 粗篩之後接一個 reranker(如 rerank-2.5)做精排。這一步對「答得準不準」的提升,往往比升級 embedding 模型更有感。

  4. 要降成本時,才動維度與量化

    知識庫規模上來、儲存或延遲吃緊時,再用 Matryoshka 降維 + int8/binary 量化把成本壓下來——這時你已經有真實資料可以量測品質掉多少。

回到開頭:embedding 決定 RAG 找得到什麼,rerank 決定排得對不對,維度與精度決定你付多少成本。Mistral 走「少旋鈕、歐洲落地」,Voyage 走「全系列 + 領域模型 + rerank + 綁 Atlas」。先問你的語料是什麼領域、資料要放哪,答案通常就浮出來了。


延伸閱讀


內容整理於 2026 年 7 月 · 模型、維度、額度與價格隨時異動,請以各官方文件為準

讀完這篇了嗎?
建立於 2026/07/29 rag-embedding-選型-mistral-與-voyage.mdx