Bài #7: Embedding, vector database và semantic search là gì?
Khi tìm kiếm thông thường, ta thường nghĩ máy tính chỉ so khớp từ khóa. Bạn gõ “cách học từ vựng”, hệ thống tìm những trang có chữ “cách”, “học”, “từ vựng”. Cách này vẫn hữu ích, nhưng nó có giới hạn: nếu một bài viết dùng cụm “ghi nhớ từ mới bằng flashcard” mà không dùng đúng cụm bạn gõ, kết quả có thể bị bỏ lỡ.
Embedding, vector database và semantic search giúp giải quyết vấn đề đó. Thay vì chỉ hỏi “có đúng chữ này không?”, hệ thống cố gắng hỏi “ý nghĩa của câu hỏi này gần với nội dung nào?”. Đây là nền tảng rất quan trọng phía sau chatbot có khả năng tìm tài liệu, hệ thống gợi ý bài học, trợ lý nội bộ của công ty và cả kỹ thuật RAG sẽ học ở bài sau.
Mục tiêu bài học
Sau bài này, bạn cần hiểu embedding là gì, vì sao nó thường được mô tả như “tọa độ ý nghĩa”, vector database lưu trữ thứ gì, semantic search khác tìm kiếm từ khóa ra sao, và vì sao các khái niệm này là bước chuẩn bị quan trọng cho RAG.
Embedding là gì?
Embedding là cách biểu diễn một đối tượng thành một dãy số. Đối tượng đó có thể là một từ, một câu, một đoạn văn, một hình ảnh hoặc một sản phẩm. Với văn bản, embedding thường là một vector gồm nhiều số thập phân. Người đọc nhìn vào vector sẽ không hiểu ngay, nhưng máy tính có thể dùng vector để so sánh mức độ gần nhau giữa các nội dung.
Ví dụ đời thường: nếu ta xếp sách trong thư viện theo chủ đề, sách Toán nằm gần sách bài tập Toán, sách tiếng Anh nằm gần sách từ vựng, sách nấu ăn nằm khu khác. Embedding cũng tạo ra một kiểu “bản đồ” như vậy, chỉ khác là bản đồ nằm trong không gian số. Hai đoạn văn có ý nghĩa gần nhau thường có vector gần nhau hơn.
Vector là gì trong ngữ cảnh này?
Vector có thể hiểu đơn giản là một danh sách số có thứ tự. Trong hình học lớp dưới, bạn có thể thấy một điểm trên mặt phẳng có tọa độ như `(x, y)`. Với embedding, số chiều có thể lớn hơn rất nhiều, nên ta không thể vẽ đầy đủ trên giấy. Tuy vậy, ý tưởng chính vẫn giống nhau: mỗi đoạn văn được đặt vào một vị trí trong không gian, và vị trí đó phản ánh phần nào ý nghĩa của đoạn văn.
Khi người dùng hỏi “làm sao nhớ từ mới lâu hơn”, hệ thống tạo embedding cho câu hỏi. Sau đó nó so sánh vector của câu hỏi với vector của các bài viết đã lưu. Một bài có tiêu đề “Cách làm flashcard từ vựng tiếng Anh để nhớ lâu” có thể được xem là gần về ý nghĩa, dù không trùng từng chữ.
Vector database lưu cái gì?
Vector database là cơ sở dữ liệu được thiết kế để lưu và tìm kiếm vector hiệu quả. Mỗi bản ghi thường gồm hai phần: vector embedding và dữ liệu gốc đi kèm. Dữ liệu gốc có thể là đoạn văn, tiêu đề bài học, đường link, mã sản phẩm, tác giả hoặc ngày cập nhật.
Nếu chỉ lưu vector mà không lưu thông tin gốc, hệ thống biết có một điểm gần với câu hỏi nhưng không biết phải trả về bài nào. Vì vậy vector database thường lưu cả “tọa độ ý nghĩa” lẫn metadata. Khi tìm kiếm, nó trả về danh sách kết quả gần nhất, thường gọi là top-k, ví dụ top 5 đoạn liên quan nhất.
Semantic search khác tìm kiếm từ khóa thế nào?
Tìm kiếm từ khóa tập trung vào chữ xuất hiện trong tài liệu. Semantic search tập trung vào ý nghĩa. Điều này không có nghĩa semantic search luôn tốt hơn. Với những truy vấn cần đúng mã số, tên riêng, điều khoản chính xác hoặc câu trích dẫn, tìm từ khóa vẫn rất quan trọng. Nhưng với câu hỏi tự nhiên, cách diễn đạt đa dạng, hoặc nhu cầu tìm tài liệu “cùng ý”, semantic search mạnh hơn.
Ví dụ bạn gõ “máy học online không bị lag”. Tài liệu phù hợp có thể viết “cách chọn laptop cho lớp học trực tuyến”. Hai câu không giống chữ, nhưng ý nghĩa gần nhau. Embedding giúp hệ thống nhận ra mối liên hệ này.
Ví dụ kỹ thuật đơn giản
Giả sử Lopmoi có 1.000 bài học. Hệ thống có thể cắt mỗi bài thành các đoạn nhỏ, gọi là chunk. Mỗi chunk được đưa qua một mô hình embedding để tạo vector. Vector và thông tin như tiêu đề bài, URL, số thứ tự đoạn được lưu vào vector database.
Khi học sinh hỏi “em hay quên công thức sau một tuần thì học sao?”, hệ thống tạo embedding cho câu hỏi, tìm các chunk gần nhất, rồi trả về các đoạn nói về ôn tập ngắt quãng, flashcard và cách tự kiểm tra. Nếu kết hợp với LLM, các đoạn này có thể được đưa vào context để mô hình trả lời dựa trên tài liệu thật. Đó chính là cầu nối sang RAG.
Lỗi hiểu nhầm thường gặp
Hiểu nhầm 1: Embedding hiểu nghĩa giống con người. Không hẳn. Embedding là biểu diễn thống kê học được từ dữ liệu. Nó rất hữu ích, nhưng vẫn có thể nhầm nếu câu hỏi mơ hồ, dữ liệu thiếu hoặc mô hình không phù hợp với tiếng Việt/chuyên ngành.
Hiểu nhầm 2: Vector database thay thế cơ sở dữ liệu thường. Không đúng. Cơ sở dữ liệu quan hệ vẫn rất tốt cho dữ liệu có cấu trúc như tài khoản, đơn hàng, điểm số. Vector database phù hợp hơn khi cần tìm nội dung gần nhau về ý nghĩa.
Hiểu nhầm 3: Semantic search luôn trả lời đúng. Semantic search chỉ giúp tìm tài liệu liên quan. Nó không tự chứng minh tài liệu đúng, không thay người kiểm duyệt, và không loại bỏ hoàn toàn hallucination nếu phía sau còn có LLM sinh câu trả lời.
Bài tập nhỏ
Hãy viết ba câu: “cách học từ vựng tiếng Anh”, “làm flashcard để nhớ từ mới”, và “công thức tính diện tích hình tròn”. Theo trực giác, hai câu đầu nên gần nhau hơn câu thứ ba. Đó là tinh thần của embedding: không cần giống chữ hoàn toàn, chỉ cần gần về ý nghĩa.
Sau đó thử đổi câu đầu thành “làm sao nhớ vocabulary lâu hơn”. Bạn sẽ thấy một hệ thống semantic search tốt vẫn nên liên hệ nó với flashcard hoặc ôn tập từ vựng, dù có trộn tiếng Việt và tiếng Anh.
Ghi nhớ
Embedding biến văn bản thành vector để máy tính so sánh ý nghĩa. Vector database lưu các vector cùng dữ liệu gốc và giúp tìm nhanh những nội dung gần nhất. Semantic search dùng các vector đó để tìm theo nghĩa, không chỉ theo chữ. Ba khái niệm này là nền móng cho nhiều ứng dụng AI thực tế: tìm tài liệu nội bộ, gợi ý bài học, hỏi đáp trên kho tri thức và RAG.
Xem lại series AI & LLM
- Bài #1: AI là gì? Khác gì với phần mềm thông thường?
- Bài #2: Machine learning, deep learning và dữ liệu huấn luyện
- Bài #3: NLP là gì? Vì sao máy có thể xử lý ngôn ngữ?
- Bài #4: LLM là gì? Token là gì và mô hình dự đoán từ tiếp theo ra sao?
- Bài #5: Prompt, context window và system/developer/user message trong LLM
- Bài #6: Hallucination là gì? Kiểm chứng và nguồn tham khảo khi dùng LLM
- Bài #7: Embedding, vector database và semantic search là gì?






