키워드 추출 실험을 어느 정도 진행했다. 문제와 연관된 키워드를 뽑고 그 중 위키피디아 페이지가 존재하는 비율이 7:3 정도 있었다. 꽤 많은 단어를 모았다고 생각했다. 현재 유효한 데이터가 1600개 정도이고, 데이터 하나 당 5개 키워드를 뽑았으니, 총 8000개 키워드가 있다. 그 중, 70%인 5600개 키워드로 위키피디아 페이지에 대한 벡터 DB를 구축할 수도 있다. RAG를 맡은 팀에서도 이 키워드를 활용했다. 데이터 증강이 생각보다 어렵다는 걸 새삼 느낀다... 그리고 결과도 한 눈에 안 보이고...
키워드 추출 결과와 문제 유형 분류 데이터를 통합했다. 지문에 문제를 풀기 위한 지식이 충분한지를 나누는 내적/외적 추론 유형 분류와 문제 풀이에 핵심인 5개 키워드 데이터를 통합했다. 이제 나는 외적 추론 데이터에서 키워드를 바탕으로 위키피디아를 크롤링하고 정보를 모아 지문을 만들 것이다. 지문이 만들어진다면 이는 외적 → 내적 추론으로 변한다. 즉, 데이터 증강이 된다는 말이다. 지문의 질도 중요한데, 최대한 수능과 유사하도록 프롬프트를 신경써야 한다.
지문을 생성하니 생각보다 만족스럽지는 않았다. 위키피디아 텍스트만 집어넣으니 기존 문항과 동 떨어진 지문이 생성되었다. 기존 문항까지 추가하면 매우 길어져 토큰 제한과 속도 문제가 있다. 각 크롤링 텍스트에 문제 풀이에 필요한 텍스트만 추출하고 이를 조합해 새로운 지문을 생성하도록 2단계로 나누기로 했다.
실험 결과 눈으로 보기에는 좋아졌다. 조금 답답한게, 객관적인 메트릭을 내가 아는 한에서는 알지 못하니 팀원들과 공유하기가 애매하다. 프로젝트 마감까지 3일 정도 남아서 논문을 찾기에는 빠듯하다. 멘토님께 이런 궁금증을 여쭤봤는데, llm-as-judge 키워드를 알려주셨다. MT-Bench, Alapaca-Eval 논문 찾아보기.
프롬프트를 짜다보니 모델에게 제한 사항을 너무 많이 던져줬다. 내가 읽은 논문에서도, 제한 사항 문장이 길어지면 모델 성능이 역으로 떨어졌다는 언급이 있었다. 따라서 동작을 기준으로 2단계로 나눴다. 형식과 상관 없이 위키피디아 문서를 기반으로 생성한 글과 이를 수능 형식으로 다듬는 2가지 단계이다. 실험 결과를 분석하면서 지문 형식이 잘 맞는데, 내용이 문제와 자꾸 엇나간다는 사실을 발견했다. 키워드 추출 과정에서 문제만으로 키워드를 추출하라고 하니 피상적인 키워드가 나온다는 제언을 도출했다. 이에 따라서 문제 풀이 과정을 추가하고, 이를 기반으로 키워드를 다시 추출해야 한다는 결론에 도달했다... 이제까지 한 실험이 물거품이 된 기분이었다...