본문 바로가기
패스트캠퍼스&업스테이지 AI Lab 1기

IR RAG 경진대회 후기 - 패스트캠퍼스&업스테이지 AI Lab 1기

by 아르카눔 2024. 5. 7.

1. Abstract

  • Goal of the Competition
    • 과학 지식 질의 응답 시스템 구축. LLM의 문제 해결을 위해서 IR을 활용한 RAG로 수행.
  • Timeline
    • April 08, 2024 - Start Date
    • April 11, 2024 - First Mentoring (Before Competition)
    • April 15, 2024 - Staring Project Date
    • April 18, 2024 - Second Mentoring
    • April 23, 2024 - Third Mentoring
    • April 29, 2024 - Final Mentoring
    • May 02,  2024 - Final submission deadline
  • Description of the Data
    • 과학 상식 문서 4272개 
      ko_ai2_arc__ARC_Challenge와 ko_mmlu 데이터
      총 63개의 데이터 소스 (ko_mmlu__human_sexuality__train, ko_mmlu__human_sexuality__test 등을 별개로 카운트, 또한 ko_mmlu__human_sexuality__train과 ko_mmlu__conceptual_physics__train 도 별개로 카운트)
      파일 포맷은 각 line이 json 데이터인 jsonl 파일입니다.
    • 과학 세부 분야
      ['nutrition', 'conceptual_physics', 'ARC_Challenge', 'human_sexuality', 'virology', 'human_aging',
      'high_school_biology', 'high_school_physics', 'college_biology', 'computer_security', 'anatomy', 'college_physics',
      'medical_genetics', 'electrical_engineering', 'college_medicine', 'college_chemistry', 'astronomy', 'college_computer_science',
      'global_facts', 'high_school_chemistry', 'high_school_computer_science']
    • 성능 지표는 MAP (Mean Average Precision)
    • 경진대회 데이터는 AI Stages가 제공했다.
  • Description of the Work
    • 총 5명의 조원이 각자 EDA, 리서치, 피쳐엔지니어링, 모델링 후 결과 공유
    • 첫 주차는 오전 10시에 회의, 두번째 주차에는 오후 5시에 하루에 2번씩 회의
    • 얻은 인사이트, 구현한 코드, 모은 데이터, 리서치, 의문점 등 논의
    • 여러차례 멘토링을 통해 의문점이나 추가적인 사항에 대한 정보 공유
    • 후반부에는 각자 프롬프트 엔지니어링, 모델 학습 등을 나눈 다음 합쳐서 수행

2. Process : Competition Model

 

RAG (Retrieval Augmented Generation) Process Flow

유저에게 쿼리 (질의, 질문, 검색될 내용)을 받는다.

Retrieval (IR, 검색)을 활용하여 LLM이 사용할 쿼리에 적합한 레퍼런스 문서들을 k개 찾는다.

LLM이 쿼리와 레퍼런스 문서들을 통해서 답변을 생성한다.

 

  • AI Stages에서 제공한 서버 이용해서 학습

  • Elasticsearch를 통해서 IR 과정 수행
    Sparse Retrieval은 역색인과 BM25
    Dense Retrieval은 Setence Transformers의 "snunlp/KR-SBERT-V40K-klueNLI-augSTS" 사용하여
    sentence embedding으로 KNN을 사용하여 비슷한 문서 탐색.
    Loss는 Cosine Embedding Loss로 설정.
    Positive and negative pairs 구성; 각자 pair는 쿼리 Q와 문서 D (Q, D)로 구성.
    전체 파인 튜닝과 LoRA 파인 튜닝 적용
    KLUE-RoBERTa 파인 튜닝도 시도
  • 프롬프트 엔지니어링
    ### Instructions, ### Role, ### Outputs 등으로 LLM에서 명확하게 할 일을 제시하는 경험
