Hạ tầng Prompt Caching: Giảm Chi phí và Độ trễ LLM

Prefix caching của Anthropic giảm 90% chi phí và 85% độ trễ cho các prompt dài. OpenAI tự động bật caching mặc định (tiết kiệm 50% chi phí). 31% truy vấn LLM có sự tương đồng ngữ nghĩa—lãng phí lớn nếu không có caching. Cache reads chỉ $0.30/M token so với $3.00/M token mới (Anthropic). Kiến trúc caching đa tầng (semantic → prefix → inference) tối đa hóa tiết kiệm.

Hạ tầng Prompt Caching: Giảm Chi phí và Độ trễ LLM

Hạ tầng Prompt Caching: Giảm Chi phí và Độ trễ LLM

Cập nhật ngày 11 tháng 12 năm 2025

Cập nhật tháng 12/2025: Prefix caching của Anthropic giảm 90% chi phí và 85% độ trễ cho các prompt dài. OpenAI tự động bật caching mặc định (tiết kiệm 50% chi phí). 31% truy vấn LLM có sự tương đồng ngữ nghĩa với các yêu cầu trước đó, đại diện cho sự lãng phí lớn trong các triển khai không có hạ tầng caching.² Các tổ chức vận hành ứng dụng AI production đang bỏ lỡ khoản tiền đáng kể nếu không có chiến lược caching phù hợp.

Prompt caching của Anthropic giảm chi phí lên đến 90% và độ trễ lên đến 85% cho các prompt dài.¹ OpenAI đạt được giảm 50% chi phí với caching tự động được bật mặc định. Nghiên cứu cho thấy 31% truy vấn LLM có sự tương đồng ngữ nghĩa với các yêu cầu trước đó, đại diện cho sự lãng phí lớn trong các triển khai không có hạ tầng caching.² Các tổ chức vận hành ứng dụng AI production đang bỏ lỡ khoản tiền đáng kể nếu không có chiến lược caching phù hợp.

Prompt caching hoạt động ở nhiều cấp độ—từ prefix caching phía provider tái sử dụng các phép tính KV cache, đến semantic caching cấp ứng dụng trả về các phản hồi trước đó cho các truy vấn tương tự. Hiểu từng lớp và khi nào nên triển khai giúp các tổ chức tối ưu hóa cả chi phí và độ trễ cho các mẫu workload cụ thể của họ.

Nguyên lý cơ bản của caching

Chi phí inference LLM xuất phát từ hai nguồn: xử lý input token và sinh output token. Các chiến lược caching nhắm vào cả hai:

Input token caching (prefix caching)

Mỗi yêu cầu LLM xử lý các input token thông qua cơ chế attention của model, sinh ra các cặp key-value được lưu trong KV cache. Khi nhiều yêu cầu chia sẻ các prefix giống nhau—system prompt, few-shot example, hoặc document context—việc tính toán KV cache bị lặp lại không cần thiết.

Giải pháp prefix caching: Lưu trữ các giá trị KV đã tính toán cho các prefix phổ biến. Các yêu cầu tiếp theo có prefix trùng khớp bỏ qua việc tính toán lại, bắt đầu từ trạng thái đã cache.

Tác động chi phí: - Anthropic: Cache reads chi phí $0.30/M token so với $3.00/M cho xử lý mới (tiết kiệm 90%) - OpenAI: Giảm 50% cho cached token - Google: Giá biến động dựa trên context window

Tác động độ trễ: Bỏ qua tính toán prefix giảm time-to-first-token từ 50-85% tùy thuộc vào độ dài prefix.

Output caching (semantic caching)

Một số yêu cầu xứng đáng có phản hồi giống nhau—câu hỏi lặp lại, truy vấn deterministic, hoặc tra cứu không cần sinh lại.

Giải pháp semantic caching: Lưu trữ output phản hồi được đánh key bằng các input tương đồng ngữ nghĩa. Trả về phản hồi đã cache mà không cần gọi LLM cho các truy vấn trùng khớp.

Tác động chi phí: Phản hồi đã cache loại bỏ hoàn toàn các lệnh gọi API—tiết kiệm 100% khi cache hit.

