Intelligence Architect's Log

프롬프트에 '중간도 잘 읽어'라고 써봤자 소용없는 이유! LLM 주의력(Attention)의 비밀

스카이블루 테일러드 블레이저를 입은 몬이쌤이 LLM의 컨텍스트 중간 손실(Lost in the Middle) 현상을 해결하기 위해 계층적 세그먼트 색인과 U자형 양끝 가중치 재배치 구조를 적용하는 아키텍처를 설명하는 카드뉴스 썸네일 이미지

"긴 문서를 AI 에이전트에 입력했더니 문서의 중간에 위치한 핵심 정보나 조건 지침을 완전히 무시하고 건너뛰는 '컨텍스트 중간 손실(Lost in the Middle) 현상' 때문에 중요한 데이터 추출 업무에 차질을 겪었습니다."

AI 에이전트에게 수십 쪽에 달하는 규정집, 회의록, 혹은 대용량 PDF 문서를 인풋으로 넣어주고 특정 정보를 추출하거나 요약을 시킬 때 개발자를 가장 당혹스럽게 만드는 현상이 있습니다. 바로 '컨텍스트 중간 손실(Lost in the Middle) 현상'입니다.

대형 언어 모델(LLM)은 구조적으로 입력받은 프롬프트의 맨 앞(Beginning)과 맨 뒤(End)에 위치한 정보는 아주 잘 기억하고 반영하지만, 정작 '문서의 중앙 부근에 묻혀 있는 핵심 정보'는 제대로 찾아내지 못하고 그냥 지나쳐 버리는 경향이 강합니다. 문맥 길이가 128K, 1M 토큰으로 늘어났다고 해도 이 법칙은 변하지 않지요. 오늘은 제가 직접 경험했던 '중간 페이지 핵심 조건 하나를 빼먹어 보고서가 엉망이 되었던 대참사'와 이를 완벽하게 해결해 낸 '계층적 세그먼트 색인(Hierarchical Segment Indexing) & 양끝 중요도 재배치 파이프라인' 구축기를 이야기해 볼게요.

1. "가장 중요한 예외 조항이 어디로 갔지?" - 중간 손실의 비극

50쪽 분량의 사업 운영 규정집과 계약서 통통을 RAG 및 메인 에이전트에 통째로 밀어 넣고, "이번 프로젝트에서 발생할 수 있는 법적 리스크와 예외 조항을 모조리 정리해 줘"라고 명령했을 때였습니다. 컨텍스트 창이 충분히 넓으니 에이전트가 당연히 깔끔하게 찾아낼 것이라 기대했지요.

하지만 출력된 결과물을 확인해 보고 아연실색했습니다. 문서 1쪽의 서론 부분과 50쪽의 결론 부록에 적힌 일반적인 내용만 장황하게 서술되어 있었을 뿐, 정작 문서 23쪽에 숨겨져 있던 '핵심 배상 책임 면책 예외 조항'은 흔적도 없이 누락되어 있었습니다. 모델의 컨텍스트 용량이 아무리 커도 '중간에 위치한 텍스트에 대한 집중도(Attention Weight)가 급격히 떨어지는 한계'가 그대로 드러난 것이었습니다.

단순히 넓은 컨텍스트 창만 믿고 긴 문서를 통째로 들이붓는 방식으로는 결코 정교하고 신뢰할 수 있는 에이전트 시스템을 구축할 수 없다는 사실을 뼈저리게 깨달은 순간이었습니다.

2. 시행착오: 프롬프트에 "중간도 잘 읽어!"라고 강조해 보았더니...

문제 해결을 위해 프롬프트 상단에 "경고: 문서의 중간 부분에 중요한 내용이 많으니 꼼꼼히 읽어라"라는 지시문을 덧붙여 보았습니다.

결과는 여전히 미흡했습니다. 모델은 여전히 입력의 양끝 단 텍스트에 가중치를 집중시켰고, 텍스트가 길어질수록 중간 챕터의 사실(Fact) 추출 정확도는 50% 밑으로 곤두박질쳤습니다. 지시어 몇 줄로는 트랜스포머 아키텍처 자체의 물리적인 주의력 분배 구조를 바꾸지 못했던 것이지요.

