Vector Database là gì? Công nghệ tìm kiếm ngữ nghĩa cho AI

Vector database là gì? Giải thích embedding, tìm kiếm tương đồng, chỉ mục HNSW, so sánh Pinecone, Qdrant, Chroma, pgvector và khi nào cần dùng cho AI.

12 tháng 3, 2026 7 phút đọc

Vector database (cơ sở dữ liệu vector) là loại cơ sở dữ liệu chuyên lưu trữ và tìm kiếm vector embedding, tức các dãy số biểu diễn ý nghĩa của văn bản, hình ảnh hay âm thanh. Thay vì tìm theo từ khóa trùng khớp, vector database tìm theo mức độ tương đồng về ngữ nghĩa, nên là thành phần cốt lõi của chatbot RAG, tìm kiếm thông minh và hệ thống gợi ý trong các ứng dụng AI.

Bài viết giải thích vector database là gì, embedding hoạt động ra sao, cách tìm kiếm tương đồng, so sánh các vector database phổ biến và khi nào bạn thực sự cần dùng chúng.

Vector database là gì?

Cơ sở dữ liệu truyền thống như MySQL, PostgreSQL rất giỏi trả lời câu hỏi chính xác: "tìm đơn hàng có mã DH123", "lọc sản phẩm giá dưới 500.000đ". Nhưng chúng không giỏi câu hỏi kiểu: "tìm các bài viết có nội dung giống câu hỏi này", khi từ ngữ không trùng khớp.

Ví dụ, người dùng tìm "cách giảm cân hiệu quả". Một bài viết tiêu đề "Bí quyết giữ dáng an toàn" không chứa từ "giảm cân" nhưng rất liên quan. Tìm kiếm từ khóa có thể bỏ sót, còn tìm kiếm vector nhận ra hai câu này gần nghĩa nhau.

Embedding là gì?

Embedding là cách chuyển dữ liệu (một câu, một đoạn văn, một bức ảnh) thành vector, tức một dãy số, thường có vài trăm đến vài nghìn chiều. Mô hình embedding được huấn luyện để những nội dung có ý nghĩa giống nhau sẽ có vector nằm gần nhau trong không gian.

Hình dung đơn giản với 2 chiều:

  • "con mèo" → [0.81, 0.12]
  • "con mèo con" → [0.79, 0.15]
  • "ô tô điện" → [0.05, 0.92]

Hai vector đầu gần nhau, vector thứ ba ở xa. Embedding thật có nhiều chiều hơn rất nhiều, nhưng nguyên lý giống hệt. Kỹ thuật này bắt nguồn từ Deep Learning và cũng được dùng bên trong các LLM.

Vector database hoạt động như thế nào?

1. Lưu trữ

Mỗi bản ghi gồm: vector embedding, nội dung gốc (hoặc ID tham chiếu) và metadata như danh mục, ngày tạo, quyền truy cập.

2. Đo độ tương đồng

Khi có truy vấn, hệ thống chuyển truy vấn thành vector rồi tính khoảng cách tới các vector đã lưu. Các thước đo phổ biến:

  • Cosine similarity: đo góc giữa hai vector, phổ biến nhất với văn bản.
  • Euclidean distance (L2): khoảng cách đường thẳng.
  • Dot product (tích vô hướng).

3. Đánh chỉ mục để tìm nhanh (ANN)

So sánh truy vấn với hàng triệu vector từng cái một sẽ rất chậm. Vector database dùng thuật toán Approximate Nearest Neighbor (ANN) để tìm "gần đúng" các vector gần nhất trong thời gian rất ngắn. Các chỉ mục phổ biến là HNSW (dạng đồ thị nhiều tầng) và IVF (chia cụm). Đánh đổi là một chút độ chính xác để lấy tốc độ lớn.

4. Lọc theo metadata

Kết hợp tìm kiếm ngữ nghĩa với điều kiện như "chỉ tài liệu phòng Kế toán", "chỉ sản phẩm còn hàng".

So sánh vector database với database truyền thống

Tiêu chíDatabase quan hệ (SQL)Vector database
Kiểu dữ liệu chínhBảng, hàng, cộtVector nhiều chiều + metadata
Kiểu truy vấnKhớp chính xác, lọc, joinTìm theo độ tương đồng
Ví dụ câu hỏi"Đơn hàng tháng 10 của khách A""Tài liệu có ý giống câu hỏi này"
Chỉ mụcB-tree, hashHNSW, IVF
Ứng dụngGiao dịch, quản lý nghiệp vụRAG, tìm kiếm ngữ nghĩa, gợi ý

Các vector database phổ biến

TênLoạiĐiểm nổi bật
PineconeDịch vụ cloud được quản lýKhông cần vận hành server, dễ bắt đầu
QdrantMã nguồn mở, có bản cloudViết bằng Rust, lọc metadata mạnh
WeaviateMã nguồn mở, có bản cloudHỗ trợ hybrid search, nhiều module tích hợp
MilvusMã nguồn mởHướng tới quy mô rất lớn
ChromaMã nguồn mởNhẹ, rất dễ dùng để thử nghiệm với Python
pgvectorExtension cho PostgreSQLDùng luôn database có sẵn, tiện kết hợp SQL

Ngoài ra, nhiều hệ thống quen thuộc như Elasticsearch/OpenSearch, Redis, MongoDB Atlas cũng đã bổ sung tìm kiếm vector.

