GPT‑3.5‑Turbo, 20k 토큰 프롬프트 중간에 답이 있을 경우 정확도 90%→50%
Source: Dev.to
GPT-3.5‑Turbo는 답변이 프롬프트의 시작이나 끝이 아니라 20 k 토큰 중간에 있을 때 정확도가 90 %에서 50 %로 떨어진다. Liu 등(2023)은 ACL에서 발표한 “Lost in the Middle: How Language Models Use Long Contexts”에서 이를 문서화했다. 컨텍스트 윈도우의 가장자리는 최고의 부동산이며, 중간은 묘지와 같다.
이는 검색 버그가 아니라 어텐션 패턴이다. 트랜스포머는 전체 시퀀스에 대해 소프트 어텐션을 사용하지만, 위치 인코딩과 학습 데이터 분포가 모델을 최근 토큰 및 눈에 띄는 프리픽스 쪽으로 편향시킨다. 긴 JSON 배열이나 청크된 문서를 프롬프트에 넣으면 신호가 희석된다. 모델은 인덱스 847에 숨겨진 행보다 프레이밍에 더 주의를 기울인다. 긴 시퀀스에서는 어텐션 가중치가 중앙으로 갈수록 감소하는데, 이는 학습 코퍼스가 20 k 토큰에 걸친 중간 구간 추론을 거의 요구하지 않기 때문이다.
rag_engine.py에 있는 RAG 파이프라인을 떠올려 보라. 여기서 10개의 검색된 청크를 하나의 프롬프트에 덤프한다. 코사인 유사도 순으로 정렬하고 연결한다. 청크 다섯 번째에 사용자의 질문에 정확히 답하는 조항이 들어 있지만, 네 번째와 여섯 번째 청크 사이에 끼어 있다. 생성이 실패한다. 해결책은 더 큰 컨텍스트 윈도우가 아니다. 해결책은 재랭킹이다.