Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Cơ sở dữ liệu quen thuộc giỏi tìm "bản ghi có id bằng 5" hay "tên chứa chữ An". Nhưng nếu bạn muốn tìm "những bài viết có ý nghĩa gần giống câu này" thì sao? Đó là lúc vector database xuất hiện. Hãy xem nó hoạt động thế nào và khi nào bạn thật sự cần.
Một mô hình embedding nhận văn bản (hoặc ảnh, âm thanh) và trả về một dãy số, gọi là vector, thường dài vài trăm đến vài nghìn chiều. Hai nội dung có ý nghĩa gần nhau sẽ cho hai vector nằm gần nhau trong không gian. Chẳng hạn "cách đổi mật khẩu" và "quên mật khẩu phải làm sao" nằm gần nhau, dù không trùng từ nào.
Vector database lưu các vector cùng dữ liệu đi kèm (nội dung gốc, id, nhãn) và cho phép truy vấn láng giềng gần nhất: cho một vector, trả về k vector giống nó nhất. Việc này nếu làm vét cạn trên hàng triệu vector sẽ chậm, nên các hệ thống dùng chỉ mục xấp xỉ để tìm nhanh, đổi lại kết quả có thể không tuyệt đối chính xác.
Hãy dùng đúng phép đo mà mô hình embedding khuyến nghị, vì chọn sai có thể làm kết quả lệch.
Ví dụ nhỏ tìm láng giềng gần nhất bằng cách vét cạn. Với dữ liệu ít thì cách này hoàn toàn ổn:
import math
def cosine(a, b):
dot = sum(x * y for x, y in zip(a, b))
return dot / (math.sqrt(sum(x*x for x in a)) * math.sqrt(sum(y*y for y in b)))
items = {
"mèo": [0.9, 0.1],
"chó": [0.8, 0.2],
"xe máy": [0.1, 0.9],
}
def search(query, k=2):
scored = [(name, cosine(query, vec)) for name, vec in items.items()]
return sorted(scored, key=lambda t: t[1], reverse=True)[:k]
print(search([0.85, 0.15]))
Nếu bạn đã dùng PostgreSQL, thử tiện ích mở rộng vector trước thường là cách ít phức tạp nhất.
Nếu dữ liệu chỉ vài nghìn mục, tìm kiếm từ khóa thông thường hoặc vét cạn trong bộ nhớ có thể đủ. Cũng đừng bỏ qua tìm kiếm từ khóa: kết hợp cả hai (tìm kiếm lai) thường cho kết quả tốt nhất khi cần khớp chính xác tên riêng hoặc mã sản phẩm.
Tìm kiếm toàn văn khớp theo từ ngữ, còn vector tìm theo ý nghĩa. Hai cách có thế mạnh khác nhau và thường được kết hợp.
Hiếm khi. Phần lớn dự án dùng mô hình embedding có sẵn, chỉ cần chọn mô hình hỗ trợ tốt ngôn ngữ của bạn và đánh giá trên dữ liệu thật.
Vector database không thay thế cơ sở dữ liệu quan hệ mà bổ sung khả năng tìm theo ý nghĩa. Khi hiểu embedding và phép đo độ giống, bạn có thể tự tin thiết kế tính năng tìm kiếm thông minh và các ứng dụng AI truy xuất dữ liệu.
Để học vững cơ sở dữ liệu từ nền tảng, mời bạn xem các khóa học liên quan tại codebem.com.
Nguyễn Đình Cường
0 comment