TopDev AI Robot TopDev
#AI & Trợ lý lập trình#Backend & Microservices#Cơ sở dữ liệu & Tối ưu

Hybrid Search trong RAG: Kết hợp BM25 (Full-text) và Vector Dense Embedding

Minh Trí (AI Engineer)
📖 2 phút đọc 💬 1 phản hồi
⚡ Tóm tắt 30 giây bởi TopDev AI
AI Overview

Điểm mù chết người của Vector Search thuần túy Rất nhiều hệ thống RAG chỉ sử dụng tìm kiếm tương đồng vector Cosine Similarity. Tuy nhiên, Vector Search thường thất bại trong các trường hợp: - Tìm ki…

☰ Mục lục bài viết (4 phần) Mở / Đóng mục lục

Điểm mù chết người của Vector Search thuần túy#

Rất nhiều hệ thống RAG chỉ sử dụng tìm kiếm tương đồng vector (Cosine Similarity). Tuy nhiên, Vector Search thường thất bại trong các trường hợp:

  • Tìm kiếm chính xác mã sản phẩm, mã lỗi (ví dụ: ERR_404_PG_CONN).
  • Tìm kiếm tên riêng, từ viết tắt nội bộ của công ty.
  • Các con số chính xác (ví dụ: "Doanh thu quý 3 năm 2024").

Để khắc phục điểm mù này, giải pháp tiêu chuẩn công nghiệp hiện nay là Hybrid Search kết hợp giữa Keyword Search (BM25) và Vector Search (Dense Embedding).

Cơ chế hoạt động của Reciprocal Rank Fusion (RRF)#

Thuật toán RRF lấy kết quả xếp hạng từ 2 công cụ tìm kiếm và tính toán lại điểm số chung:

PYTHON
def reciprocal_rank_fusion(results_bm25, results_vector, k=60):
    rrf_scores = {}
    
    # 1. Tính điểm từ kết quả BM25
    for rank, doc in enumerate(results_bm25):
        doc_id = doc.id
        rrf_scores[doc_id] = rrf_scores.get(doc_id, 0) + 1.0 / (k + rank + 1)
        
    # 2. Cộng dồn điểm từ kết quả Vector Search
    for rank, doc in enumerate(results_vector):
        doc_id = doc.id
        rrf_scores[doc_id] = rrf_scores.get(doc_id, 0) + 1.0 / (k + rank + 1)
        
    # 3. Sắp xếp lại theo điểm tổng hợp cao nhất
    sorted_docs = sorted(rrf_scores.items(), key=lambda x: x[1], reverse=True)
    return sorted_docs

Kết quả cải thiện đo lường được#

  • Tỉ lệ tìm chính xác mã lỗi kỹ thuật tăng từ 34% lên 96%.
  • Tỉ lệ trúng tài liệu liên quan cho các câu hỏi tổng quát duy trì ở mức 91%.
  • Không làm tăng đáng kể độ trễ nếu database hỗ trợ sẵn hybrid search (như Elasticsearch, Qdrant hoặc PostgreSQL với pg_trgm + pgvector).

Góc thảo luận#

Hệ thống tìm kiếm của bạn đang dùng cơ chế nào? Bạn đã thử nghiệm tính năng Hybrid Search của Qdrant hoặc PostgreSQL chưa?


Xem thêm nội dung liên quan:

Chia sẻ thảo luận này:

Thảo luận

1 phản hồi

Ý kiến từ cộng đồng kỹ sư TopDev
💬

Tham gia thảo luận

Cộng đồng mở · Đăng nhập 1-chạm qua Google
  1. Thu Trang (Backend Engineer)
    #1

    Chuẩn xác luôn! Team mình từng bị khách hàng phàn nàn vì hỏi đúng mã hợp đồng HD-2024-001 mà vector search toàn trả về các hợp đồng chung chung khác. Sau khi thêm BM25 vào thì giải quyết triệt để 100% case này.

Bài liên quan trong #AI & Trợ lý lập trình

1
TopDev AI Companion
AI
✓ Đã sao chép link