💡 몬이쌤의 생각: 학원에서 아이들에게 100쪽짜리 두꺼운 교재를 한꺼번에 읽고 중간에 있는 공식 하나를 찾아내라고 하면 대부분 중간 내용을 건너뛰어 버립니다. 대신 목차를 만든 뒤 10쪽 단위로 단원을 쪼개어(Chunking) 각 단원의 핵심 요약 카드를 만들어 주면, 아무리 긴 책이라도 단 한 줄의 중요한 개념도 놓치지 않고 완벽하게 찾아냅니다.

3. 해결책: '계층적 분할 색인 & 프롬프트 양끝 배치' 3단계 컨텍스트 최적화 프로토콜

아무리 긴 문서가 들어와도 중간에 묻힌 핵심 정보를 100% 정밀하게 끌어올리기 위해, 저는 '3단계 계층적 세그먼트 색인 & 프롬프트 재구성 파이프라인'을 구축했습니다.

  1. 1단계 [계층적 세그먼트 분할(Hierarchical Segment Chunking)]: 통문서를 통째로 넣는 대신, 의미 단위(Section/Header) 기준으로 2,000토큰 내외의 소단락으로 정교하게 청킹(Chunking)한 뒤 각 청크의 요약 헤더(Metadata)를 생성합니다.
  2. 2단계 [2차 하이브리드 리랭킹(Hybrid Re-ranking Filter)]: 질문이 들어오면 1차 벡터 검색으로 관련 청크들을 추출한 후, Cross-Encoder 리랭커를 가동해 질문과 관련성이 가장 높은 Top-N 청크만을 엄선하여 샌드위치 구조로 정렬합니다.
  3. 3단계 [양끝 가중치 재배치(U-Shape Context Placement)]: 가장 핵심이 되는 추출 정보와 지침을 프롬프트의 맨 앞(System Prompt 직후)과 맨 뒤(User Task 질문 바로 위)에 U자 형태로 재배치합니다. 중간에는 최소한의 참고 문맥만 배치하여 Attention 손실을 구조적으로 방지합니다.

4. 결과: 정보 누락률 0% 달성 & 핵심 정보 추출 정확도 99% 확보!

3단계 계층적 세그먼트 색인 및 프롬프트 양끝 배치 프로토콜을 도입한 이후, 100쪽이 넘는 대용량 문서에서도 중간 페이지에 숨겨진 세부 조항이나 예외 조건을 빼먹는 사고가 100% 완벽하게 사라졌습니다!

불필요한 전체 문서를 억지로 밀어 넣지 않고 핵심 청크만 조리 있게 재배치함으로써 토큰 사용량을 70% 이상 절감했을 뿐만 아니라, 답변의 정밀도와 추론 속도까지 한 단계 격상시키는 성과를 거두었지요.

고성능 AI 에이전트를 구축한다는 것은 단지 '컨텍스트 용량이 큰 최신 모델'을 쓰는 것에 머물지 않습니다. '모델이 지식을 가장 잘 흡수할 수 있도록 문서를 계층적으로 쪼개고, 핵심 정보를 프롬프트의 양끝 주의력 영역에 전략적으로 재배치하는 컨텍스트 아키텍처를 세우는 것'이 진정한 지능 설계의 핵심입니다.

여러분의 AI 에이전트도 긴 문서만 넣으면 중간 내용을 까먹거나 딴소리를 하여 답답하신가요? 무작정 모델만 탓하지 말고, 계층적 세그먼트 색인과 양끝 가중치 재배치 파이프라인을 도입해 보세요. 대용량 문서 속 단 한 줄의 핵심 정보도 놓치지 않는 명품 에이전트를 소유하게 되실 겁니다.

같이 보면 좋은 글

NEXT REPORT 다음 리포트 읽기 PREV REPORT 이전 리포트 읽기