Bi-encoder tách hai nhánh để vector tài liệu được tính sẵn trước khi có câu hỏi

Bi-encoder tách hai nhánh để vector tài liệu được tính sẵn trước khi có câu hỏi A data-flow diagram generated by Archify. 01 / Đầu vào 02 / Encoder 03 / Vector 04 / So sánh 05 / Kết quả Câu hỏi user · chỉ có lúc runtime · 01 / Đầu vào Câu hỏi user chỉ có lúc runtime Query encoder · chạy một lần mỗi truy vấn · 02 / Encoder Query encoder chạy một lần mỗi truy vấn Query vector · một điểm trong không gian · 03 / Vector Query vector một điểm trong không gian Độ tương đồng · cosine hoặc dot product · 04 / So sánh Độ tương đồng cosine hoặc dot product Láng giềng gần nhất · candidate theo ngữ nghĩa · 05 / Kết quả Láng giềng gần nhất candidate theo ngữ nghĩa Toàn bộ chunk · hàng triệu đoạn văn · 01 / Đầu vào Toàn bộ chunk hàng triệu đoạn văn Document encoder · chạy offline lúc index · 02 / Encoder Document encoder chạy offline lúc index Vector tính sẵn · nằm sẵn trong index · 03 / Vector Vector tính sẵn nằm sẵn trong index encode lúc hỏi một vector nhánh online xếp theo khoảng cách encode lúc index lưu lại nhánh offline Legend primary data data store data flow

Vì sao bi-encoder hợp với chặng tìm ứng viên

  • • Query và document được encode hoàn toàn độc lập với nhau
  • • Nhờ vậy mười triệu chunk chỉ cần chạy transformer một lần lúc index
  • • Lúc có câu hỏi, hệ thống chỉ encode đúng một chuỗi rồi đi tìm láng giềng

Cái giá của sự độc lập đó

  • • Model không bao giờ nhìn query và document cùng lúc
  • • Mọi tương tác giữa hai bên bị nén vào phép so hai vector
  • • Đây chính là lý do một reranker vẫn cần đứng phía sau

Dense không phải BM25 phiên bản thông minh hơn

  • • Sparse dùng bằng chứng mặt chữ, dense dùng biểu diễn đã học
  • • Hai tín hiệu khác nhau nên chúng hỏng theo hai kiểu khác nhau
  • • Chọn metric đo khoảng cách theo đúng cách embedding được huấn luyện