Tác động độ trễ: Phản hồi trả về trong mili giây thay vì vài giây cho inference LLM.

Phân cấp caching

Các hệ thống production thường triển khai nhiều lớp caching:

Request → Semantic Cache (tiết kiệm 100%) → Prefix Cache (tiết kiệm 50-90%) → Full Inference
              ↓                                  ↓                              ↓
         Phản hồi đã cache              Trạng thái KV đã cache              Tính toán mới

Mỗi lớp nắm bắt các cơ hội tối ưu hóa khác nhau dựa trên các mẫu tương đồng yêu cầu.

Prompt caching cấp provider

Anthropic Claude

Anthropic cung cấp prompt caching có khả năng cấu hình cao nhất:³

Giá: - Cache writes: Phụ phí 25% so với giá input cơ bản - Cache reads: Giảm 90% (10% giá cơ bản) - Điểm hòa vốn: 2+ cache hit mỗi cached prefix

Yêu cầu: - Tối thiểu 1,024 token mỗi cache checkpoint - Tối đa 4 cache checkpoint mỗi yêu cầu - Thời gian sống cache: 5 phút từ lần truy cập cuối (mở rộng đến 1 giờ với hit thường xuyên) - Tối đa 5 lượt hội thoại có thể cache

Triển khai:

import anthropic

client = anthropic.Anthropic()

# Đánh dấu nội dung để caching với cache_control
response = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "You are an expert assistant for our enterprise software...",
            "cache_control": {"type": "ephemeral"}  # Đánh dấu để caching
        }
    ],
    messages=[{"role": "user", "content": "How do I configure user permissions?"}]
)

Thực hành tốt nhất: - Đặt nội dung tĩnh (system prompt, tài liệu) ở đầu prompt - Đặt nội dung động (input người dùng, hội thoại) ở cuối - Sử dụng cache checkpoint tại các ranh giới tự nhiên - Theo dõi tỷ lệ cache hit để xác minh tối ưu hóa

OpenAI

OpenAI triển khai caching tự động mà không cần thay đổi code:⁴

Giá: - Cached token: 50% giá input cơ bản - Không có phụ phí cache write

Yêu cầu: - Tối thiểu 1,024 token để đủ điều kiện caching - Cache hit xảy ra theo gia số 128 token - Thời gian sống cache: 5-10 phút không hoạt động

Hành vi tự động: - Prompt vượt quá 1,024 token tự động cache - Hệ thống phát hiện prefix trùng khớp giữa các yêu cầu - Không cần thay đổi API

Theo dõi:

response = client.chat.completions.create(
    model="gpt-4-turbo",
    messages=[...],
)

# Kiểm tra usage cho cache hit
print(f"Cached tokens: {response.usage.prompt_tokens_details.cached_tokens}")
print(f"Total input tokens: {response.usage.prompt_tokens}")

Google Gemini

Google cung cấp context caching cho các model Gemini:⁵

Giá: - Biến động dựa trên kích thước và thời lượng cached context - Phí lưu trữ cho nội dung đã cache

Tính năng: - Tạo và quản lý cache tường minh - Time-to-live có thể cấu hình - Chia sẻ cache giữa các yêu cầu

Triển khai:

from google.generativeai import caching

# Tạo nội dung đã cache
cache = caching.CachedContent.create(
    model='models/gemini-1.5-pro-001',
    display_name='product-documentation',
    system_instruction="You are a product expert...",
    contents=[product_docs],
    ttl=datetime.timedelta(hours=1)
)

# Sử dụng nội dung đã cache trong các yêu cầu
model = genai.GenerativeModel.from_cached_content(cached_content=cache)
response = model.generate_content("How do I configure feature X?")

Amazon Bedrock

AWS cung cấp prompt caching ở dạng preview cho các model được hỗ trợ:⁶

Yêu cầu: - Claude 3.5 Sonnet yêu cầu tối thiểu 1,024 token mỗi checkpoint - Checkpoint thứ hai yêu cầu 2,048 token

Mẫu triển khai khớp với cách tiếp cận cache_control của Anthropic trong cấu trúc API của Bedrock.

vLLM prefix caching

Inference tự host với vLLM bao gồm prefix caching tự động:⁷

Kiến trúc

