"LLM 프롬프트에 분석할 수십 쪽짜리 롱 컨텍스트 문서를 통째로 넣었더니, 문서의 앞부분과 뒷부분 내용만 기억하고 정작 가운데 위치한 중요한 핵심 조건이나 데이터를 완전히 무시하고 오답을 내놓는 'Lost in the Middle(중간 맥락 손실) 현상' 때문에 시스템 추론 품질이 급락했던 장애를 경험했습니다."
AI 에이전트에게 수만 토큰에 달하는 긴 문서나 과거 대화 이력을 전달할 때, 개발자와 엔지니어들이 가장 쉽게 빠지는 착각이 하나 있습니다. 바로 'LLM의 컨텍스트 창(Context Window) 길이가 길어졌으니, 긴 문서를 통째로 집어넣어도 전부 똑같이 잘 읽을 것'이라는 믿음입니다.
하지만 최신 고성능 언어 모델이라 할지라도 인공지능 트랜스포머 아키텍처 특유의 '주의력(Attention) 편향' 메커니즘을 피할 수는 없습니다. 프롬프트의 맨 처음(Beginning)과 맨 끝(End)에 위치한 정보는 아주 기가 막히게 기억하지만, 정작 문서의 가운데(Middle)에 배치된 핵심 데이터나 조항은 제대로 참조하지 못하고 엉뚱한 답변을 내놓는 'Lost in the Middle' 현상이 발생하지요. 오늘은 제가 직접 경험했던 '수십 쪽짜리 긴 약관 문서를 넣었더니 중간 예외 조항을 모조리 빼먹고 헛소리를 하던 AI 에이전트 잔혹사'와 이를 완벽하게 해결해 낸 '계층적 세그먼트 인덱싱 & 양끝 중요 데이터 배치(Attention Priming) 파이프라인' 구축기를 이야기해 볼게요.
1. "분명히 문서 안에 있는 내용인데 왜 모른다고 하지?" - 중간 맥락 손실의 비극
긴 계약서와 규정집을 자동으로 분석해 독자의 질의응답에 답해주는 지식 분석 에이전트를 구축했을 때였습니다. 모델의 입력 한도 길이가 충분히 넉넉했기에, 50쪽짜리 PDF 전문을 텍스트로 풀어 프롬프트 중앙에 그대로 밀어 넣고 질의를 시작했지요.
하지만 테스트 결과는 충격적이었습니다. 문서 3쪽에 있는 총칙과 48쪽에 있는 부칙 내용은 정확하게 인용해 답변하면서도, 정작 결정적인 예외 사항과 지급 조건이 적힌 25쪽 중간 내용에 대해 물어보면 "해당 문서에서는 관련 내용을 찾을 수 없습니다"라며 대놓고 환각(Hallucination)을 내뿜는 것이었습니다.
긴 문서를 무지성으로 프롬프트에 다 때려 넣는 방식은 LLM의 주의력 스포트라이트가 미치지 못해 핵심 데이터가 어둠 속에 묻혀버리는 허술한 아키텍처라는 사실을 뼈저리게 깨달은 순간이었습니다.
2. 시행착오: 프롬프트에 "중간 부분도 똑똑히 잘 읽어!"라고 강조했더니...
처음에는 모델의 주의력을 깨우겠다고 프롬프트 하단에 "문서의 중간 단락에 중요한 내용이 있으니 놓치지 말고 정독해라", "20쪽부터 30쪽 사이를 주의 깊게 보아라" 같은 지침 문구를 크게 써넣어 보았습니다.
결과는 거의 차이가 없었습니다. 언어 모델의 주의력 분포(Attention Distribution)는 자연어 강조 문구 몇 줄로 쉽게 바뀌지 않는 내적 계산 매커니즘 구조를 가지고 있기 때문입니다. 오히려 지시문이 길어지면서 전체적인 답변 형식이 흐트러지거나, 다른 정상적인 질문에 대한 추론 정확도까지 함께 떨어지는 악순환만 반복되었던 것이죠.
💡 몬이쌤의 생각: 아이들에게 두꺼운 전공 서적 한 권을 통째로 던져주고 "중간에 200페이지도 건성으로 읽지 말고 잘 봐!"라고 말하는 것은 아무 소용이 없습니다. 책을 핵심 단원별로 얇게 분권(Chunking)해 두고, 가장 중요한 요약 노트와 문제 풀이 힌트를 시험지 맨 앞장과 맨 뒷장(Attention Edge)에 딱 붙여서 보여주는 것이 가장 확실하고 명쾌한 공부법입니다.
3. 해결책: '계층적 세그먼트 인덱싱 & 양끝 정렬' 3단계 컨텍스트 재배치 프로토콜
LLM이 긴 문서의 어떤 위치에 있는 정보든 100%의 주의력 스포트라이트를 비추어 완벽하게 이해하도록 만들기 위해, 저는 '3단계 계층적 세그먼트 인덱싱 & Context Priming 파이프라인'을 구축했습니다.
- 1단계 [계층적 의미 단위 분할(Hierarchical Chunking)]: 50쪽짜리 거대한 통문서를 무작정 집어넣지 않고, 의미 단위(장·절·항) 및 벡터 유사도 기반으로 500~1,000토큰 크기의 세부 세그먼트(Segment)들로 정교하게 조각내어 인덱싱했습니다.
- 2단계 [질의 관련성 기반 상위 팩트 재검색(RAG Hybrid Reranking)]: 사용자의 질문이 유입되면 전체 문서를 다 보여주는 대신, 하이브리드 검색(BM25 + Vector)과 리랭커(Reranker)를 거쳐 질문과 가장 연관성이 높은 핵심 세그먼트 3~5개만을 정밀 타격하여 추출합니다.
- 3단계 [양끝 배치 프라이밍 구조화(Priming Context Placement)]: 추출된 핵심 지식 중 가장 결정적이고 유의미한 팩트를 프롬프트의 맨 시작(Prefix)과 맨 끝(Suffix)에 전략적으로 배치합니다. LLM의 주의력이 가장 집중되는 '양끝 지점'에 핵심 데이터를 밀어 넣어 추론 정확도를 극대화합니다.
4. 결과: 중간 맥락 손실 0건 & 긴 문서 정답률 98% 달성!
3단계 계층적 세그먼트 인덱싱 및 양끝 컨텍스트 재배치 파이프라인을 도입한 이후, 수백 쪽에 달하는 복잡한 지식 문서나 긴 대화 기록이 들어와도 에이전트가 단 하나의 핵심 데이터도 놓치지 않고 완벽한 정답을 찾아냈습니다!
골칫거리였던 'Lost in the Middle' 현상에 따른 환각과 정보 누락이 0건으로 사라졌을 뿐만 아니라, 불필요한 전체 문서를 프롬프트에 넣지 않게 되면서 API 토큰 비용도 70% 이상 절감하는 일석이조의 성과를 올렸지요.
고도화된 AI 에이전트를 설계한다는 것은 단지 커다란 컨텍스트 창을 가진 모델을 쓰는 것에 그치지 않습니다. '언어 모델의 주의력 메커니즘 특성을 정확히 이해하고, 긴 문서라도 핵심 지식을 조각내어 모델이 가장 잘 집중할 수 있는 양끝 위치에 정교하게 재배치해 주는 거버넌스를 세우는 것'이 지능 설계의 참된 노하우입니다.
여러분의 AI 에이전트도 긴 문서만 넣으면 중간 내용을 까먹고 바보 같은 소리를 해서 고민이신가요? 문서를 통째로 넣으려 하지 말고, 계층적 세그먼트 분할과 양끝 재배치 파이프라인을 도입해 보세요. 아무리 길고 복잡한 자료도 칼같이 분석해 내는 명품 에이전트를 소유하게 되실 겁니다.
