TL;DR
Amazon Bedrock 기반 RAG는 검색 누락을 줄이기 위해 여러 문서 조각을 주 모델에 전달하지만, 긴 입력 문맥이 호출 비용과 지연을 키울 수 있습니다. 이 글의 query-aware compression은 AWS Lambda에서 Claude Haiku가 질문과 검색 조각을 함께 읽고 답변에 필요한 원문 구간만 추출한 뒤, Claude Sonnet이 압축된 근거로 답변을 생성하는 구조입니다. 500,000개가 넘는 문서와 500개 질문을 사용한 평가에서 compression은 비용을 33%, 주 모델 입력 토큰을 8.6배 줄였고, rerank + compression은 각각 36%와 10.1배를 기록했습니다. 대신 지연 시간은 19%와 12% 늘었으며, 품질 종합 점수는 기준의 97.5%와 97.6%로 나타났습니다. 평균 검색 문맥이 대략 5,000토큰을 넘고 질문이 검색 결과보다 좁은 업무에서 효과를 검증할 가치가 있지만, 실제 배포 전에는 자체 문서와 질의 분포로 품질·지연·비용을 함께 측정해야 합니다.
섹션별 상세

COMPRESSION_SYSTEM_PROMPT = """You extract evidence from retrieved documents. You will receive a user QUESTION and a list of CHUNKS. Your job: 1. For each chunk, identify the spans (verbatim sentences or short paragraphs) that contain evidence directly relevant to answering the QUESTION. 2. Output ONLY those spans, copied verbatim from the source. Do not paraphrase, summarize, or rewrite. 3. Preserve chunk identifiers so the downstream system can cite sources. 4. If a chunk contains no relevant evidence, output the chunk identifier followed by NO_RELEVANT_EVIDENCE. Output format (strict): [CHUNK_ID: ] [CHUNK_ID: ] NO_RELEVANT_EVIDENCE Do not add commentary, headings, conclusions, or your own words. Only verbatim spans from the source chunks, grouped by chunk identifier."""검색 문서에서 질문에 직접 답하는 원문 구간만 추출하도록 작은 모델에 지시하는 압축 프롬프트입니다.
compressed = bedrock.converse(
modelId=COMPRESSION_MODEL_ID,
system=[{"text": COMPRESSION_SYSTEM_PROMPT}],
messages=[{"role": "user", "content": [{"text": f"QUESTION:
{query}
CHUNKS:
{chunks}"}]}],
inferenceConfig={"temperature": 0.0},
)AWS Lambda가 Amazon Bedrock Converse API로 Claude Haiku를 호출해 검색된 문맥을 압축합니다.
answer = bedrock.converse(
modelId=ANSWER_MODEL_ID,
system=[{"text": "Answer using only the evidence provided. Cite sources."}],
messages=[{"role": "user", "content": [{"text": f"QUESTION:
{query}
EVIDENCE:
{compressed}"}]}],
)압축된 근거와 질문을 Claude Sonnet에 전달해 최종 답변을 생성합니다.




용어 해설
- 검색 증강 생성(RAG)
- — RAG는 사용자의 질문과 관련된 외부 문서를 검색한 뒤 그 내용을 언어 모델의 입력 문맥에 넣어 답변을 생성하는 방식입니다. 검색 결과를 넓게 가져오면 누락을 줄일 수 있지만, 긴 문맥이 모델 호출 비용과 지연을 키울 수 있습니다.
- 질의 인식 문맥 압축(Query-aware Compression)
- — 질의 인식 문맥 압축은 검색된 문서 전체를 그대로 주 모델에 전달하지 않고, 작은 모델이 질문과 각 문서를 함께 읽어 답변에 필요한 원문 구간만 추출하는 방식입니다. 문맥을 요약하거나 바꾸지 않고 출처 식별자와 원문 표현을 유지해 입력 토큰과 비용을 줄입니다.
- Rerank API
- — Rerank API는 검색된 여러 문서 조각을 질문과의 관련성에 따라 다시 정렬하는 기능입니다. 이 글에서는 압축 전에 관련성이 높은 조각을 우선 배치하는 단계로 사용해, 압축만 적용한 경우보다 주 모델에 전달되는 토큰과 비용을 추가로 줄입니다.
- 프롬프트 캐싱(Prompt Caching)
- — Prompt Caching은 반복적으로 사용되는 프롬프트 앞부분을 캐시해 매 요청마다 같은 입력을 다시 처리하는 비용을 줄이는 기능입니다. 이 글에서는 질의 인식 압축과 결합할 수 있는 Amazon Bedrock의 추가 비용 최적화 수단으로 제시됩니다.
- 환각률(Hallucination Rate)
- — 환각률은 답변에 기준 근거로 뒷받침되지 않는 주장이 하나 이상 포함된 비율입니다. 이 평가에서는 검색 결과에서 관련 없는 문맥을 제거했을 때 주 모델이 불필요한 정보에 노출되는 범위가 줄어드는지를 측정하는 지표로 사용했습니다.
기술
- Amazon Bedrock
- Amazon Bedrock Knowledge Bases
- AWS Lambda
- Amazon Bedrock Converse API
- Anthropic Claude Haiku
- Anthropic Claude Sonnet
- Amazon Bedrock Intelligent Prompt Routing
- Rerank API
- Amazon Bedrock Guardrails
- IAM
- Amazon OpenSearch Serverless
활용 사례
- 규제 산업의 컴플라이언스 및 정책 보조
- 대규모 제품 지식 기반의 고객지원 Copilot
- Confluence, SharePoint, runbook을 이용하는 내부 엔지니어링 및 운영 보조
- 10-K 문서와 earnings-call transcript를 이용하는 재무 리서치
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.