Quando o RAG erra, quase nunca é o LLM: 4 falhas de recuperação e como logar cada uma

개요

RAG(Retrieval-Augmented Generation) 시스템에서 발생하는 문제의 대부분은 LLM 자체의 문제가 아니라 검색(retrieval) 단계의 네 가지 주요 실패 유형 중 하나에서 비롯되며, 각 실패 유형에 대한 로깅을 통해 해결할 수 있다.

주요 내용

* 낮은 점수(Score baixo)와 파이프라인 응답: 질문이 데이터베이스에 존재하지 않음에도 불구하고 LLM이 응답을 생성하는 경우로, 최소 점수 임계값(예: 0.7)을 설정하여 이를 방지할 수 있다.
* 인접 청크(Chunk vizinho) 오류: 벡터 검색 시 의미상 유사하지만 실제로는 관련 없는 정보(예: 비밀번호 재설정과 제품 재설정)를 가져오는 경우로, BM25와 같은 하이브리드 검색 또는 cross-encoder 기반 reranker 사용으로 해결할 수 있다.
* 정확한 컨텍스트에서의 환각(Alucinação com o contexto certo na mão): 검색은 올바르게 이루어졌으나 LLM이 제공된 컨텍스트를 넘어서는 정보를 생성하는 경우로, 프롬프트에 명확한 지침(예: 제공된 컨텍스트만 사용, 출처 인용, 모르는 정보는 모른다고 답하기)을 포함하여 해결해야 한다.
* 잘린 청크(Chunk cortado no meio) 문제: 토큰 수 기반 청킹 방식이 테이블이나 코드 블록 같은 구조화된 데이터를 중간에 잘라내는 문제를 야기하는 경우로, 문서 구조(Markdown 헤더, PDF 섹션 등)를 존중하는 청킹 방식이 필요하다.

시사점

RAG 시스템 개발 시, 초기 단계부터 각 청크의 점수, 포함된 청크, 크기 등을 로깅하는 시스템을 구축하는 것이 중요하며, 이는 문제 해결의 효율성을 높이고 값비싸고 시간이 오래 걸리는 임베딩 모델 변경의 필요성을 줄여준다.

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

댓글

GitHub Discussions