분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
[private 8위] 문서 처리 중심의 RAG
공동작성자
특별한 트릭없이 Hybrid Search + 리랭커 + 양자화된 LLM 조합으로 RAG를 구현했고,
문서를 파싱하고 청킹하는데만 공을 들였습니다.
1. Parsing
PDF에서 직접 목차 메타데이터를 추출할수 있을 때는 이를 활용하고,
없을 때는 목차 콘텐츠를 활용하여 목차 메타데이터를 만들었습니다.
이렇게 생성한 목차 메타데이터를 기반으로 {title: content} 구조로 문서를 분리하였습니다.
2. Chunking
파싱으로 추출된 {title: content} 구조를 활용하여, 의미 단위로 맥락을 보존하는 데 중점을 두고 청킹을 수행했습니다.
- 청크 경계에서 맥락이 끊기는 것을 방지하기 위해 RecursiveCharacterTextSplitter (재귀적 텍스트 분할) 기법과 overlap (중첩) 설정을 적용했습니다.
- 각 청크(chunk)마다 파싱에서 추출한 title 정보를 다시 추가했습니다.
- 만약 '상위 제목'과 '하위 제목'이 계층 구조(tree)로 존재할 경우, '상위 title > 하위 title' 형식으로 표시하여 전체 문서 구조 내에서의 맥락을 보존했습니다.
3. Naive RAG 적용
Hybrid Search + 리랭커 + 양자화된 LLM 조합으로 RAG를 구현했습니다.
첫번째 본선에서는 private 스코어 8위였지만, 추가 private 데이터가 적용되는 두번째 본선에서는 6위 이내로 진입하여, 결선에 진출하기도 했습니다. (수상은 못했습니다)
RAG의 핵심은 '검색'과 '청킹'에 있다고 생각하고 거기에만 집중했는데, 생각보다 Private 데이터에서 좋은 스코어를 얻은 것 같습니다.
전처리/청킹에 집중한 것이 일반화/제로샷 성능에 좋았을 거라고 생각합니다.
제안한 {title: content} 기반으로 파싱/청킹하는 방식이, 임베딩 모델 학습 데이터로 바꾸기도 용이해서
가용 데이터가 많으면 많을수록 더 힘을 받는 구조라 개인적으로 생각보았습니다.
읽어주셔서 감사합니다.
DACON Co.,Ltd | CEO Kookjin Kim | 699-81-01021
Mail-order-sales Registration Number: 2021-서울영등포-1704
Business Providing Employment Information Number: J1204020250004
#901, Eunhaeng-ro 3, Yeongdeungpo-gu, Seoul 07237
E-mail dacon@dacon.io |
Tel. 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
전반적인 접근방식, 문제 접근방식은 저희랑 유사한 것 같습니다. 데이터랑 LLM모델 정도가 차이가 있네요.
고생하셨습니다!