Retrieval một phương thức thất bại ở các edge case: dense vector bỏ sót token và ID hiếm; lexical thuần bỏ sót diễn đạt lại và tương đồng ngữ nghĩa. Retrieval lai hợp nhất các tín hiệu bổ sung - ngữ nghĩa dense, lexical sparse, metadata có cấu trúc, freshness theo thời gian - để tạo tập ứng viên ổn định, precision cao. Bài này trình bày kiến trúc, chuẩn hóa, fusion scoring, xử lý lỗi và đánh giá.
Động lực
Kịch bản lỗi:
- Tên riêng hoặc mã SKU bị mô hình dense bỏ sót.
- Query về thay đổi giá kéo snapshot cũ thiếu temporal boost.
- Câu hỏi tự nhiên dài bị hệ sparse-only đặt trọng số quá nhiều vào stopwords.
- False positive vector trên trang quá rộng về ngữ nghĩa, như marketing fluff, thiếu neo lexical.
Hybrid giảm rủi ro bằng cách bắt các chiều bằng chứng trực giao.
Lớp thành phần
Luồng khuyến nghị:
- Query Embedding -> ANN search (k_vec)
- Lexical Search (BM25 / SPLADE / Elasticsearch) (k_lex)
- Union -> Score Normalization (scale theo nguồn)
- Metadata Filter Pass (locale, access_tier, page_type)
- Điều chỉnh diversity và freshness
- Cross/Mono Re-Ranker tùy chọn
- Final Truncation (top K)
Giữ điểm thô trước fusion để kiểm toán.
Chuẩn hóa query
Các bước:
- Unicode normalize NFKC
- Chuyển lowercase, giữ snapshot casing cho định dạng câu trả lời nếu cần
- Tokenize và giữ stopwords, vì semantic embeddings có thể tận dụng ngữ cảnh
- Synonym / Alias Expansion: thêm token thay thế cho ánh xạ codename sản phẩm nội bộ, không đưa vào prompt mô hình và chỉ dùng cho sparse retrieval
- Numeric & Version Extraction: bắt mẫu X.Y.Z để scoring lexical có mục tiêu
Bộ lọc metadata và thuộc tính
Bộ lọc áp dụng sau union ứng viên ban đầu giúp giảm mất recall. Trường thường gặp: locale, access_tier, page_type, product_area, updated_bucket. Thực thi bộ lọc bảo mật như tenant hoặc tier TRƯỚC scoring fusion để ngăn rò rỉ ảnh hưởng re-ranking. Cung cấp debug mode trả về tập filtered_out để kiểm tra.
Chiến lược re-ranking
Dùng cross-encoder nhẹ, ví dụ mô hình distilled, trên N đầu (10-20). Nếu độ trễ vượt budget, degrade: bỏ re-rank HOẶC giảm số ứng viên trong khi tăng trọng số lexical. Theo dõi re_rank_delta = MRR_post - MRR_pre để biện minh chi phí. Cache kết quả re-rank cho union set giống nhau trong TTL ngắn.
Freshness và tín hiệu thời gian
Tính freshness_weight = exp(-lambda * age_days) với lambda tinh chỉnh theo loại nội dung, cao hơn cho pricing và thấp hơn cho API ổn định. Kết hợp: final_score = w_sem * sem_score + w_lex * lex_score + w_fresh * freshness_weight + w_meta * meta_priors. Chuẩn hóa từng thành phần trước, bằng z-score hoặc min-max, để tránh một thành phần thống trị.
Chế độ lỗi
| Lỗi | Nguyên nhân | Giảm thiểu |
|---|---|---|
| Thiên lệch phổ biến | Trọng số lexical tf-idf quá cao | Giới hạn đóng góp của tần suất thuật ngữ |
| Kết quả cũ | Freshness weight tinh chỉnh sai | Hiệu chỉnh lại lambda bằng evaluation set |
| Rò rỉ locale | Áp dụng filter muộn | Di chuyển bộ lọc bảo mật lên sớm hơn |
| Drift ngữ nghĩa | Nâng cấp mô hình embedding | Dual-index và so sánh A/B trước rollout |
| Nhiễu over-fusion | Kích thước union không giới hạn | Giới hạn union, diversity pruning |
Khung đánh giá
Thí nghiệm:
- Ablation: đo Recall@k và MRR cho vector only, lexical only, hybrid không rerank và full.
- Fusion Weight Tuning: grid search trọng số bằng validation gold set.
- Latency Budget: theo dõi mean + P95 retrieval latency theo từng cấu hình.
- Drift: giám sát thay đổi tương đối hằng tuần của recall cho query head và tail.
Duy trì manifest đánh giá với hash cấu hình.
Vòng tối ưu hóa
Chu kỳ:
- Log retrieval traces (query, ứng viên, điểm, source_tag).
- Xác định mis-hit, như faithfulness downstream thấp hoặc số trích dẫn thấp, rồi phân loại root cause: thiếu ứng viên lexical, false positive ngữ nghĩa, nội dung cũ.
- Điều chỉnh trọng số hoặc threshold; chạy suite offline.
- Canary trọng số fusion mới sau feature flag.
- Promote khi cải thiện có ý nghĩa thống kê.
Ý chính
- Retrieval lai là hệ thống nhiều núm chỉnh: instrument liên tục.
- Áp dụng bộ lọc bảo mật và truy cập sớm; tránh rò rỉ vào scoring.
- Re-ranking phải biện minh độ trễ bằng tăng MRR hoặc Recall đo được.
- Temporal decay ngăn trang cũ nhưng quyền lực cao thống trị.
- Xử lý thay đổi fusion như mã: version, evaluate, roll forward hoặc rollback.