5 Failure Modes I Found in My Financial RAG (And the One That Actually Mattered)

개요

재무 문서 질의응답을 위한 RAG 시스템은 초기 53% 정확도에서 벗어나지 못했으며, 데이터 자체의 누락 및 손상 문제를 해결하는 것이 가장 큰 성능 향상을 가져왔다.

주요 내용

* 데이터 누락 및 손상: RAG 시스템의 핵심 문제는 알고리즘 개선이 아닌, 84개의 문서 중 5개가 누락되고 2개가 손상되어 PDF 추출 과정에서 데이터 일부가 사라진 것이었다. 이 문제를 해결하자 Recall@6이 83%에서 94%로 크게 향상되었다.
* 동일 회사 내 문서 혼동: 누락된 문서를 복구한 후, 동일 회사 내에서도 연도나 문서 유형이 다른 경우 검색기가 잘못된 문서를 가져오는 문제가 발생했다. 이를 해결하기 위해 회사 이름뿐만 아니라 연도와 문서 유형까지 포함하는 메타데이터 필터링을 적용했으나, 완벽히 해결되지는 않았다.
* 수치 추출 오류: LLM이 올바른 문서를 검색하고 올바른 섹션을 찾았음에도 불구하고, 수치 데이터 추출에서 오류가 발생하는 경우가 있었다. 이는 일반적인 LLM 기반 평가로는 탐지하기 어려운 문제였다.
* 하이브리드 검색의 노이즈: BM25와 Dense Retrieval을 결합한 하이브리드 검색은 특정 용어 검색에 이점을 줄 것으로 기대했으나, 실제로는 관련 없는 청크를 가져와 오히려 Precision과 MRR을 하락시켰다.
* LLM 평가자의 인플레이션: LLM 기반 평가자(Judge)는 추론의 질과 방법론을 평가하면서 수치적 정확성을 간과하여 실제보다 높은 정확도를 보고하는 경향이 있었다. 이를 해결하기 위해 수치 비교 규칙을 강화한 평가자를 사용했으나, 이는 정상적인 답변까지 거부하는 과교정으로 이어졌다.
* 가장 큰 성능 향상: 알고리즘적 개선에 많은 시간을 투자했음에도 불구하고, 5개의 누락된 문서 ingestion 및 2개의 손상된 문서 복구라는 단순한 데이터 품질 개선 작업이 30분 안에 완료되었으며, 코드를 전혀 수정하지 않고도 가장 큰 성능 향상(Recall@6 0.83 -> 0.94)을 가져왔다.
* 병목 현상 이동: 데이터 품질 문제를 해결한 후, RAG 시스템의 병목 현상이 검색(retrieval)에서 생성(generation)으로 이동했다. 이제 시스템은 올바른 문서를 가져오지만, 해당 문서에서 정확한 수치를 추출하고 추론하는 데 어려움을 겪고 있다.
* 고려되었으나 적용되지 않은 방법: Semantic chunking, Reranker, Query rewriting/HyDE, Contextual retrieval 등은 잠재적인 개선 방법으로 고려되었으나, 데이터 품질 문제 해결의 시급성, 지연 시간 및 비용 증가, 또는 복잡성으로 인해 우선순위에서 밀려났다.

시사점

데이터 품질의 중요성은 아무리 강조해도 지나치지 않으며, 알고리즘적 개선보다 앞서 해결해야 할 근본적인 문제임을 알 수 있다. 또한, LLM 기반 평가의 한계를 인지하고 인간의 검증을 통해 보정하는 것이 정확한 성능 측정과 시스템 개선 방향 설정을 위해 필수적이다. 시스템의 병목 현상이 어디에 있는지 정확히 파악하고, 해당 부분을 집중적으로 개선하는 것이 효율적이다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions