부록 F. Claude Opus 4.7 1M 컨텍스트 활용

Claude Opus 4.7의 1,000,000 토큰 컨텍스트(약 2,500 A4 페이지)는 RAG를 건너뛰어 전체 문서를 통째로 주입할 수 있게 해줍니다. 언제 쓰면 이득이고 언제 RAG가 낫지, 비용은 어떻게 관리할지를 정리했습니다.

F.1 1M 컨텍스트가 여는 새로운 패턴

  • 수백 페이지 RFP·계약서 전체 분석을 한 번에
  • 20만 줄 레거시 코드베이스 아키텍처 질문에 파일 전체 투입
  • 분기 전체 회의록·Slack 로그에서 의사결정 흐름 추적
  • RAG 인덱싱 비용·복잡도를 제거하고 바로 질답

F.2 1M 컨텍스트 vs RAG — 선택 기준

기준1M 컨텍스트 유리RAG 유리
문서 총량~1M 토큰 (~2,500페이지)수천만 토큰 이상
호출 빈도하루 수십 건 이하초당 수 건 이상
질문 다양성문서 전반을 가로지르는 분석국소적 검색
지연시간10~40초 허용1~3초 필요
문서 업데이트드문 변경잦은 변경
비용프롬프트 캐싱으로 최적화임베딩 + vector DB
하이브리드가 정답: 자주 바뀌는 부분은 RAG, 안 바뀌는 핵심 문서(계약서, 스타일 가이드)는 컨텍스트에 고정 + 프롬프트 캐싱.

F.3 비용 계산 — 프롬프트 캐싱이 열쇠

Opus 4.7 기준(2026-04):

  • 입력: $5 / 1M tokens
  • 출력: $25 / 1M tokens
  • 캐시 쓰기: $6.25 / 1M (+25%)
  • 캐시 읽기: $0.50 / 1M (−90%)

예: 500페이지(500k 토큰) 문서에 하루 50건 질문

캐싱 없음:   500k × $5 × 50 = $125/일 (문서 입력만)
캐싱 있음:   500k × $6.25 × 1 = $3.13 (첫 호출 캐시 쓰기)
            + 500k × $0.50 × 49 = $12.25 (이후 캐시 읽기)
            = 약 $15.4/일 (88% 절감)

캐시 TTL은 5분 기본, 1시간 옵션 존재. 호출 간격이 길면 주기적 keep-alive 호출로 캐시 유지.

F.4 1M 프롬프트 설계 체크리스트

  1. 불변 부분을 앞에

    시스템 규칙 → Few-shot → 대형 문서 → 사용자 질문 순서. 앞쪽일수록 캐시 효율 상승.

  2. 섹션 태그

    XML 태그(<contract>, <runbook>)로 구획해 모델이 섹션을 정확히 참조하게 함.

  3. 목차(TOC) 삽입

    본문 앞에 "이 문서는 다음 섹션을 포함: 1. 정의, 2. 책임..." 목록. 모델의 탐색 정확도가 오름.

  4. 인용 요구

    "각 주장 옆에 [섹션번호]를 붙여라" — hallucination 억제 + 사후 검증 용이.

  5. Needle-in-a-haystack 체크

    중간에 의도적으로 작은 플래그("※2026-04-17 업데이트")를 심어 두고, 매 호출 시 "이 플래그가 있으면 문구 X를 출력하라"로 장거리 주의 검증.

F.5 대규모 문서 분석 워크플로

1. 문서 전처리 (PDF → Markdown, 헤더 정규화, 페이지 번호 유지)
2. 메타 요약: 1M 전체에 "200단어 executive summary + 섹션 목록" 요청 → 캐시
3. 세부 분석: 같은 캐시 위에서 "섹션 3.2의 리스크 요인을 표로" 등 질문
4. 대조: 이전 버전 문서와 diff → "변경된 조항 10개를 법적 영향과 함께 정리"
5. 확증: 모든 결론에 근거 섹션 번호 부착, 사람이 최종 확인

F.6 한계와 함정

  • 장거리 recall은 완벽하지 않음: Needle test 정확도 95%+지만 5% 미스 존재 → 중요 사실은 상단/하단 위치에 중복 배치
  • 비용 폭주: 캐싱 미설정 시 대규모 문서 × 높은 호출 빈도는 순식간에 수천 달러
  • 지연시간: 1M 토큰 처리는 첫 응답 토큰까지 30~60초 가능. UX 설계에 "분석 중" 표시 필수
  • 데이터 주권: 1M 주입은 곧 많은 내부 정보 전송. DPA·국외 이전 동의 재확인(부록 B)

F.7 미니 실습 — 계약서 질의응답 봇

from anthropic import Anthropic
client = Anthropic()

CONTRACT = open("master_agreement.md").read()  # ~300k tokens

def ask(question: str):
    resp = client.messages.create(
        model="claude-opus-4-7",
        max_tokens=1024,
        system=[
            {"type": "text",
             "text": "너는 한국 기업 법무 어시스턴트다. 근거 없는 해석은 금지.",
             "cache_control": {"type": "ephemeral"}},
            {"type": "text",
             "text": f"<contract>\n{CONTRACT}\n</contract>",
             "cache_control": {"type": "ephemeral"}},
        ],
        messages=[{"role": "user", "content": question}],
    )
    return resp.content[0].text

print(ask("21조 손해배상 한도와 그 적용 예외를 요약해줘. 조항 번호를 근거로 붙여줘."))

같은 프로세스가 살아있는 동안 후속 질문은 캐시 읽기 가격만 지불합니다.

F.8 참고

← 메인으로 돌아가기 · 최근 업데이트: 2026.04.17