Embeddings
Embedding là các vector được học để đặt văn bản, ảnh hoặc mục tương tự gần nhau. Nội dung đề cập đến cách tạo, so sánh và tìm kiếm embedding ở quy mô lớn.
Embedding là một vector số được học để biểu diễn một mục, chẳng hạn từ, hình ảnh, sản phẩm hoặc người dùng, sao cho các mục có ý nghĩa hoặc nội dung tương tự sẽ có vector nằm gần nhau. Khoảng cách trong không gian vector này trở thành thước đo độ tương đồng, cho phép phần mềm tìm kiếm, phân cụm, đề xuất và phân loại bằng cách so sánh vector thay vì pixel hoặc chuỗi thô. Embedding cũng là biểu diễn được sử dụng bên trong mạng nơ-ron: mô hình ngôn ngữ lớn (LLM) chuyển từng token thành embedding trước lớp transformer đầu tiên, còn model thị giác chuyển hình ảnh thành các vector đặc trưng thông qua backbone. Embedding dùng cho tìm kiếm thường có vài trăm đến vài nghìn chiều, ít hơn nhiều so với số giá trị của đầu vào thô.
Cách tạo embedding#
Embedding được tạo từ hai loại thành phần đã học:
- Bảng tra cứu: Với các mục rời rạc như token, ID sản phẩm hoặc ID người dùng, một lớp embedding lưu một hàng có thể học cho mỗi mục; tra cứu một mục sẽ trả về hàng tương ứng.
nn.Embeddingcủa PyTorch là một bảng như vậy. Các hàng ban đầu có giá trị ngẫu nhiên và được cập nhật bằng lan truyền ngược cùng với phần còn lại của model, vì vậy những mục có vai trò tương tự trong tác vụ huấn luyện sẽ dần có các vector tương tự nhau. - Encoder: Với hình ảnh, âm thanh và văn bản tự do, một mạng ánh xạ toàn bộ đầu vào thành một vector, thường bằng cách pooling các feature map của CNN hoặc đọc các token đầu ra của transformer. Encoder được huấn luyện cho một tác vụ như phân loại tạo ra embedding hữu ích như một sản phẩm phụ; encoder được huấn luyện bằng học tương phản định hình trực tiếp không gian embedding, như CLIP thực hiện bằng cách đặt hình ảnh và chú thích tương ứng vào cùng một không gian chung.
Word2vec, do Tomas Mikolov và các cộng sự tại Google công bố năm 2013, cho thấy kiểu huấn luyện này nắm bắt được cấu trúc phong phú đến mức nào. Trong các vector từ của Word2vec, vector("King") − vector("Man") + vector("Woman") gần với vector("Queen") nhất; vector Google News được huấn luyện trước mà Word2vec phát hành bao gồm 3 triệu từ và cụm từ trong không gian 300 chiều.
So sánh embedding#
Độ tương đồng cosine so sánh hướng của hai vector và có giá trị từ −1 đến 1. Tích vô hướng cũng tính đến độ dài của chúng, còn khoảng cách Euclid đo khoảng cách đường thẳng giữa hai vector. Nhiều hệ thống chuẩn hóa embedding về độ dài đơn vị, khiến độ tương đồng cosine và tích vô hướng trở nên giống nhau, đồng thời xếp hạng các vector lân cận theo cùng thứ tự với khoảng cách Euclid. Các model YOLO26 tạo embedding hình ảnh thông qua embed(); cách này bỏ qua head dự đoán và trả về một vector cho mỗi hình ảnh bằng cách average-pooling đầu ra của lớp áp chót của model:
import torch.nn.functional as F
from ultralytics import YOLO
from ultralytics.utils import ASSETS
# Load a YOLO26 classification model trained on ImageNet
model = YOLO("yolo26n-cls.pt")
# embed() returns one pooled feature vector per image instead of predictions
bus, zidane = model.embed([ASSETS / "bus.jpg", ASSETS / "zidane.jpg"])
print(f"Embedding length: {bus.shape[0]}")
# Higher cosine similarity means the model sees more similar content
print(f"Cosine similarity: {F.cosine_similarity(bus, zidane, dim=0).item():.3f}")Với YOLO26n-cls, embedding là vector 256 chiều, đầu ra đã pooling của khối attention ở cuối backbone; dòng thứ hai in độ tương đồng cosine giữa hai ảnh mẫu đi kèm. Chạy phép so sánh tương tự với embedding đã lưu của cả bộ sưu tập là cách tìm kiếm ảnh tương đồng xếp hạng kết quả.
Tìm kiếm embedding ở quy mô lớn#
So sánh một truy vấn với hàng triệu vector đã lưu lần lượt từng vector quá chậm, vì vậy cơ sở dữ liệu vector xây dựng chỉ mục láng giềng gần nhất xấp xỉ, chẳng hạn chỉ mục HNSW dựa trên đồ thị hoặc chỉ mục tệp đảo, để tìm các kết quả khớp gần nhất trong khi chỉ kiểm tra một phần nhỏ của bộ sưu tập. Bộ sưu tập được chuyển thành embedding một lần; mỗi truy vấn được chuyển thành embedding tại thời điểm tìm kiếm bằng cùng encoder, hoặc bằng encoder văn bản tương ứng khi tìm kiếm hình ảnh bằng văn bản:
Thiết kế lưu trữ cũng định hình hệ thống không kém gì độ chính xác. Học biểu diễn Matryoshka huấn luyện embedding sao cho các chiều đầu tiên có thể hoạt động độc lập, nhờ đó có thể cắt ngắn vector để tiết kiệm dung lượng; lượng tử hóa vector nén mỗi vector thành vài byte. Tìm kiếm lai kết hợp độ tương đồng embedding với đối sánh từ khóa.
Ứng dụng#
- Tìm kiếm ngữ nghĩa và tạo sinh tăng cường truy xuất (RAG): Embedding văn bản truy xuất các đoạn văn theo ý nghĩa, vì vậy truy vấn về "yêu cầu bồi thường bảo hiểm ô tô" cũng tìm thấy tài liệu có nội dung "chính sách bảo hiểm xe hơi"; RAG chuyển các đoạn văn đã truy xuất cho LLM làm ngữ cảnh.
- Hệ thống gợi ý: Người dùng và mục được embedding trong cùng một không gian; các mục gần vector của người dùng nhất sẽ trở thành ứng viên được đề xuất.
- Phân loại zero-shot: Model có không gian hình ảnh-văn bản chung phân loại hình ảnh bằng cách so sánh embedding của hình ảnh với embedding của tên lớp được viết dưới dạng văn bản.
- Tái nhận dạng đối tượng: Embedding ngoại hình liên kết cùng một người hoặc phương tiện giữa các camera và qua các khoảng ngắt trong track.
- Khám phá dataset: Chiếu embedding xuống hai chiều bằng t-SNE hoặc UMAP giúp phát hiện cụm, ảnh gần trùng lặp và ngoại lệ trong dataset, như bảng Clustering thực hiện với dataset trên Ultralytics Platform.
Embedding và các thuật ngữ liên quan#
- Không gian tiềm ẩn: Không gian vector chứa các embedding. "Biểu diễn tiềm ẩn" và "embedding" thường được dùng như từ đồng nghĩa.
- Trích xuất đặc trưng: Bất kỳ quy trình nào chuyển dữ liệu thô thành đặc trưng. Embedding là một vector đặc trưng được học sao cho khoảng cách giữa các vector mang ý nghĩa.
- Tokenization: Chia văn bản thành các token và ánh xạ mỗi token thành một ID số nguyên. Sau đó, lớp embedding ánh xạ mỗi ID thành một vector.
- Mã hóa one-hot: Biểu diễn mục i trong từ vựng dưới dạng vector toàn số 0, ngoại trừ giá trị 1 ở vị trí i; vì vậy, mọi cặp mục đều cách đều nhau và cách mã hóa này không biểu đạt độ tương đồng. Nhân vector one-hot với ma trận trọng số của bảng embedding sẽ chọn chính xác một hàng; đó cũng là kết quả mà thao tác tra cứu embedding trả về mà không cần thực hiện phép nhân.










