TROISINH
BreakthroughsRAG & Retrieval

Dense Retrieval — Bi-encoder biến query và doc thành vector, tìm bằng cosine

Tại sao tìm kiếm từ khóa 'start car' bỏ lỡ tài liệu về 'vehicle ignition'? Dense Retrieval dùng bi-encoder để biến text thành vector ngữ nghĩa, giải quyết lexical mismatch bằng cosine similarity trong không gian embedding.

Bạn từng gõ "cách khởi động xe hơi" vào ô tìm kiếm nhưng bỏ lỡ đúng đoạn tài liệu viết "vehicle ignition procedures" chưa? Đó là lexical mismatch — khoảng cách giữa cách người dùng diễn đạt và cách tài liệu được viết. Dense Retrieval chính là giải pháp khiến máy tính hiểu ý nghĩa thay vì chỉ ghép chữ.

Vấn đề

Traditional search (BM25, TF-IDF) hoạt động như thủ thư tra từ khóa: nó đếm số lần từ xuất hiện và đánh trọng số theo tần suất. Cách này chết dở khi gặp:

  • Synonymy: "Bắt đầu xe" và "khởi động ô tô" là một ý, nhưng BM25 thấy chúng như hai thực thể khác biệt.
  • Paraphrase: "Làm thế nào để bật máy xe" vs "quy trình đánh lửa động cơ" — cùng nghĩa, khác từ vựng hoàn toàn.
  • Conceptual search: Người dùng tìm "phương pháp tăng tốc database" nhưng tài liệu hay dùng "index optimization" — không có từ khóa chung nào overlap.

Vấn đề cốt lõi: BM25 là word-matching, không phải meaning-matching. Nó thiếu khả năng nắm bắt semantic similarity — mối liên hệ ngữ nghĩa giữa các cụm từ khác nhau.

Ý tưởng cốt lõi

Dense Retrieval biến search thành "tra tọa độ trên bản đồ ngữ nghĩa" thay vì "so khớp từ khóa".

Thay vì lưu trữ text dưới dạng chuỗi ký tự, dense retrieval dùng bi-encoder — hai mạng neural (thường là BERT-based) — để nén query và document thành các vector dày đặc (dense vectors, thường 768 hoặc 1024 chiều). Khoảng cách góc (cosine similarity) giữa hai vector chính là độ liên quan ngữ nghĩa.

Đây là lossy compression protocol: mỗi document bị nén thành "semantic hash" cố định, đánh đổi độ chính xác tuyệt đối để lấy 1000× speedup qua pre-computed index và matrix multiplication.

Cơ chế "aha moment":

  1. Dual-encoder architecture: Query encoder EqE_q và document encoder EpE_p (thường share weights) chiếu text vào cùng không gian embedding Rd\mathbb{R}^d.
  2. Semantic geometry: Training contrastive loss kéo giãn không gian như tấm cao su — các concept liên quan bị ép gần nhau, không liên quan bị đẩy xa.
  3. Approximate Nearest Neighbor (ANN): Thay vì so sánh query với triệu document một cách tuần tự (O(N)), FAISS/HNSW cho phép tìm neighbor gần nhất trong sub-linear time (O(log N) hoặc O(1) với hash).

That's it. Không cần parse syntax, không cần inverted index. Chỉ là: vector hóa → tìm láng giềng gần nhất.

Tại sao nó hoạt động

Dot product là "đo góc đồng hướng": Khi tính qd\mathbf{q} \cdot \mathbf{d}, bạn đo mức độ alignment giữa hai vector. Nếu "medical" và "healthcare" là đồng nghĩa, training ép chúng trỏ cùng hướng (high cosine similarity), bất kể từ surface form khác nhau.

Hard negatives là chìa khóa: Model chỉ học được phân biệt tinh tế khi bị ép phân biệt giữa "gần đúng" và "chính xác". Contrastive learning dùng in-batch negatives và curated hard negatives để tạo margin rõ ràng trong không gian vector.

Tại sao ANN chấp nhận được: Trong retrieval, bạn không cần tìm đúng document duy nhất — bạn cần đừng bỏ lỡ thứ gì tốt. Approximate search với recall@100 > 95% là đủ, vì stage tiếp theo (cross-encoder reranking) sẽ tinh chỉnh precision.

Ý nghĩa thực tế

So sánh với lexical search:

Đặc điểmBM25/TF-IDFDense Retrieval
MatchingExact keywordSemantic meaning
SynonymyFail (cần query expansion)Handle tự nhiên
SpeedFast (inverted index)Fast (ANN index)
Domain shiftRobustCần fine-tuning nếu out-of-domain
InterpretabilityHigh (xem được từ khóa)Low (black box vectors)
MemoryNhỏ (chỉ lưu term index)Lớn (float32 vectors ~4 bytes/dim)

Benchmarks thực tế:

  • DPR (Dense Passage Retrieval) đạt 79.4% Top-20 accuracy trên Natural Questions, vượt trội so với BM25 (59.1%).
  • Hybrid retrieval (dense + BM25) thường tăng 10–30% trên BEIR benchmark.
  • LTRe framework cho phép training nhanh hơn 170× nhờ cached document indices.

Ai đang dùng:

  • OpenAI (text-embedding-ada-002/3), Cohere Embed, Google (two-tower models) cho search sản phẩm.
  • RAG systems: Pinecone, Weaviate, Milvus làm vector database backend.
  • Late-interaction models như ColBERTv2 (kết hợp sparse và dense).

Limitations — những gì technique này KHÔNG giải quyết:

  • Domain sensitivity: Embedding trained trên Wikipedia sụp đổ khi đưa vào legal/medical domain chuyên sâu nếu không fine-tune.
  • Index staleness: Thay đổi model = phải re-encode toàn bộ corpus (đắt ở billion-scale).
  • Lexical blind spots: Tên riêng, mã số, ID codes (rare tokens) thường bị miss vì embedding học từ ngữ nghĩa, không phải ký tự.
  • Memory cost: 100M documents × 768-dim × 4 bytes ≈ 300GB FP32 (mitigated bằng quantization xuống INT8/INT4).

Đào sâu hơn

Paper gốc:

Cùng cụm (RAG & Retrieval):

Đọc tiếp:

  • Word Embeddings — Nền tảng không gian vector cho ngôn ngữ (cần hiểu để nắm dense retrieval).
  • Multi-Agent (Level 2) — Hệ thống agent phức tạp thường dùng dense retrieval để truy xuất tool/knowledge.

On this page