Semantic Caching
Khám phá cách semantic caching giảm độ trễ và chi phí AI. Tìm hiểu cách hoạt động của phương pháp này với LLM và pipeline thị giác qua một ví dụ thực tiễn về Ultralytics YOLO26.
Bộ nhớ đệm ngữ nghĩa là một kỹ thuật tối ưu hóa nâng cao, được sử dụng chủ yếu trong AI tạo sinh và cho mô hình ngôn ngữ lớn (LLMs), giúp lưu trữ và truy xuất phản hồi dựa trên ý nghĩa (ngữ nghĩa) của truy vấn thay vì văn bản chính xác của truy vấn. Bằng cách xác định khi một prompt mới đặt cùng một câu hỏi cốt lõi với một prompt đã được trả lời trước đó, bộ nhớ đệm ngữ nghĩa loại bỏ nhu cầu gọi lại model AI, qua đó giảm đáng kể thời gian xử lý và chi phí API.
Cách bộ nhớ đệm ngữ nghĩa hoạt động#
Không giống bộ nhớ đệm truyền thống yêu cầu các chuỗi ký tự trùng khớp hoàn toàn, bộ nhớ đệm ngữ nghĩa chuyển đổi các truy vấn đầu vào thành các vector số nhiều chiều, được gọi là embedding. Khi người dùng gửi một prompt, các hệ thống sử dụng bộ nhớ đệm ngữ nghĩa Redis hoặc các kho lưu trữ trong bộ nhớ tương tự sẽ thực hiện tìm kiếm vector để so sánh vector mới với các vector đã lưu trước đó trong cơ sở dữ liệu vector.
Phép so sánh này dựa trên các metric khoảng cách toán học, phổ biến nhất là độ tương đồng cosine. Nếu điểm tương đồng giữa truy vấn mới và truy vấn đã lưu trong bộ nhớ đệm vượt quá ngưỡng được xác định trước (ví dụ: 0.95), hệ thống ghi nhận một "cache hit". Hệ thống lập tức trả về phản hồi đã lưu, hoàn toàn bỏ qua inference engine. Nếu điểm số thấp hơn ngưỡng, kết quả là một "cache miss", khiến model tạo phản hồi mới và lưu cặp embedding-phản hồi mới để sử dụng trong các tương tác sau. Quy trình này rất hiệu quả trong các kiến trúc cloud hiện đại để mở rộng quy mô ứng dụng AI.
Các ứng dụng trong thực tế#
Bộ nhớ đệm ngữ nghĩa đóng vai trò thiết yếu trong việc triển khai các giải pháp AI tiết kiệm chi phí trên nhiều lĩnh vực.
- Chatbot hỗ trợ khách hàng: Trong một bộ phận hỗ trợ IT, hàng trăm người dùng có thể đặt các biến thể của cùng một câu hỏi (ví dụ: "Làm cách nào để đặt lại mật khẩu?" so với "Các bước khi quên mật khẩu"). Bộ nhớ đệm ngữ nghĩa nhận diện các ý định này là giống hệt nhau, đảm bảo model chỉ tính toán câu trả lời một lần. Điều này làm giảm đáng kể độ trễ inference và giảm mức sử dụng token cho các giải pháp quản lý API.
- Khám phá trực quan và RAG: Trong các pipeline đa phương thức, các nền tảng sử dụng tính năng trích xuất đặc trưng để lưu vào bộ nhớ đệm các embedding của ảnh tham chiếu. Khi người dùng tải lên một ảnh để tìm các mục tương tự về mặt hình ảnh, hệ thống có thể ngay lập tức truy xuất các kết quả đã lưu trong bộ nhớ đệm và khớp về ngữ nghĩa, nhanh chóng tăng tốc hệ thống đề xuất trực quan mà không cần mã hóa lặp lại các đầu vào hình ảnh lớn. Các nhà phát triển thường tích hợp các công cụ như LangChain để điều phối các lớp bộ nhớ đệm này.
Phân biệt các thuật ngữ liên quan đến bộ nhớ đệm#
Để hiểu đầy đủ về tối ưu hóa AI, nên phân biệt bộ nhớ đệm ngữ nghĩa với các dạng quản lý bộ nhớ khác:
- So với bộ nhớ đệm prompt: Bộ nhớ đệm prompt liên quan đến việc lưu các trạng thái toán học đã được tính toán trước của một context tĩnh (chẳng hạn như phần tiền tố của một tài liệu dài) trong một phiên đang hoạt động để tăng tốc các truy vấn tiếp theo. Bộ nhớ đệm ngữ nghĩa lưu trữ đầu ra dạng văn bản hoặc hình ảnh cuối cùng của một tương tác hoàn chỉnh để phục vụ các ý định hoàn toàn mới nhưng giống hệt nhau.
- So với KV Cache: KV cache là một cơ chế bộ nhớ cấp thấp bên trong kiến trúc Transformer, lưu các trạng thái attention trung gian trong quá trình tạo văn bản từng token để hỗ trợ inference thời gian thực. Bộ nhớ đệm ngữ nghĩa hoạt động ở tầng ứng dụng, lưu vào bộ nhớ đệm toàn bộ trao đổi đầu vào-đầu ra trước khi trao đổi này đến các layer của model.
Mô phỏng bộ nhớ đệm ngữ nghĩa trong thị giác máy tính#
Đoạn mã Python sau đây minh họa cách mô phỏng cơ chế cốt lõi của bộ nhớ đệm ngữ nghĩa bằng PyTorch và package ultralytics. Bằng cách tính toán độ tương đồng giữa một ảnh đã lưu trong bộ nhớ đệm và một ảnh truy vấn mới bằng model phân loại Ultralytics YOLO26, hệ thống có thể xác định liệu có cần thực hiện toàn bộ lượt inference hay không.
import torch
from ultralytics import YOLO
# Load an Ultralytics YOLO26 classification model for embedding generation
model = YOLO("yolo26n-cls.pt")
# Extract the embedding for a previously 'cached' reference image
cached_embed = model.embed("reference_shoe.jpg")[0].flatten()
# Extract the embedding for a new user query image
new_embed = model.embed("user_uploaded_shoe.jpg")[0].flatten()
# Calculate cosine similarity to check for a semantic cache hit
similarity = torch.nn.functional.cosine_similarity(cached_embed, new_embed, dim=0)
# Apply a threshold to determine if the images are semantically equivalent
if similarity > 0.90:
print(f"Cache hit! Similarity: {similarity.item():.2f}. Returning cached response.")
else:
print(f"Cache miss! Similarity: {similarity.item():.2f}. Running full inference.")Đối với các nhóm cần quản lý dataset và triển khai các model thị giác máy tính được tối ưu hóa cao, có thể tích hợp liền mạch với các kiến trúc bộ nhớ đệm nâng cao, Ultralytics Platform cung cấp một môi trường trực quan, end-to-end để huấn luyện, theo dõi và phục vụ model ở quy mô lớn.









