Query와 Candidate의 모든 조합에 대해서 계산을 해야해서, candidate이 많을 때는 속도가 너무 느려서 쓸수가 없음. 전체 candidate 중에서 한 100개나 10개정도만 retriever로 선별을 하고, 이 중에서 가장 최고의 정답을 ranker가 선택하도록 하는 방식으로 활용해야함.
Poly Encoder는 query랑 candidate에서 각각 feature를 뽑고, similarity 계산하는 부분만 조금 복잡한 attention 아키텍쳐를 쓰기 때문에 연산속도가 빠른 편임
이녀석들도 마찬가지로 Q랑 C 각각의 feature들을 미리 뽑아 놓고 similarity 계산하는 데, 이 부분이 심지어 엄청나게 속도가 빠른 MIPS(Maximum Inner Products Search)를 기반으로 하기 때문에 Poly Encoder보다도 더 빠르게 사용할 수가 있음. 다만 ColBERT는 Bi-Encoder보다 좀 더 좋은 성능을 내기 위한 token-wise MaxSim값들의 합을 사용하였다는 게 차이임.
Test 데이터를 확보하고 있다해도, GT sentence보다 더 적절한 candidate이 존재할 수 있기 때문에 Top 1 Accuracy를 가지고는 모델의 성능을 평가하기가 부적절하다.
따라서 1개의 GT sentence와 랜덤하게 뽑은 9개의 sentence를 섞어서 batch를 구성하고, 이 중에서 정답을 맞출 확률을 측정하는 Hits@1of10 방식을 사용해서 간접적으로 모델의 성능을 측정해야한다.