Vector Embedding là gì?
Vector Embedding là kỹ thuật biểu diễn dữ liệu (văn bản, hình ảnh, âm thanh) dưới dạng vector — một mảng các con số thực. Ý tưởng cốt lõi: những thứ có nghĩa tương tự nhau sẽ được biểu diễn bằng các vector "gần nhau" trong không gian toán học.
Ví dụ đơn giản: vector của từ "mèo" và "mèo con" sẽ gần nhau hơn vector của "mèo" và "xe hơi".
Cách tạo ra vector embedding
Các mô hình ngôn ngữ lớn (LLM) như BERT, Sentence Transformers được huấn luyện để tạo ra embedding có ý nghĩa từ văn bản. Quá trình huấn luyện dạy model cách "hiểu" ngữ nghĩa qua hàng tỷ ví dụ về văn bản.
LetMeNote dùng model embedding chuyên biệt để tạo vector 768 chiều cho mỗi ghi chú. Con số 768 là số lượng "tham số" trong vector — càng cao thì biểu diễn càng chi tiết.
pgvector — Lưu trữ và tìm kiếm vector
pgvector là extension của PostgreSQL cho phép lưu trữ vector và thực hiện tìm kiếm nearest-neighbor hiệu quả. LetMeNote dùng pgvector thông qua Supabase để:
- Lưu vector embedding của mỗi ghi chú sau khi tạo
- Khi tìm kiếm: tạo embedding cho câu tìm kiếm, so sánh với tất cả embedding trong database
- Trả về những ghi chú có vector gần nhất (cosine similarity)
Tại sao 768 chiều?
768 chiều là kích thước phổ biến của nhiều model BERT-based. Đây là sự cân bằng tốt giữa chất lượng biểu diễn và hiệu suất tính toán — đủ chi tiết để phân biệt nghĩa, nhưng không quá nặng để xử lý nhanh.
Ứng dụng trong LetMeNote
Mỗi lần bạn tạo ghi chú mới, LetMeNote tự động tạo embedding và lưu vào Supabase. Khi tìm kiếm, hệ thống so sánh embedding của câu tìm với tất cả ghi chú và trả về kết quả liên quan nhất — ngay cả khi không khớp từ khóa. Tìm hiểu thêm về tìm kiếm ngữ nghĩa hoặc dùng thử LetMeNote.