Automatic Prefix Caching (APC) của vLLM lưu trữ các KV block trong hash table, cho phép tái sử dụng cache mà không cần cấu trúc cây:

Thiết kế chính: - Tất cả KV block được lưu trong block pool khi khởi tạo - Tra cứu dựa trên hash cho prefix matching - Các thao tác O(1) cho quản lý block - Duy trì hiệu quả bộ nhớ PagedAttention

Cấu hình

from vllm import LLM

llm = LLM(
    model="meta-llama/Llama-3.1-8B-Instruct",
    enable_prefix_caching=True,  # Bật APC
    gpu_memory_utilization=0.90,
)

Tác động hiệu năng

vLLM với PagedAttention cho thấy throughput cao hơn 14-24 lần so với triển khai naive.⁸ Prefix caching bổ sung:

  • Chênh lệch chi phí 10 lần giữa cached và uncached token
  • Giảm độ trễ hàng bậc độ lớn cho prefix trùng khớp
  • Hiệu quả bộ nhớ thông qua chia sẻ KV block

Cân nhắc bảo mật

vLLM hỗ trợ cache isolation cho môi trường chia sẻ:

# Cache salt theo yêu cầu ngăn truy cập cache xuyên tenant
response = llm.generate(
    prompt="...",
    sampling_params=SamplingParams(...),
    cache_salt="tenant-123"  # Cô lập cache theo tenant
)

Việc inject cache salt vào hash block ngăn chặn timing attack nơi kẻ tấn công suy luận nội dung đã cache thông qua quan sát độ trễ.

Mở rộng LMCache

LMCache mở rộng vLLM với khả năng caching nâng cao:⁹

Tính năng: - Tái sử dụng KV cache giữa các instance engine - Lưu trữ đa tầng (GPU → CPU RAM → disk) - Caching nội dung không phải prefix - Giảm độ trễ 3-10 lần trong benchmark

Kiến trúc:

vLLM Engine → LMCache → GPU VRAM (hot)
                     → CPU RAM (warm)
                     → Local Disk (cold)

Semantic caching

Semantic caching trả về phản hồi trước đó cho các truy vấn tương đồng ngữ nghĩa (không chỉ giống hệt):

GPTCache

GPTCache cung cấp semantic caching mã nguồn mở cho ứng dụng LLM:¹⁰

Kiến trúc:

Query → Embedding → Vector Search → Similarity Check → Response/API Call
              ↓           ↓              ↓
         BERT/OpenAI   Milvus/FAISS   Threshold (0.8)

Thành phần: - LLM Adapter: Tích hợp với các provider LLM khác nhau - Embedding Generator: Vector hóa truy vấn - Vector Store: Tìm kiếm tương đồng (Milvus, FAISS, Zilliz) - Cache Manager: Lưu trữ và truy xuất - Similarity Evaluator: Matching dựa trên ngưỡng

Triển khai:

from gptcache import cache
from gptcache.adapter import openai

# Khởi tạo semantic cache
cache.init(
    pre_embedding_func=get_text_embedding,
    data_manager=manager,
)

# Sử dụng cached OpenAI call
response = openai.ChatCompletion.create(
    model='gpt-4',
    messages=[{"role": "user", "content": "What is machine learning?"}]
)
# Các truy vấn tương đồng ngữ nghĩa ("Explain ML", "Define machine learning")
# trả về phản hồi đã cache

Hiệu năng

GPTCache đạt được cải thiện hiệu quả đáng kể:¹¹

  • Giảm API call: Lên đến 68.8% qua các danh mục truy vấn
  • Tỷ lệ cache hit: 61.6% đến 68.8%
  • Độ chính xác: Tỷ lệ hit tích cực 97%+
  • Giảm độ trễ: 40-50% khi cache hit, lên đến 100 lần cho full hit

Kỹ thuật nâng cao

Ngưỡng thích ứng VectorQ:¹²

Ngưỡng tương đồng tĩnh (ví dụ: 0.8) hoạt động kém trên các truy vấn đa dạng. VectorQ học các vùng ngưỡng đặc thù embedding thích ứng với độ phức tạp truy vấn:

  • Truy vấn thực tế đơn giản: Ngưỡng cao hơn (matching nghiêm ngặt hơn)
  • Truy vấn mở: Ngưỡng thấp hơn (tái sử dụng nhiều hơn)
  • Truy vấn mơ hồ: Điều chỉnh động

