blog.dopana

Back

Ứng dụng AI hiện đại không thể thiếu RAG (Retrieval-Augmented Generation). Nhưng RAG cần một nơi để lưu hàng triệu embedding và tìm ra cái phù hợp nhất trong milliseconds. Đó là lúc vector database xuất hiện.

Bài viết này giải thích vector database là gì, so sánh các lựa chọn hàng đầu năm 2026, và chỉ bạn cách bắt đầu.

Embedding Là Gì?#

Trước khi nói về vector database, cần hiểu embedding.

Embedding là cách biểu diễn văn bản, ảnh, âm thanh thành một dãy số (vector) trong không gian nhiều chiều:

"Tôi thích mèo" → [0.12, -0.45, 0.78, ..., 0.33]  (768-1536 chiều)
"Tôi thích chó" → [0.10, -0.42, 0.80, ..., 0.30]  (gần nhau)
"Máy tính"     → [0.90, -0.10, -0.20, ..., 0.85]  (xa hơn)
plaintext

Hai câu có nghĩa gần nhau sẽ có vector gần nhau trong không gian. Công việc của vector database là tìm ra những vector “gần nhất” với vector truy vấn.

Vector Database Là Gì?#

Vector database là hệ thống lưu trữ và tìm kiếm vector. Khác với database truyền thống — nơi bạn tìm record có giá trị chính xác — vector database tìm record tương tự nhất về mặt ngữ nghĩa.

Database truyền thống:  SELECT * FROM products WHERE name = 'iPhone'
Vector database:        SELECT * FROM products WHERE embedding NEAR query_embedding
plaintext

Kết quả trả về theo độ tương tự (score), không phải khớp chính xác. Điều này rất hữu ích cho:

  • RAG — Tìm tài liệu liên quan cho LLM
  • Semantic search — Tìm kiếm theo ý nghĩa, không từ khoá
  • Recommendation — Gợi ý sản phẩm tương tự
  • Image search — Tìm ảnh bằng ảnh hoặc mô tả
  • Anomaly detection — Phát hiện bất thường

ANN Và HNSW#

Vector database không so sánh từng cặp vector (quá chậm với hàng triệu vector). Thay vào đó, chúng dùng ANN (Approximate Nearest Neighbor) — thuật toán xấp xỉ tìm hàng xóm gần nhất.

Giải pháp phổ biến nhất hiện nay là HNSW (Hierarchical Navigable Small World) — xây dựng cấu trúc đồ thị nhiều tầng để duyệt nhanh:

  • Layer cao nhất: vài node, duyệt nhanh
  • Layer thấp hơn: nhiều node hơn, chi tiết hơn
  • Từ trên xuống dưới, thu hẹp dần phạm vi tìm kiếm

HNSW trade-off giữa recall và speed qua tham số efM. Càng nhiều node duyệt, recall càng cao nhưng latency cũng tăng.

Các Vector Database Hàng Đầu 2026#

Bốn cái tên thống trị thị trường vector database năm 2026:

Qdrant#

Viết bằng Rust, mã nguồn mở (Apache 2.0). Tập trung vào hiệu năng và filter.

  • Latency p95: 22ms (nhanh nhất khi có filter)
  • Self-host: Một binary Rust, Docker đơn giản
  • Managed: Qdrant Cloud (~$45/tháng cho 10M vectors)
  • Filter: Indexed-payload pre-filter, nhanh nhất trong các lựa chọn
  • Hybrid search: Dense + sparse vector, hỗ trợ quantization
  • Memory: Ít hơn 2-3x so với đối thủ Go

Điểm yếu: Ít integration plug-and-play hơn Pinecone và Weaviate.

Chroma#

Viết bằng Rust (từ bản rewrite 2025), mã nguồn mở. Tập trung vào developer experience.

  • Setup: pip install chromadb — chạy local trong 5 dòng code
  • Self-host: Nhúng trong process Python/Node, không cần Docker
  • Managed: Chroma Cloud (mới, còn non)
  • Scale: Phù hợp prototype < 1M vectors
  • Filter: Pre-filter, không mạnh bằng Qdrant

