Bỏ qua điều hướng

Embedding là gì? Cách AI biến văn bản thành vector

Embedding là cách AI chuyển đổi dữ liệu thành vector để máy tính hiểu được ngữ nghĩa — nền tảng của tìm kiếm, RAG và bài toán chi phí lưu trữ.

Tuan Tran Van
9 phút đọc
Mục lục (9 phần)
  1. Embedding là gì?
  2. Hai thứ khác nhau cùng gọi là "embedding"
  3. Làm sao một dãy số biểu diễn được ngữ nghĩa?
  4. Embedding dùng để làm gì?
  5. Không chỉ văn bản: embedding đa phương thức
  6. Chọn mô hình embedding: số chiều, chi phí, chất lượng
  7. Embedding không làm được gì?
  8. Khi nào nên dùng embedding?
  9. Tài liệu tham khảo

Embedding là kỹ thuật chuyển đổi các thực thể dữ liệu như văn bản, hình ảnh hoặc âm thanh thành một chuỗi các số thực (vector) có độ dài cố định.

Trong không gian đa chiều, tọa độ của các vector này đại diện cho ngữ nghĩa (semantic meaning) của nội dung đó.

Embedding giúp máy tính "số hóa" các khái niệm trừu tượng. Thay vì xử lý ký tự thô, hệ thống AI làm việc với các tọa độ. Các đối tượng có ý nghĩa tương đồng sẽ nằm gần nhau trong không gian này, nên bạn so sánh được độ tương quan một cách chính xác bằng khoảng cách toán học.

Minh hoạ embedding: một đoạn văn bản được chuyển thành dãy số rồi trở thành các điểm nằm gần nhau trong không gian ngữ nghĩa

Embedding là gì?

Hãy tưởng tượng bạn đang phân loại các món ăn. Nếu chỉ dùng một chiều "Độ ngọt", bánh ngọt và kẹo sẽ nằm gần nhau. Nhưng nếu thêm các chiều như "Độ mặn", "Độ cay" và "Nhiệt độ", bạn sẽ có một không gian đa chiều nơi pizza và taco nằm gần nhau, nhưng cách xa kem lạnh. Trong kỹ thuật AI, các mô hình hiện đại sử dụng không gian 300, 1024 hoặc 1536 chiều để nắm bắt những sắc thái tinh vi nhất của dữ liệu.

So sánh one-hot encoding thưa với embedding dày đặc, nơi các món ăn tương tự nằm gần nhau trong không gian nhiều chiều

Trước đây, kỹ thuật one-hot encoding tạo ra các biểu diễn thưa (sparse representation) nơi mỗi từ là một chiều riêng biệt. Nếu từ điển có 1 triệu từ, vector sẽ dài 1 triệu chiều và chỉ có duy nhất một số 1. Cách này gặp phải "lời nguyền đa chiều" (curse of dimensionality): bùng nổ trọng số (weights), rất tốn bộ nhớ và tính toán. Quan trọng hơn, nó không thể hiện được mối quan hệ: "hot dog" và "shawarma" trong one-hot encoding hoàn toàn không liên quan gì nhau vì chúng nằm trên các trục tọa độ vuông góc.

Ngược lại, embedding tạo ra các biểu diễn dày đặc (dense representation). Bằng cách nén thông tin vào số chiều cố định và nhỏ hơn nhiều, embedding không chỉ giảm tải cho phần cứng mà còn tăng khả năng nắm bắt ngữ nghĩa. Nó buộc mô hình phải học cách "gói" các đặc tính liên quan vào cùng một cụm vector, giúp máy tính hiểu rằng "chó" và "mèo" đều là thực thể thuộc cụm "thú cưng".

Hai thứ khác nhau cùng gọi là "embedding"

Khi xây dựng hệ thống, bạn cần phân biệt rõ hai khái niệm thường bị đánh đồng:

  1. Lớp Embedding (Embedding Layer): Một thành phần trong kiến trúc mạng nơ-ron, hoạt động như một bảng tra cứu (look-up table). Nhiệm vụ của nó là biến ID của token thành một vector đầu vào để các lớp xử lý sau (như Transformer) có thể tính toán.
  2. Vector Embedding: Đây là kết quả đầu ra cuối cùng từ các mô hình đã huấn luyện xong. Khi bạn gọi API của OpenAI hay Google, kết quả trả về là các vector này để bạn lưu vào Vector Database.