Phát hiện mẫu SCALM:

SCALM cải thiện GPTCache thông qua phát hiện mẫu và phân tích tần suất: - Cải thiện 63% tỷ lệ cache hit - Giảm 77% sử dụng token - Xác định các mẫu cache entry tần suất cao

Khi nào nên sử dụng semantic caching

Ứng viên tốt: - Truy vấn kiểu FAQ với không gian câu trả lời hạn chế - Truy vấn tra cứu (thông tin sản phẩm, tài liệu) - Phản hồi deterministic (tính toán, định dạng) - Ứng dụng lưu lượng cao với sự lặp lại truy vấn

Ứng viên kém: - Sinh nội dung sáng tạo yêu cầu tính độc đáo - Phản hồi cá nhân hóa (context đặc thù người dùng) - Thông tin nhạy cảm thời gian - Mẫu truy vấn ít lặp lại

Mẫu triển khai

Ứng dụng chat

Hệ thống chat hưởng lợi từ cả prefix và semantic caching:

Caching system prompt:

# System prompt tĩnh được cache ở đầu yêu cầu
system_prompt = """
You are a customer support agent for Acme Corp...
[2000+ token hướng dẫn và kiến thức]
"""

# Hội thoại động được thêm sau cached prefix
messages = [
    {"role": "system", "content": system_prompt, "cache_control": {...}},
    {"role": "user", "content": user_message}
]

Caching lịch sử hội thoại: Anthropic hỗ trợ caching tối đa 5 lượt hội thoại, giảm chi phí cho các hội thoại nhiều lượt.

Ứng dụng RAG

Retrieval-augmented generation cache context được truy xuất:

# Cấu trúc cache cho RAG
cached_context = {
    "system": system_prompt,           # Luôn được cache
    "documents": retrieved_chunks,      # Cache theo cụm truy vấn
    "examples": few_shot_examples       # Ổn định giữa các yêu cầu
}

# Chỉ truy vấn người dùng thay đổi
dynamic_content = {
    "query": user_question
}

Caching chunk tài liệu: Khi nhiều truy vấn truy xuất cùng tài liệu, prefix caching loại bỏ xử lý dư thừa của context chia sẻ.

Workflow agentic

Hệ thống agent với tool calling hưởng lợi từ prefix caching:

System prompt → Tool definitions → Conversation history → Current query
    (cached)       (cached)           (một phần cached)      (động)

Caching tool definition: Tool schema thường ổn định giữa các yêu cầu, làm cho chúng trở thành ứng viên cache lý tưởng.

Batch processing

Hệ thống batch với cùng prompt trên nhiều input:

# Template prompt ổn định
template = """
Analyze the following document for sentiment and key topics.

Guidelines:
[Extensive analysis guidelines - 1000+ tokens]

Document:
{document}
"""

# Xử lý batch với cached template
for doc in documents:
    response = client.messages.create(
        system=[{"text": template, "cache_control": {...}}],
        messages=[{"role": "user", "content": doc}]
    )

Đo lường hiệu quả

Các metric chính

Tỷ lệ cache hit:

Hit Rate = Cached Requests / Total Requests

Target: 30-60% cho semantic caching, 80%+ cho prefix caching với prompt cấu trúc.

Tiết kiệm chi phí:

Savings = (Full Cost - Cached Cost) / Full Cost

Theo dõi riêng cho các loại cache khác nhau.

Cải thiện độ trễ:

Latency Improvement = (Uncached TTFT - Cached TTFT) / Uncached TTFT

TTFT = Time to First Token

Framework giám sát

class CacheMetrics:
    def __init__(self):
        self.hits = Counter()
        self.misses = Counter()
        self.latencies = defaultdict(list)

    def record_request(self, cache_type: str, hit: bool, latency_ms: float):
        if hit:
            self.hits[cache_type] += 1
        else:
            self.misses[cache_type] += 1
        self.latencies[cache_type].append(latency_ms)

    def hit_rate(self, cache_type: str) -> float:
        total = self.hits[cache_type] + self.misses[cache_type]
        return self.hits[cache_type] / total if total > 0 else 0

