재정정보 AI 검색 알고리즘 경진대회

알고리즘 | NLP | 생성형 AI | LLM | 질의응답 | F1 Score

  • moneyIcon Prize : 1,000만원
  • 1,070명 마감

 

MarkDown + Ensemble Retriever + Llama-3.1-8B-It

2024.08.15 21:35 1,588 Views language

LLM과 RAG에 대한 경험이 부족한 상태에서 대회에 참가했습니다. 최종 점수는 0.65-0.67 사이였습니다. 대회가 예상보다 어려웠지만, 많은 것을 배웠습니다. 향후 수상 코드를 참고하여 더 배워볼 예정입니다

## 1. Chunk 처리

- 주로 마크다운 청크를 사용 (표가 많아서)
- 마크다운 헤더 스플리트 후 512 크기로 청크 분할
- 개선점: PDF에서 표와 텍스트를 분리하여 각각 요약 생성 고려

## 2. Retriever

- 앙상블 방식이 효과적
- 사용 모델:
  1. ko 형태소 기반 키워드 추출 (kiwibm25)
  2. 문맥 유사도 판단 (faiss)
- 가중치: 0.5/0.5 비율로 적용
- 개선점: Retriever 결과 갯수가 상당히 많이 나와서 k를 조절하거나 Rerank 또는 필터링 적용하여 LLM 입력 전 정제가 필요하다고 생각

## 3. 언어 모델: Llama-3.1-8B-It

- 장점:
  - HuggingFace에서 무료 사용 가능 (동의 필요)
  - 빠른 처리 속도
  - 한국어 이해도 우수
  - 프롬프트에 EOS 토큰 추가로 문장 반복 방지

* PEFT로 단순히 QA로 파인튜닝도 해봤는데, 답변 형태에 대한 스타일은 잘 학습되는 것 같아서 어느정도 점수가 상승하긴 했습니다

## 개선 필요 사항

1. 표 처리 능력 향상
   - 숫자 데이터에 대한 답은 잘 못하는 경우가 많았습니다. (예. 에너지바우처). 표에 대한 이해를 잘 할 수 있게 전처리를 잘해야 할 것 같습니다
2. 프롬프트 전략 개선
   - 더 효과적인 프롬프트 설계로 점수 향상이 가능한 구조 같습니다. 중요 데이터 값이 틀려도 문장 형태가 비슷하면 높게 점수를 받는 구조로 보입니다

의견 주시면 감사하겠습니다

Code
로그인이 필요합니다
0 / 1000
9596
2024.08.15 23:57

공유 감사합니다. 코드 정리를 깔끔하게 잘 하신 것 같아 배워야겠습니다.

template 부분에서는 eos token을 넣으셨는데, 저 부분은 빼야하지 않을까요? (eos_token은 모델이 next token prediction하다가 eos_token을 예측함으로써 추가적인 추론을 끝내기 위해 존재)

ingbeeeded
2024.08.16 08:49

파인튜닝 후에는 상관이 없었습니다. 그런데 퓨어 모델을 사용할 땐 저런 패턴으로 안넣어주면, 문장이 반복되는 현상이 간혹 나와서요. 
모델 파라미터로 조정이 가능할 것도 같은데 (top_p, penalty), 제가 잘 컨트롤 못하는지 반복이 계속 간혹 됐습니다
그런데 저런 패턴으로 넣어주니 아예 사라져서 공유 드렸습니다!

fvplfvociac
2024.08.17 20:44

저도 표때문에 마크다운으로 가져와서 했는데 비슷한 어프로치를 하셨네요 저는 베이스라인 llama2(public 0.24)보다 더 낮은 그냥 야놀자모델(vram 4gb정도에서 구동가능한) 로 했는데도 0.35정도 나오는 것을 보면, 어떻게 긁어오는가도 꽤 중요한 것 같습니다