본문 바로가기

공부방/Upstage AI Lab 4기

[IR] 지금까지 했던 것, 그리고 하고 있는 것들

1. 베이스라인 코드 보면서 내용 익히기

베이스라인으로 나온 결과 리더보드에 올렸을 때: 0.42(sparse)

 

2. 프롬프트 바꿔주기
프롬프트를 구체적으로 입력하고, 동일한 프롬프트에서 sparse_retrieve와 dense_retrieve를 각각 넣어서 결과를 확인해봄

sparse_retrieve에서 0.57 -> 프롬프트 중 function calling의 description을 영어에서 한글로 바꿔보니 0.52로 떨어짐

dense_retrieve에서 0.37

 

3. sparse와 dense를 합쳐서 사용하는 hybrid_retrieve 사용
sparse로 초기 후보 문서 10개 가져오고, 10개에 대해서 dense 검색으로 리랭킹하여 상위 3개 문서만 추출

결과는 0.45 -> dense가 0.37로 낮은 성능을 보였기 때문에 임베딩 모델을 바꾸고 dense 성능을 끌어올리면 hybrid가 잘 작동할 것이라고 생각. ==> 임베딩 모델을 바꿔보자!

 

4. 임베딩 모델 변경
1) solar 임베딩 시도 - 차원수가 높아서(4096인가) 엘라스틱서치 안에 안들어가서 패스
2) Sentence Transformer 모델로 가져와 쓸 수 있는 것 중에서 버트 모델: BM-K/KoSimCSE-bert 사용
-> dense 0.5 로 성능 향상 / hybrid 0.56
3) openai 임베딩 모델 사용: text-embedding-3-small
-> dense 0.49 / hybrid 0.64

==> openai 임베딩을 사용한 hybrid retrieve 성능이 가장 좋았으니 이걸 좀 더 파보자고 생각. 

 

5. TopK 문서를 더 많이 뽑고 3개를 더 정교하게 선발해보자(?) - 각종 파라미터 변경해가기

기존에는 질문 하나에 관련 문서를 뽑아오는 방식인데, 질문 하나당 비슷한 질문을 3개를 더 만들어서 각 질문에 대해 관련 문서들을 10개씩 뽑아오고, 거기서 뽑힌 문서들 중에서 가장 많이 뽑힌 문서를 추출하는 방식. 질문 3개 만들 때 챗지피티 사용. 

ensemble_retrieve를 새로 만들어서, 

문서 5개만 뽑음, 질문 3개 만들 때 temperature 0.3, hybrid 점수 계산할 때 sparse 0.4 dense 0.6 -> 0.65

문서 10개씩 뽑음, 질문 3개 만들 때 temperature 0.2, hybrid 점수 계산할 때 sparse 0.4 dense 0.6  -> 0.66

문서 10개씩 뽑고, 질문 3개 만들 때 temperature 0.2, hybrid 점수 계산할 때 sparse 0.2 dense 0.8 ->

 

6. ColBERT 활용한 도메인 성능 최적화 - 임베딩 모델 학습시키기

문서 집합을 가지고 pseudo train 데이터셋 만들기