Rerank 란 ?
Rerank는 초기 검색 결과를 다시 정렬하여 사용자에게 더 관련성 높은 정보를 제공하는 과정입니다.
이 과정에서 rerank 모델을 사용하여 검색어의 문맥에 맞는 검색 결과를 다시 정렬하게 됩니다.
이를 통해 기존의 키워드 기반 검색의 한계를 극복하고, 사용자의 의도에 부합하는 정확한 검색 결과를 얻을 수 있습니다.
Dev wiki 의 rerank 검색 도식화
Dev-wiki에서의 rerank 검색은 일차적으로 문서에 대한 벡터 검색을 일차적으로 수행하고, 그 결과에 대해 rerank로 다시 정렬한 결과를 유저에게 서빙합니다.
자연어로 검색을 하였을 때에도 연관이 높은 문서를 순서대로 서빙할 수 있습니다.
아래는 Cohere 사에서 제공한 multilingual rerank 2.0 모델과 Elasticsearch에서 제공하는 고전적인 문서 유사도 알고리즘인 BM25 스코어와의 비교 예시입니다.
Rerank 의 input, output 예시 살펴보기 .
살펴볼 예시 데이터
종류 | 내용 |
---|---|
검색어 | 효율적인 데이터베이스 인덱스를 설계하는 법 |
문서 1 | Mysql의 인덱스는 기본적으로 PK는 클러스터드 인덱스, 이외의 키 값은 B+ 트리 기반으로 정렬된 상태를 말합니다. |
문서 2 | 효율적인 인덱스 설계는 쿼리 성능 최적화에 크게 기여합니다. 복합 인덱스를 사용하면 여러 컬럼을 동시에 검색할 때 유리합니다. |
문서3 | 백업과 복구 기능을 통해 MySQL 데이터베이스의 안정성을 보장할 수 있습니다. |
문서 4 | Java는 객체 지향 프로그래밍 언어로, 다양한 애플리케이션 개발에 사용됩니다. |
스코어 비교
종류 | 검색어 | rerank score | bm25 score |
---|---|---|---|
문서 1 | Mysql의 인덱스는 기본적으로 PK는 클러스터드 인덱스, 이외의 키 값은 B+ 트리 기반으로 정렬된 상태를 말합니다. | 0.0025509123 | 0.775408 |
문서 2 | 효율적인 인덱스 설계는 쿼리 성능 최적화에 크게 기여합니다. 복합 인덱스를 사용하면 여러 컬럼을 동시에 검색할 때 유리합니다. | 0.9974491 | 3.0350852 |
문서 3 | 백업과 복구 기능을 통해 MySQL 데이터베이스의 안정성을 보장할 수 있습니다. | 4.4694072E-5 | 3.1549354 |
문서 4 | Java는 객체 지향 프로그래밍 언어로, 다양한 애플리케이션 개발에 사용됩니다. | 1.3420014E-5 | 0 |
결과 해석
효율적인 데이터베이스 인덱스를 설계하는 법이라는 검색어에 대해서 문서 2와 문서 3의 순위가 바뀐 것을 확인할 수 있습니다.
BM25 score는 검색어와 문서 사이의 실제 일치 여부를 기반으로 점수를 채점하기 때문에 문맥 자체는 고려하지 않습니다. 겹치는 단어가 있는 문서 3이 가장 스코어가 높음을 확인할 수 있습니다.
그에 반해 rerank에서는 검색어의 의미와 일치하게 문서 2번이 가장 높은 스코어를 가지게 됨을 볼 수 있습니다.
모두 행복하세요
기술검색은 원하는 검색과 실제 문서 사이에 연관이 없거나 적을수도 있습니다.
가령, Spring 에서 open ai api 를 호출하는 법
이라는 검색어와 ChatModel
이라는 단어 사이에는 직접적인 연관이 없으나, 유저가 원하는 정보는 ChatModel
객체의 초기화 과정과 사용 방법일 것입니다.
Dev-wiki 에서는 vector search 와 rerank 를 통해 자연어 검색을 제공합니다. 모두 원하는 양질의 정보 빠르게 찾아서 시간과 노력을 많이 세이브하시길 바합니다.
모두 행복하세요 ㅎvㅎ
다음에는 vector 서치에 대한 설명과 왜 벡터 서치를 사용할 때, rerank 같은 정렬 기준을 추가로 적용해야 하는지에 대해 다뤄보겠습니다 .