Điểm yếu: Không có HA, không sparse vector, không quantization. Dùng để prototype rồi migrate.

Pinecone#

SaaS thuần (không open source, không self-host). Tập trung vào zero-ops.

  • Latency p95: ~45ms (cộng thêm network latency)
  • Managed: Serverless, không cần quản lý gì
  • Giá: ~$70-100/tháng cho 10M vectors
  • Filter: Metadata filtering, cải thiện nhưng vẫn kém Qdrant
  • Giới hạn: 20K dimensions, lock-in vendor

Điểm yếu: Đắt khi scale, không tự host được.

Weaviate#

Viết bằng Go, mã nguồn mở. Tập trung vào hybrid search và knowledge graph.

  • Hybrid search: BM25 + vector fusion — mạnh nhất
  • Built-in vectorization: Tự sinh embedding, không cần gọi API ngoài
  • Managed: Weaviate Cloud (~$45/tháng)
  • Latency: ~50ms p95
  • GraphQL API: Query linh hoạt

Điểm yếu: Go runtime dùng nhiều RAM hơn Qdrant, setup phức tạp hơn.

So Sánh Chi Tiết#

Tiêu chíQdrantChromaPineconeWeaviate
Ngôn ngữRustPython/RustC++Go
Open sourceApache 2.0Apache 2.0KhôngBSD-3
Self-hostKhông
ManagedQdrant CloudChroma CloudServerlessWeaviate Cloud
P95 latency22msN/A (prototype)45ms~50ms
FilterTốt nhấtCơ bảnKháKhá
Hybrid searchSparse+denseKhông nativeSparse-denseNative BM25+vector
QuantizationScalar, binary, PQKhôngCó (managed)Scalar, binary
GIá (10M vectors)~$45/thMiễn phí (self)~$70-100/th~$45/th

Quick Start: Qdrant Với Docker#

Qdrant là lựa chọn mặc định cho production RAG năm 2026. Khởi chạy đơn giản:

docker run -p 6333:6333 qdrant/qdrant
bash

Sau đó có thể dùng REST API hoặc SDK. Ví dụ với JavaScript:

npm install @qdrant/js-client-rest
bash

Quick Start: Chroma Cho Prototype#

Chroma dùng để chạy thử nhanh:

pip install chromadb
bash
import chromadb

client = chromadb.Client()
collection = client.create_collection("products")

collection.add(
    documents=["iPhone 15 Pro mới nhất", "Samsung Galaxy S24"],
    metadatas=[{"price": 999}, {"price": 899}],
    ids=["prod_1", "prod_2"]
)

results = collection.query(
    query_texts=["điện thoại Apple"],
    n_results=5
)
python

Khi Nào Dùng Cái Nào?#

Prototype / học tập → Chroma

Không cần Docker, không cần server. pip install là chạy. Dùng để thử nghiệm embedding, kiểm tra RAG pipeline.

Sản phẩm thật, đội nhóm nhỏ → Qdrant Cloud

Cân bằng tốt nhất giữa performance, cost, và độ phức tạp vận hành. Self-host nếu muốn tiết kiệm hơn.

Không muốn động đến infrastructure → Pinecone Serverless

Trả tiền để không phải nghĩ về server. Phù hợp startup có vốn, cần speed to market.

Cần hybrid search (BM25 + vector) → Weaviate

Khi keyword search vẫn quan trọng song song với semantic search — documentation search, enterprise search.

Kết Luận#

Vector database là hạ tầng không thể thiếu cho ứng dụng AI hiện đại. Năm 2026, lựa chọn đã rõ ràng:

  • Prototype: Chroma — zero setup
  • Production RAG: Qdrant — nhanh nhất, rẻ nhất khi self-host
  • Zero ops: Pinecone — trả tiền lấy tiện
  • Hybrid search: Weaviate — BM25 + vector

Qdrant là lựa chọn mặc định cho hầu hết team: mã nguồn mở, Rust, filter nhanh nhất, quantization sẵn, và Qdrant Cloud giá cạnh tranh. Việc còn lại là chọn embedding model phù hợp và bắt đầu xây dựng.

Tài liệu tham khảo#