
Embedding Models là gì?
Embedding models là các mô hình máy học chuyển đổi dữ liệu phi cấu trúc như văn bản, hình ảnh, âm thanh thành vector số dày đặc (dense vector) trong không gian chiều cao. Mỗi vector biểu diễn ý nghĩa ngữ nghĩa của dữ liệu gốc, giúp máy tính hiểu được mối quan hệ giữa các khái niệm thay vì chỉ so khớp từ khóa chính xác. Ví dụ, vector của “vua” và “nữ hoàng” sẽ nằm gần nhau trong không gian embedding, trong khi “vua” và “cái bàn” sẽ cách xa.
Cơ chế hoạt động của Embedding Models
Embedding models được huấn luyện trên corpus khổng lồ (hàng tỷ token) bằng các mục tiêu tự giám sát như masked language modeling hoặc contrastive learning. Quá trình này buộc mô hình học được biểu diễn ngữ nghĩa: từ ngữ xuất hiện trong ngữ cảnh tương tự sẽ có vector gần nhau (cosine similarity cao).
Các mô hình hiện đại sử dụng kiến trúc Transformer encoder-only (như BERT) hoặc bi-encoder cho bi-encoder models. Đầu ra là vector chiều cố định (thường 384, 768, 1024 hoặc 1536 chiều) bất kể độ dài đầu vào.

Các Embedding Models phổ biến hiện nay
OpenAI text-embedding-3 family
OpenAI cung cấp text-embedding-3-small (1536 chiều) và text-embedding-3-large (3072 chiều). Mô hình large đạt hiệu suất SOTA trên benchmark MTEB, nhưng chi phí cao hơn 5x so với small. Cả hai đều hỗ trợ truncation dimension – bạn có thể cắt vector xuống 256 chiều mà vẫn giữ ~95% hiệu năng.
Cohere embed-v3
Cohere embed-english-v3.0 (1024 chiều) và embed-multilingual-v3.0 (1024 chiều, hỗ trợ 100+ ngôn ngữ). Điểm mạnh là tối ưu cho retrieval task với tích hợp sẵn rerank model. Cohere cũng cung cấp embed-v3.0-lite (384 chiều) cho ứng dụng nhạy cảm độ trễ.
Sentence-Transformers (Open source)
Thư viện sentence-transformers cung cấp hàng trăm mô hình pretrained như all-MiniLM-L6-v2 (384 chiều, nhanh), all-mpnet-base-v2 (768 chiều, chính xác), bge-large-en-v1.5 (1024 chiều, SOTA open source), và multilingual-e5-large (1024 chiều, đa ngôn ngữ). Có thể chạy hoàn toàn local, không phụ thuộc API.

BGE và E5 family (BAAI & Microsoft)
bge-large-en-v1.5 (BAAI) và intfloat/e5-large-v2 (Microsoft) là hai dòng mô hình open source đạt điểm cao nhất trên MTEB leaderboard. Được huấn luyện với contrastive learning quy mô lớn, chúng vượt trội trên retrieval, clustering, classification. Phiên bản multilingual hỗ trợ tiếng Việt tốt.
Ứng dụng thực tế
Semantic Search & RAG
Ứng dụng phổ biến nhất là Retrieval-Augmented Generation (RAG). Quy trình: chunk tài liệu → embed từng chunk → lưu vào vector database (FAISS, ChromaDB, Pinecone, Weaviate) → khi user query, embed query → tìm top-k vector gần nhất → đưa context vào LLM để sinh câu trả lời có trích dẫn.
Code mẫu với ChromaDB:
import chromadb
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('bge-large-en-v1.5')
client = chromadb.Client()
collection = client.create_collection('docs')
# Add documents
embeddings = model.encode(docs).tolist()
collection.add(documents=docs, embeddings=embeddings, ids=[str(i) for i in range(len(docs))])
# Query
query_emb = model.encode([question]).tolist()
results = collection.query(query_embeddings=query_emb, n_results=5)
Recommendation & Similarity Search
E-commerce dùng embedding để gợi ý sản phẩm tương tự (item-to-item), tìm kiếm hình ảnh (image embedding), hoặc content-based filtering. Streaming platform dùng user embedding (từ lịch sử xem) để match với item embedding.
Clustering & Topic Modeling
Embedding cho phép clustering tài liệu không cần nhãn (unsupervised). Kết hợp với UMAP giảm chiều + HDBSCAN clustering cho kết quả tốt hơn LDA truyền thống. Dùng cho phân tích phản hồi khách hàng, phát hiện chủ đề trend, tổ chức knowledge base.
Vector Database so sánh
| Database | Loại | Ưu điểm | Nhược điểm |
|---|---|---|---|
| FAISS | Library | Nhanh, free, CPU/GPU, support 100M+ vectors | Chỉ index, không quản lý metadata, không persistent sẵn |
| ChromaDB | Embedded/Server | Dễ dùng, persistent, filter metadata, Python/JS SDK | Chậm hơn FAISS ở scale lớn |
| Pinecone | Managed Cloud | Serverless, auto-scale, hybrid search, namespace | Phí theo dung lượng, vendor lock-in |
| Weaviate | Open source/Cloud | GraphQL/REST, module system, hybrid search, multi-tenancy | Resource heavy, phức tạp config |
| Qdrant | Open source/Cloud | Rust core, fast, filtering, quantization, payload index | Ít ecosystem hơn Pinecone |
Best practices khi triển khai
- Chunking strategy: Chunk size 256-512 token, overlap 10-20%. Chunk quá nhỏ mất ngữ cảnh, quá lớn giảm độ chính xác retrieval.
- Normalization: Luôn normalize vector (L2 norm = 1) trước khi tính cosine similarity – nhiều vector DB làm tự động nhưng FAISS cần explicit.
- Reranking: Dùng cross-encoder (như
bge-reranker-large) rerank top-50 từ vector search → cải thiện precision đáng kể. - Quantization: Product Quantization (PQ) hoặc Scalar Quantization giảm 4-8x memory, speedup search, loss <2% recall.
- Hybrid search: Kết hợp BM25 (keyword) + vector search → xử lý tốt cả từ khóa chính xác và ngữ nghĩa.
Thách thức và hạn chế
Embedding models vẫn gặp khó khăn với: negation (“không tốt” vs “tốt”), compositionality (ghép ý nghĩa từ các phần), reasoning đa bước, và out-of-domain data. Multilingual models thường kém chính xác hơn monolingual cho ngôn ngữ tài nguyên thấp. Độ dài context giới hạn (512-8192 token) buộc phải chunk tài liệu dài.
Xu hướng tương lai
Multimodal embedding (CLIP, SigLIP, Jina CLIP) thống nhất text + image trong cùng vector space. Matryoshka embedding (nested dimensions) cho phép adaptive dimension. Late interaction models (ColBERT) giữ token-level interaction cho retrieval chính xác hơn. Retrieval-centric foundation models (NV-Embed, GritLM) unify embedding + generative tasks.
Tham khảo thêm: MTEB Leaderboard | Sentence-Transformers | Vector Database Guide
