Tìm kiếm ngữ nghĩa không cần embedding (Semantic Search Without Embeddings)
(softwaredoug.com)Đến năm 2026 mà bạn vẫn nghĩ "semantic search = embedding + vector DB" sao?
Luận điểm chính
Tìm kiếm ngữ nghĩa không chỉ đơn giản là độ tương đồng (similarity) quan trọng, mà
một hệ tìm kiếm thực sự tốt phải đồng thời đáp ứng tốt cả ① biểu diễn (representation) + ② độ tương đồng (similarity) + ③ tiêu chí khớp (match criteria).
Bài viết chỉ ra rằng tìm kiếm vector dựa trên embedding làm tốt ① và ②, nhưng lại rất yếu ở ③ (chỉ bao gồm/loại trừ kết quả đúng trong phạm vi người dùng thực sự mong muốn).
Ví dụ cốt lõi:
Truy vấn: "loại trái cây tròn màu đỏ mọc trên cây"
Kết quả từ một hệ embedding tốt (thường xuất hiện ở top đầu):
- táo
- cam
- ⚾️ bóng chày
→ Người dùng hoàn toàn không muốn bóng chày, nhưng embedding lại xem nó là khá gần vì "tròn và đỏ" nên vẫn đưa vào
Không thể giải quyết bằng ngưỡng điểm (vì khác nhau theo từng domain, từng truy vấn)
Giải pháp thay thế được đề xuất: hệ phân loại phân cấp được quản lý tốt (Managed Taxonomies)
Ví dụ danh mục nội thất của Wayfair
Baby & Kids
└─ Toddler & Kids Playroom
└─ Indoor Play
└─ Rocking Horses
└─ Novelty Rocking Horses
Nếu đưa cấu trúc này lên trên BM25 bằng một hierarchical tokenizer thì
- Danh mục càng cụ thể (con) = df càng thấp → điểm BM25 tự động cao hơn
- Có thể điều chỉnh phạm vi rất chính xác bằng ngôn ngữ mà người dùng hiểu được (đi lên danh mục cha/ông cha thì phạm vi mở rộng dần)
- Nếu tự động hóa phân loại bằng LLM thì gánh nặng bảo trì cũng giảm đi đáng kể
Kết luận:
Embedding rất mạnh, nhưng không phải là thứ bắt buộc.
Chỉ với năng lực danh mục/phân loại vốn đã tốt trong domain + hỗ trợ từ LLM,
vẫn có thể xây dựng semantic search chính xác hơn nhiều và mang lại trải nghiệm người dùng tốt hơn so với embedding.
Đặc biệt khuyến nghị cho những ai đang làm tìm kiếm chuyên biệt theo domain như thương mại điện tử, y tế, pháp lý, thư viện, v.v.
1 bình luận
Có vẻ cần hybrid search và multi-query RAG.