"""
## Role: 과학 공학 지식 전문가

## Instructions
'is_science' 필드를 추가하여 질문이 과학 지식에 관련된 내용이면 true를, 
과학 지식에 관련된 내용이 아니라면 false를 value로 만든다. 

"""
  • LLM 사용하여 문서에 해당하는 질문과 질의를 생성 (OpenAI API로 GPT-3.5 사용, Google의 Gemini API 활용)
# 질문 생성 프롬프트

f"""
{document}

위 문서에서 질문 5개 만들어줘
"""

 

3. Process : Issues

  • Issues.
    • 부족한 데이터의 수 문제
    • 각 문서에 대한 질문이 없다. 즉, 정답이 없다.
    • Huggingface의 모델을 Elasticsearch와 함께 사용하기 어려웠다.
    • Elasticsearch와 LLM 사용 자체가 처음이었다.
  • Solutions to Imporve Your Project Performance.
    • 주어진 강의와 baseline 코드를 적용하면서 Elasticsearch와 LLM API 사용에 익숙해졌다.
    • 직접 Google Gemini를 활용하여 문서에 대한 질문을 5개 생성해서 positive and negative pairs를 구성했다.

4. Role

  • EDA, 리서치, 데이터 생성, 피쳐 엔지니어링, 모델링, 프롬프트 엔지니어링

5. Results

리더보드

  • 10th, Public Score: 0.7076
  • 10th, Final(Public + Private) Score: 0.7152

6. Conclusion and Retrospective

  • Elasticsearch 자체를 쓰는것도 좋지만 직접 구현하는 방법도 고려해볼 필요가 있다.
  • 쿼리가 과학상식인지 아닌지 구분하는 추가적인 별도의 모델을 둘 수도 있다.
  • Elasticsearch에 쓰인 역색인이나 BM25를 건드리는 대신 동의어, 유의어 처리, 토크나이저 등의 변경 등이 더 중요하다. 데이터의 품질에 집중하는게 좋다.
  • 같은 모델이라도 seed를 변경하는 방법도 고려해볼만했는데 적용하지 못해서 아쉬웠다. 
  • 멘토님이 질의와 응답에 대한 hard negative pairs를 생성하라고 조언해주셨다. 이는 똑같은 물리학이라도 전자기학과 양자역학이 서로 다르기 때문에, 커다랗게는 같은 도메인일지라도 세부 내용을 달리하여 보다 섬세하게 학습을 할 수 있도록 한다. 하지만 이는 사람이 수작업으로 매칭을 해야하고 도메인 지식이 많이 요구되기 때문에 수행할 수 없었다.
  • Sentence Transformer이 아닌 Huggingface의 모델을 파인 튜닝 후 적용하지 못해서 아쉬웠다.
  • 유저 사전을 만들어서 konlpy와 huggingface 모델에는 등록을 해봤으나 sentence_transformer에는 적용하고 실제 LLM 생성까지 이어지지 못해서 아쉽다.
  • '통학 버스의 가치에 대해 말해줘.'와 같이, 교육과 관련된 내용인지 교통공학에 관련된 내용인지,
    그리고 버스라는 자체로 기계공학이나 전자공학과 관련된 내용인지 애매한 항목에 대한 추가적인 분석이 부족했다.
  • 다들 IR분야에 생소하기도 하고 Elasticsearch를 처음 사용해서 문서 자체에 대한 언어적, 도메인적 분석을 충분히 하지 못한 점이 아쉽다. 
  • 구체적인 질의 내용이 아닌 내용들을 레퍼런스로 삼아서 LLM이 정답을 생성했기 때문에 점수가 낮았다.
    예를 들어 "나무 분류"에 대해서 알려달라한 질문에 대해서 "나무 분류"랑 상관없는 나무 내용들이 높은 점수를 얻은 레페런스가 되었다. LLM의 생성 결과에 대한 분석을 시간 부족으로 인해 하지 못해서 아쉽다.  

 

 

 

References:

https://platform.openai.com/docs/guides/prompt-engineering/strategy-write-clear-instructions

https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/send-chat-prompts-gemini?hl=ko