5.10 Toán chi phí: API hay tự host
Trên mạng có rất nhiều bảng “chi phí reranker: API vs self-host”. Chúng tôi đã tìm nguồn sơ cấp cho chúng và không tìm được: mọi bảng như vậy dẫn về các bài blog tổng hợp không có phương pháp, không có nguồn. Nên mục này không dẫn lại bảng nào. Nó làm việc khác: dựng phép toán từ giá chính thức đã kiểm và số throughput đã đo, để bạn thay số của mình vào.
Bước 1 — Quy mọi cách tính tiền về một đơn vị
Phần tiêu đề “Bước 1 — Quy mọi cách tính tiền về một đơn vị”Bốn nhà cung cấp tính tiền theo bốn cách, và chúng không so trực tiếp được:
| Cách tính | Ai dùng | Điều dễ bỏ sót |
|---|---|---|
| Theo “search / query” | Cohere, Google, AWS Bedrock | Một query = tối đa 100 tài liệu. Vượt 100 → tính thành nhiều query |
| Theo token | Voyage, ZeroEntropy | Công thức không phải “tổng token tài liệu” — xem dưới |
| Theo giờ instance | Model Vault, tự host trên cloud | Trả tiền cả lúc không ai truy vấn |
| Theo QPS/instance | SageMaker | Cần biết throughput thật của model |
Công thức token của Voyage đáng chép ra vì nó phản trực giác — truy vấn được nhân lên theo số tài liệu:
Nghĩa là một truy vấn dài (ví dụ đã được rewrite hoặc có system context) tự nhân lên k
lần. Với k = 100, mỗi token thêm vào truy vấn tốn bằng 100 token tài liệu. Đây là một
lý do cụ thể để giữ truy vấn ngắn ở tầng rerank.
Bước 2 — Một ví dụ tính bằng tay
Phần tiêu đề “Bước 2 — Một ví dụ tính bằng tay”Giả định (thay bằng số của bạn):
k = 100 tài liệu / truy vấnđộ dài tài liệu = 200 tokenđộ dài truy vấn = 20 tokenTổng token theo công thức Voyage: (20 × 100) + (100 × 200) = 22.000 token/truy vấn.
Chi phí cho 1.000 truy vấn, dùng giá chính thức đã kiểm tháng 8/2026:
| Lựa chọn | Giá công bố | Chi phí / 1.000 truy vấn |
|---|---|---|
ZeroEntropy zerank-2 | $0,025 / 1M token | $0,55 |
Voyage rerank-2.5-lite | $0,02 / 1M token | $0,44 |
Voyage rerank-2.5 | $0,05 / 1M token | $1,10 |
Google semantic-ranker-default-004 | $1,00 / 1.000 count | $1,00 |
| Cohere Rerank 3.5 (AWS Bedrock) | $2,00 / 1.000 query | $2,00 |
(Nguồn từng con số ở 5.8. Với 200 token/tài liệu, không đụng tới ngưỡng chia chunk 500 token của Cohere — nếu tài liệu của bạn dài hơn thế, chi phí Cohere nhân lên theo số chunk.)
Nhận xét đầu tiên, và nó làm nhiều người bất ngờ: ở quy mô này, rerank rất rẻ. Một triệu truy vấn/tháng với Voyage lite là khoảng $440. Nếu hệ thống của bạn gọi một LLM sau đó, chi phí rerank thường là phần nhỏ trong hoá đơn.
Bước 3 — Tự host: công thức, và con số làm bạn dừng lại
Phần tiêu đề “Bước 3 — Tự host: công thức, và con số làm bạn dừng lại”với G là giá GPU mỗi giờ.
Số throughput cần thay vào, và đây là số đo thật, công bố bởi tác giả model, trên A100 fp16 — đáng quý vì đo trên reranker tiếng Việt:
| Model | doc/giây (A100, fp16) | NDCG@10 trên mMARCO-vi |
|---|---|---|
PhoRanker (0,1B, max_len 256) | 15 | 0,7422 |
bge-reranker-v2-m3 (0,6B) | 3,51 | 0,6872 |
bge-reranker-v2-gemma | 1,29 | 0,6785 |
Thay vào công thức với k = 100:
| Model | Thời gian / truy vấn | Giờ GPU / 1.000 truy vấn |
|---|---|---|
| PhoRanker | 100 / 15 = 6,7 s | 1,85 giờ |
| bge-reranker-v2-m3 | 100 / 3,51 = 28,5 s | 7,9 giờ |
Dừng lại ở đây một chút. 6,7 giây cho một truy vấn là con số không dùng được cho bất kỳ sản phẩm tương tác nào — và 1,85 giờ GPU cho 1.000 truy vấn thì đắt hơn mọi API trong bảng trên, với bất kỳ giá GPU nào thực tế.
Điều đó không có nghĩa là tự host luôn sai. Nó có nghĩa là:
Các con số throughput công bố là số của một luồng đơn, chưa tối ưu batch. Toàn bộ khoảng cách giữa “không dùng được” và “dùng được” nằm ở kỹ thuật phục vụ, không ở model.
Đó chính là nội dung 5.9: batch, xếp theo độ dài, fp16 trên GPU. Một điểm so sánh cho thấy khoảng cách đó lớn thế nào: một cross-encoder được distill rerank 100 đoạn trong khoảng 300 ms — nhanh hơn con số bảng trên khoảng 20 lần, và nhanh hơn một LLM reranker (~25–33 giây cho cùng việc) khoảng một trăm lần.
Bước 4 — Điểm hoà vốn, và cái bẫy thật của tự host
Phần tiêu đề “Bước 4 — Điểm hoà vốn, và cái bẫy thật của tự host”Cấu trúc chi phí của hai lựa chọn khác nhau về bản chất:
API: chi phí ∝ số truy vấn (0 truy vấn = $0)Tự host: chi phí ≈ HẰNG SỐ theo giờ (0 truy vấn = vẫn trả tiền GPU)Nên điểm hoà vốn không phụ thuộc “cái nào rẻ hơn mỗi truy vấn”, mà phụ thuộc tỷ lệ sử dụng GPU của bạn:
Với G = $2/giờ (thay bằng giá thật của bạn) → $1.460/tháng → hoà vốn ở khoảng
1,3 triệu truy vấn/tháng so với Voyage rerank-2.5, tức khoảng 0,5 QPS liên tục,
24/7.
Và đây là cái bẫy: để đạt tới ngưỡng đó, GPU của bạn phải thật sự xử lý được 0,5 QPS ở
k = 100. Với throughput chưa tối ưu ở bảng trên, một GPU không đạt nổi — nghĩa là bạn
sẽ trả tiền cho nhiều GPU trước khi hoà vốn được một GPU.
| Tình huống | Nên |
|---|---|
| Lưu lượng thấp hoặc thất thường | API. Không có gì cạnh tranh được với việc trả $0 lúc rảnh |
| Lưu lượng cao, đều, đã tối ưu batch | Tự host, và đo lại thật |
| Dữ liệu không được ra khỏi hạ tầng | Tự host — đây là lý do đúng nhất, và nó không phải lý do chi phí |
| Cần model tiếng Việt riêng, đã fine-tune | Tự host (không API nào phục vụ model của bạn) |
| Chưa biết QPS thật của mình | API trước. Đo, rồi tính lại |
Ba cách giảm chi phí không cần đổi model
Phần tiêu đề “Ba cách giảm chi phí không cần đổi model”Xếp theo tỷ lệ lợi ích / công sức:
| Đòn | Cơ chế | Ghi chú |
|---|---|---|
Giảm k | Chi phí tuyến tính theo k, cả API lẫn tự host | Núm mạnh nhất. Và 5.13 cho thấy k nhỏ hơn có thể tốt hơn |
| Rerank có điều kiện | Bỏ qua rerank cho truy vấn không cần (mã định danh, top-1 đã bỏ xa top-2) | Cắt được phần đáng kể lưu lượng mà không mất chất lượng (5.11) |
| Chunk ngắn hơn, truy vấn ngắn hơn | Với cách tính theo token, cả hai vào trực tiếp hoá đơn — và truy vấn bị nhân k lần | Đồng thời giảm latency do attention bậc hai (5.9) |
| Cache điểm | Truy vấn lặp không trả tiền lần hai | Hiệu quả phụ thuộc hoàn toàn phân phối truy vấn của bạn. Đo, đừng đoán |
→ Nên áp dụng vào AI Agent: bắt đầu bằng API và đo trong một tháng ba con số: số truy
vấn thật, k thật, và độ dài chunk thật. Ba con số đó biến mục này thành một quyết định
số học thay vì một cuộc tranh luận. Và nhớ so phần rerank với tổng hoá đơn — nếu nó
chiếm 3% chi phí LLM thì tối ưu nó là tối ưu sai chỗ.