Phân biệt lớp Embedding nằm bên trong mô hình và vector embedding là kết quả đầu ra được lưu vào vector database

Ngoài ra, cần phân biệt giữa embedding tĩnh và embedding theo ngữ cảnh. Với embedding tĩnh (như Word2Vec), từ "bank" luôn có một vector duy nhất. Tuy nhiên, các mô hình hiện đại tạo ra embedding theo ngữ cảnh: từ "bank" trong "river bank" (bờ sông) và "bank account" (tài khoản ngân hàng) sẽ có hai vector hoàn toàn khác nhau. Điều này cho phép hệ thống hiểu được sự đa nghĩa của ngôn ngữ tùy vào các từ xung quanh.

Làm sao một dãy số biểu diễn được ngữ nghĩa?

Nguyên lý huấn luyện embedding dựa trên giả thuyết phân phối: "Muốn biết nghĩa một từ, hãy nhìn những từ đứng quanh nó". Các kiến trúc như Skipgram (dùng một từ dự đoán các từ xung quanh) và CBOW (dùng các từ xung quanh dự đoán từ ở giữa) đã hiện thực hóa điều này.

Cách Skipgram và CBOW học ngữ nghĩa từ những từ đứng quanh, cùng phép đại số vector King trừ Man cộng Woman xấp xỉ Queen

Để tối ưu hiệu năng, kỹ thuật lấy mẫu âm (Negative Sampling) được áp dụng. Thay vì bắt mô hình dự đoán chính xác một từ trong hàng triệu từ (một phép softmax rất tốn kém), mô hình chỉ cần phân biệt giữa một từ thật sự đứng cạnh và một vài từ nhiễu ngẫu nhiên. Kích thước cửa sổ (window size) ảnh hưởng trực tiếp đến kết quả:

  • 2-15 từ: Phù hợp để tìm các từ có khả năng thay thế nhau (interchangeable).
  • 15-50 từ: Phù hợp để tìm các từ có tính liên quan về chủ đề (relatedness).

Đại số vector kinh điển chứng minh sức mạnh logic của các con số này: Vector("King") - Vector("Man") + Vector("Woman") ≈ Vector("Queen"). Mô hình không chỉ lưu trữ từ ngữ; nó còn mã hóa được các quan hệ logic như giới tính và địa vị vào tọa độ không gian.

Embedding dùng để làm gì?

  • Tìm kiếm theo "vibe" (Vibes-based search): Vượt trội hơn tìm kiếm từ khóa (lexical search). Bạn có thể tìm "dụng cụ sửa nước" và nhận được kết quả về "mỏ lết" dù hai từ không hề trùng khớp về mặt ký tự.
  • Gợi ý nội dung liên quan: Sử dụng độ tương đồng Cosine (Cosine similarity) để tìm các bài viết hoặc sản phẩm có góc vector gần nhau nhất.
  • Phân cụm (Clustering): Các thuật toán như k-means tự động gom hàng vạn phản hồi khách hàng hoặc mã nguồn thành từng chủ đề mà không cần dán nhãn thủ công.
  • RAG (Retrieval-Augmented Generation): Đây là ứng dụng quan trọng nhất. Hệ thống tìm các đoạn văn bản có vector phù hợp nhất để đưa vào prompt cho mô hình ngôn ngữ lớn (LLM), giúp mô hình trả lời dựa trên "sự thật" có sẵn, giảm thiểu hiện tượng ảo giác (hallucination).

Không chỉ văn bản: embedding đa phương thức

Các mô hình như CLIP hoặc Gemini Embedding 2 cho phép đưa văn bản và hình ảnh vào cùng một không gian vector. Cách làm này gọi là embedding đa phương thức (Multimodal).

Văn bản, hình ảnh, video và âm thanh cùng được ánh xạ vào một không gian vector chung, với khoảng cách phương thức giữa hai cụm