Ứng dụng của vector database

  • RAG: chatbot tra cứu tài liệu nội bộ trước khi trả lời. Xem chi tiết tại bài RAG là gì.
  • Tìm kiếm ngữ nghĩa trên website, kho tài liệu, thương mại điện tử.
  • Hệ thống gợi ý: sản phẩm, bài viết, video tương tự.
  • Tìm ảnh bằng ảnh hoặc tìm ảnh bằng mô tả văn bản.
  • Phát hiện trùng lặp nội dung, câu hỏi hỗ trợ khách hàng giống nhau.
  • Bộ nhớ dài hạn cho AI Agent: lưu và gợi lại thông tin từ các cuộc hội thoại trước.

Ví dụ: tìm kiếm ngữ nghĩa với pgvector

CREATE EXTENSION IF NOT EXISTS vector;

CREATE TABLE bai_viet (
  id serial PRIMARY KEY,
  tieu_de text,
  embedding vector(1536)  -- số chiều phụ thuộc mô hình embedding
);

CREATE INDEX ON bai_viet USING hnsw (embedding vector_cosine_ops);

-- Tìm 5 bài gần nghĩa nhất với vector truy vấn
SELECT tieu_de FROM bai_viet
ORDER BY embedding <=> '[0.01, 0.23, ...]'
LIMIT 5;

Toán tử <=> trong pgvector tính khoảng cách cosine. Ứng dụng của bạn sẽ gọi mô hình embedding để tạo vector cho câu truy vấn trước khi chạy câu lệnh này.

Quy trình đưa dữ liệu vào vector database

  1. Chuẩn bị nguồn dữ liệu: gom tài liệu, loại bỏ bản trùng, bản lỗi thời. Dữ liệu bẩn sẽ làm kết quả tìm kiếm kém dù công nghệ tốt.
  2. Chia nhỏ nội dung (chunking): tách tài liệu dài thành các đoạn có ý nghĩa trọn vẹn, ví dụ theo tiêu đề mục hoặc đoạn văn.
  3. Tạo embedding: gửi từng đoạn qua mô hình embedding để nhận vector.
  4. Gắn metadata: nguồn, tiêu đề, ngày cập nhật, ngôn ngữ, quyền truy cập.
  5. Ghi vào vector database và tạo chỉ mục (HNSW hoặc IVF).
  6. Đồng bộ định kỳ: khi tài liệu gốc thay đổi, cập nhật hoặc xóa vector tương ứng để tránh trả về thông tin cũ.

Bước 6 thường bị bỏ quên. Hãy lưu ID tài liệu gốc trong metadata để có thể cập nhật chính xác từng phần thay vì tạo lại toàn bộ.

Khi nào bạn cần vector database?

  • Cần: có hàng chục nghìn đoạn văn trở lên, cần tìm kiếm nhanh, lọc theo metadata, cập nhật dữ liệu liên tục.
  • Chưa cần: dữ liệu nhỏ (vài trăm tài liệu). Lúc này lưu vector trong bộ nhớ, file hoặc pgvector trên database có sẵn là đủ.

Lời khuyên: nếu dự án đã dùng PostgreSQL, hãy thử pgvector trước. Khi dữ liệu và yêu cầu tăng lên mới cân nhắc chuyển sang giải pháp chuyên dụng.

Những lưu ý khi triển khai

  • Chọn mô hình embedding phù hợp tiếng Việt: thử nghiệm trên dữ liệu thật thay vì chỉ dựa vào bảng xếp hạng chung.
  • Không trộn embedding từ các mô hình khác nhau trong cùng một chỉ mục; đổi mô hình thì phải tạo lại toàn bộ vector.
  • Cân nhắc hybrid search nếu người dùng hay tìm mã sản phẩm, tên riêng, con số.
  • Theo dõi chi phí: lưu trữ vector số chiều lớn và gọi API embedding đều tốn tiền khi dữ liệu tăng.
  • Phân quyền dữ liệu qua metadata để người dùng chỉ truy xuất được tài liệu được phép.

Câu hỏi thường gặp

Vector database khác gì Elasticsearch?

Elasticsearch ban đầu mạnh về tìm kiếm từ khóa (full-text). Vector database tối ưu cho tìm kiếm theo ngữ nghĩa. Hiện Elasticsearch cũng hỗ trợ vector, và nhiều vector database hỗ trợ từ khóa, nên ranh giới đang dần thu hẹp.

Embedding có phải là mã hóa dữ liệu không?

Không. Embedding là cách biểu diễn ý nghĩa dưới dạng số, không phải mã hóa bảo mật. Vẫn cần bảo vệ dữ liệu embedding như dữ liệu nhạy cảm.

Nên chọn vector database nào cho người mới?

Chroma rất dễ để học và thử nghiệm với Python. Nếu đã quen PostgreSQL, pgvector là lựa chọn tiện lợi. Khi cần dịch vụ quản lý sẵn, có thể cân nhắc Pinecone hoặc Qdrant Cloud.

Vector database có thay thế database truyền thống không?

Không. Hai loại bổ sung cho nhau: database quan hệ quản lý dữ liệu nghiệp vụ, vector database phục vụ tìm kiếm ngữ nghĩa.

Số chiều của vector là gì?

Là số lượng con số trong mỗi vector, do mô hình embedding quyết định. Nhiều chiều hơn có thể biểu diễn tốt hơn nhưng tốn bộ nhớ và tính toán hơn.

Xây ứng dụng AI với vector database cùng MelyDemy

Vector database là "bộ nhớ" giúp ứng dụng AI tìm đúng thông tin. Để thực hành xây chatbot và agent có khả năng tra cứu dữ liệu, hãy tham gia Khoá học build một AI Agent từ đầu. Nếu bạn cần nền tảng Python trước, bắt đầu với Khóa học Python.

#Vector#Database#Công#nghệ#tìm

Thấy hữu ích? Chia sẻ ngay!