Quyết định kích thước cache

Cân bằng sử dụng bộ nhớ với hit rate:

  • Semantic cache: Giám sát đường cong hit rate vs kích thước cache
  • Prefix cache: Thường được provider quản lý; tập trung vào cấu trúc prompt
  • LMCache tiers: Cấu hình dựa trên mẫu workload

Cân nhắc bảo mật

Ô nhiễm cache

Kẻ tấn công có thể cố gắng đầu độc cache bằng phản hồi độc hại:

Biện pháp giảm thiểu: - Xác thực phản hồi đã cache trước khi trả về - Triển khai kiểm tra tính toàn vẹn cache - Sử dụng đánh key cụ thể người dùng cho nội dung nhạy cảm - Đặt TTL phù hợp để giới hạn cửa sổ phơi nhiễm

Cô lập trong môi trường multi-tenant

def get_cache_key(user_id: str, query: str) -> str:
    # Đảm bảo cô lập cache cụ thể tenant
    return f"{user_id}:{hash(query)}"

Timing attack

Sự khác biệt độ trễ cache hit/miss có thể tiết lộ nội dung đã cache:

Biện pháp giảm thiểu: - Cache salt (vLLM) cho cô lập prefix - Thêm jitter nhân tạo vào thời gian phản hồi - Sử dụng đánh key cache cụ thể người dùng

Ma trận cân nhắc

Khía cạnh Prefix Caching Semantic Caching
Độ chính xác 100% (exact match) 97%+ với tuning
Tiết kiệm chi phí 50-90% 100% khi hit
Phức tạp triển khai Thấp (provider hỗ trợ) Trung bình (cần vector store)
Yêu cầu bảo trì Tối thiểu Liên tục (tuning ngưỡng)
Trường hợp sử dụng tốt nhất Prompt cấu trúc Workload lặp lại
Rủi ro Không có False positive

Kết luận

Prompt caching đại diện cho một trong những tối ưu hóa tác động cao nhất cho triển khai LLM production. Kết hợp prefix caching cấp provider (phần lớn miễn phí từ Anthropic và OpenAI) với semantic caching có chọn lọc có thể giảm đáng kể chi phí trong khi cải thiện độ trễ.

Các bước triển khai chính:

  1. Cấu trúc prompt cho prefix caching — Nội dung tĩnh trước, động sau
  2. Bật prefix caching provider — Đặt cache_control (Anthropic) hoặc xác minh caching tự động (OpenAI)
  3. Đánh giá mẫu truy vấn — Xác định workload lặp lại cho semantic caching
  4. Triển khai semantic caching có chọn lọc — Tập trung vào truy vấn tần suất cao, deterministic
  5. Giám sát hiệu quả — Theo dõi hit rate, tiết kiệm chi phí và độ trễ

Với 31% truy vấn có sự tương đồng ngữ nghĩa trong các triển khai thực tế, cơ hội cho các chiến lược caching vẫn còn rộng lớn. Các tổ chức nên xem caching là hạ tầng thiết yếu hơn là tối ưu hóa tùy chọn.

Nguồn

  1. Anthropic Prompt Caching
  2. Semantic Similarity in LLM Workloads
  3. Claude Prompt Caching Guide
  4. OpenAI Prompt Caching
  5. Gemini Context Caching
  6. Amazon Bedrock Prompt Caching
  7. vLLM Automatic Prefix Caching
  8. vLLM PagedAttention Paper
  9. LMCache GitHub
  10. GPTCache GitHub
  11. GPTCache Benchmarks
  12. VectorQ: A Semantic Similarity-Aware Cache for LLM Queries

Yêu cầu báo giá_

Hãy cho chúng tôi biết về dự án của bạn và chúng tôi sẽ phản hồi trong vòng 72 giờ.

> TRUYỀN_TẢI_HOÀN_TẤT

Đã Nhận Yêu cầu_

Cảm ơn bạn đã gửi yêu cầu. Đội ngũ của chúng tôi sẽ xem xét và phản hồi trong vòng 72 giờ.

ĐANG XẾP HÀNG XỬ LÝ