Một chỉ số kỹ thuật bạn cần quan tâm là khoảng cách phương thức (Modality gap) — đo bằng khoảng cách L2 giữa cụm vector văn bản và hình ảnh. Modality gap càng nhỏ, khả năng tìm kiếm chéo (cross-modal) càng chính xác. Ví dụ, mô hình Qwen3-VL có modality gap chỉ 0.25 (so với Gemini là 0.73), giúp bạn tìm kiếm hình ảnh bằng mô tả văn bản rất nhạy mà không cần các bước ánh xạ (mapping) phức tạp. Ứng dụng thực tế tiêu biểu là Faucet Finder (tìm vòi nước bằng ảnh) hoặc tìm kiếm video theo nội dung mà không cần metadata thủ công.

Chọn mô hình embedding: số chiều, chi phí, chất lượng

Khi triển khai ở quy mô production (môi trường chạy thật), bạn phải tính toán kỹ các đánh đổi về tài nguyên:

Lưu trữ và Binary quantization. Với 100 triệu vector 768 chiều ở dạng FP32, bạn tốn 307 GB. Nếu dùng Binary quantization (như trên GTE ModernBERT), dung lượng giảm xuống còn 9.6 GB — giảm 32 lần.

Nén số chiều (MRL). Kỹ thuật Matryoshka (MRL) trên Jina Embeddings v4 hoặc Voyage Multimodal 3.5 cho phép cắt ngắn vector từ 3072 xuống 256 chiều — giảm 12 lần dung lượng, trong khi Voyage chỉ mất 0.7% chất lượng.

Lượng tử hóa. Dùng INT8 trên CPU giúp tăng tốc từ 2.7x đến 3.4x. Tuy nhiên, tránh dùng INT8 trên GPU vì sẽ chậm hơn 4-5 lần. Trên GPU, hãy dùng FP16 để nhanh gấp đôi mà không mất chất lượng.

Nén số chiều kiểu búp bê Matryoshka: vector 3072 chiều cắt ngắn dần xuống 256 chiều, dung lượng lưu trữ giảm mạnh

Đừng chỉ tin vào bảng xếp hạng MTEB (Massive Text Embedding Benchmark). Hãy chú ý các benchmark như CCKM để đánh giá khả năng tìm kiếm "Needle-in-a-haystack" (tìm một dữ kiện trong tài liệu dài từ 4.000 đến 32.000 ký tự) và khả năng xử lý đa ngôn ngữ ở mức độ thành ngữ (idiom-level).

Embedding không làm được gì?

Embedding là biểu diễn thống kê, không phải sự thật tuyệt đối. Nếu bạn dùng mô hình huấn luyện trên dữ liệu web chung cho các lĩnh vực chuyên biệt như y tế, luật hoặc mã nguồn, kết quả sẽ rất kém khi chưa được tinh chỉnh (fine-tuning).

Vấn đề giới hạn ngữ cảnh cũng rất đáng lưu ý: các mô hình cũ thường cắt cụt dữ liệu sau 512 token, làm mất thông tin ở cuối văn bản. Đặc biệt, hãy cẩn thận với các API đóng (proprietary). Nếu nhà cung cấp khai tử mô hình cũ, bạn sẽ đối mặt với chi phí re-embedding (nhúng lại) hàng triệu vector rất tốn kém, cùng rủi ro gián đoạn hệ thống.

Khi nào nên dùng embedding?

Nếu ứng dụng của bạn cần xử lý hình ảnh hoặc dữ liệu đa ngôn ngữ phức tạp, hãy chọn Gemini Embedding 2 hoặc Qwen3-VL. Nếu ưu tiên tiết kiệm tài nguyên lưu trữ và tốc độ truy vấn, hãy chọn các mô hình hỗ trợ nén MRL hoặc Binary quantization như Jina Embeddings v4 hoặc GTE ModernBERT.

Lời khuyên cho các kỹ sư: xây dựng một pipeline đánh giá (evaluation pipeline) riêng trên chính dữ liệu thật của bạn luôn quan trọng hơn chạy theo các bảng xếp hạng công khai.

Tài liệu tham khảo

Chia sẻ bài viết

X / TwitterFacebookLinkedIn