Amazon Bedrock RAG - Chunking와 Retrieval
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번 블로그에서는 Amazon Bedrock RAG 성능을 개선하기 위해서 Chunking와 Retrieval에 대해 알아봤습니다.
이전에 Amazon Bedrock RAG에 대해서는 아래 블로그를 참고해 주세요.
Chunking?
Chunking은 긴 문서를 여러 개의 작은 단위(Chunk)로 나누는 과정을 의미합니다.
예를 들어 하나의 문서에 여러 정책이 포함되어 있다면, 이를 적절한 크기로 나누어야 AI가 필요한 정보만 정확하게 찾을 수 있습니다.
만약 문서를 나누지 않거나 너무 작게 나누게 되면 다음과 같은 문제가 발생합니다.
- 너무 크게 나눌 경우 → 불필요한 정보까지 함께 검색됨
- 너무 작게 나눌 경우 → 문맥이 끊겨 정확한 답변이 어려움
즉, Chunking은 AI가 이해하기 좋은 단위로 문서를 정리하는 과정 이라고 볼 수 있습니다.
Retrieval?
Retrieval은 사용자의 질문과 관련된 문서 조각(Chunk)을 찾아오는 과정입니다.
RAG 시스템에서는 사용자의 질문이 들어오면, 먼저 벡터 검색을 통해 가장 유사한 문서들을 찾고, 그 결과를 기반으로 AI가 답변을 생성합니다.
이때 Retrieval 설정에 따라 결과가 크게 달라질 수 있습니다.
- Top-K가 너무 작으면 → 필요한 정보를 놓칠 수 있음
- Top-K가 너무 크면 → 불필요한 정보가 섞여 답변 품질이 떨어질 수 있음
즉, Retrieval은 어떤 정보를 가져올지 결정하는 과정 입니다.
상세한 내용은 AWS 공식 문서에서 확인할 수 있습니다.
테스트를 위한 데이터 셋
먼저 테스트를 위한 데이터 셋을 S3 버킷에 업로드해서 사용합니다.
사용한 데이터 셋 내용은 다음과 같습니다.
# ABC Tech 사내 운영 매뉴얼 (확장 버전)
[환불 정책 - 일반 고객]
구매 후 7일 이내: 100% 환불 가능
7일 이후: 환불 불가
단, 서비스 장애 발생 시 예외적으로 환불 가능
---
[환불 정책 - 기업 고객]
기업 고객은 별도의 계약 조건에 따라 환불 정책이 적용됩니다.
기본적으로 환불은 불가능하며, 계약서에 명시된 경우에만 가능합니다.
---
[환불 정책 - 이벤트 상품]
이벤트 및 할인 상품은 환불이 불가능합니다.
단순 변심에 의한 환불은 허용되지 않습니다.
---
[환불 정책 - 구독 서비스]
구독형 서비스는 결제 후 3일 이내에만 환불이 가능합니다.
이후에는 환불이 불가능합니다.
---
[환불 정책 - 결제 오류]
결제 시스템 오류로 인한 중복 결제는 즉시 환불 처리됩니다.
---
[환불 정책 - 포인트 결제]
포인트로 결제한 경우 환불 시 포인트로만 반환됩니다.
현금 환불은 불가능합니다.
---
[휴가 정책]
연차 휴가: 연 15일
병가: 연 최대 10일
---
[재택근무 정책]
주 2회까지 가능
사전 승인 필요
상기 데이터 셋을 바탕으로 환불 정책에 대해 질문을 던져보면 정확하게 정리해서 답변을 해주는 것을 확인할 수 있습니다.
Q : 환불 정책 뭐야?
A : ABC Tech의 환불 정책은 고객 유형에 따라 다릅니다.
일반 고객: 구매 후 7일 이내에는 100% 환불이 가능하며, 7일 이후에는 환불이 불가능합니다. 다만 서비스 장애 발생 시에는 예외적으로 환불이 가능합니다.
기업 고객: 별도의 계약 조건에 따라 환불 정책이 적용되며, 기본적으로 환불은 불가능하고 계약서에 명시된 경우에만 가능합니다.
이벤트 상품: 이벤트 및 할인 상품은 환불이 불가능합니다.
구독 서비스: 결제 후 3일 이내에만 환불이 가능하며, 이후에는 환불이 불가능합니다.
결제 오류: 결제 시스템 오류로 인한 중복 결제는 즉시 환불 처리됩니다.
포인트 결제: 포인트로 결제한 경우 환불 시 포인트로만 반환되며, 현금 환불은 불가능합니다.
단순 변심에 의한 환불은 허용되지 않습니다.
불안정한 데이터 셋
반면 불안정한 데이터 셋은 어떨까요?
먼저 불안정한 Chunk에 대해 정의하면 다음과 같습니다.
- 문서를 의미 단위로 잘 나누지 않은 상태
- 한 Chunk 안에 여러 주제, 정책, 규칙이 섞여 있는 경우
문제점은 다음과 같습니다.
- 질문과 관련 없는 정보가 포함될 수 있음 → LLM 혼동
- 일부 정보 누락, 불완전한 답변 발생
- Chunk 크기가 너무 크면 검색 효율 저하
예를 들면, 한 Chunk 안에 여러 정책이 섞여 있어 “환불 정책 뭐야?”라는 질문에 AI가 모든 조건을 정확히 나열하기 어렵습니다.
[환불 정책]
- 일반 고객: 7일 이내 환불 가능
- 기업 고객: 계약 조건 따라 환불
- 이벤트 상품: 환불 불가
- 구독 서비스: 3일 이내 환불 가능
불안정한 Retrieval에 대해 정의 하면 다음과 같습니다.
- Retrieval 단계에서 AI가 검색하는 Chunk 선택이 안정적이지 않은 상태
- Top-K를 너무 낮게 설정하거나, 질문이 모호한 경우
문제점은 다음과 같습니다.
- 질문과 관련된 Chunk를 누락 → 일부 정보만 답변
- Top-K가 1이면 한 Chunk만 가져오기 때문에 여러 정책 유형을 동시에 다룰 수 없음
검색 결과가 불확실하면 답변이 혼합되거나 불완전하게 답변을 줍니다.
예를 들면
- Top-K = 1, 질문: “환불 정책 뭐야?”
- 가져온 Chunk: “[환불 정책 - 일반 고객] …”
- 결과: 기업 고객, 이벤트 상품 정책 누락 → 불완전한 답변
Q: 환불 정책 뭐야?
[정상 Chunk, Top-K=3]
A: ABC Tech 환불 정책은 고객 유형에 따라 다릅니다.
- 일반 고객: 7일 이내 100% 환불 가능, 이후 불가
- 기업 고객: 계약 조건에 따라 환불
- 이벤트 상품: 환불 불가
- 구독 서비스: 3일 이내만 환불 가능
- 중복 결제: 즉시 환불
- 포인트 결제: 포인트만 반환
[깨진 Chunk, Top-K=1]
A: 일반 고객은 7일 이내 환불 가능, 이후 불가
정상적인 Chunk와 깨진 Chunk의 답변을 비교하면 다음과 같습니다.
| 구분 | Chunk 구조 | Top-K | 결과 |
|---|---|---|---|
| 정상 | 정책별로 의미 단위로 나눔 | 충분히 높음 | 질문에 대해 모든 유형 정확히 답변 |
| 깨진 | 여러 정책 한 Chunk에 섞임 | 낮음 또는 1 | 일부 정보 누락, 답변 혼합, 불완전 |
AI가 텍스트를 생성하는 방식: 토큰, Top-K, Top-P
앞서 Chunking과 Retrieval로 AI가 필요한 정보를 가져오는 과정을 설명했습니다.
그런데 AI 모델은 단순히 정보를 검색하는 것뿐만 아니라, 실제 답변을 생성할 때도 여러 선택을 고민합니다.
여기서 중요한 개념이 토큰(Token), Top-K, Top-P입니다.
토큰(Token)?
- 모델이 텍스트를 처리하는 최소 단위
- 영어 기준으로 단어, 공백, 구두점 등이 포함될 수 있음
- 예시:
"I hear the hoof beats"→["I", " hear", " the", " hoof", " beats"] - 한 단어가 여러 토큰으로 나뉠 수도 있음 (
"unicorns"→["un", "icorn", "s"])
Top-K와 Top-P
AI 모델은 다음 토큰 후보들을 확률로 평가한 후, 실제로 어떤 토큰을 선택할지 결정합니다.
후보 확률 예시
여기서 "horses", "zebras", "unicorns"가 후보 토큰입니다.
{
"horses": 0.7,
"zebras": 0.2,
"unicorns": 0.1
}
- Top-K
- 상위 K개의 후보 토큰만 고려하고 나머지는 버림
- Top-K=2 → 후보 토큰은 horses, zebras만 사용, unicorns는 제외
- 후보 토큰이 4이기 때문에 Top-K=2
- Top-K=2 → 후보 토큰은 horses, zebras만 사용, unicorns는 제외
- 상위 K개의 후보 토큰만 고려하고 나머지는 버림
- Top-P
- 누적 확률이 P 이상이 되도록 후보 토큰 선택
- 예: Top-P=0.9 → horses + zebras 포함, unicorns 제외 (누적 확률 0.7+0.2=0.9)
- 누적 확률이 P 이상이 되도록 후보 토큰 선택
Temperature와의 연계
- Temperature는 확률 분포의 평탄도를 조정
- 높으면 낮은 확률 토큰도 선택 가능 → 다양성 증가
- 낮으면 높은 확률 토큰 위주 선택 → 안전한 답변
Chunking/Top-K/Top-P 연결
- Chunking & Retrieval: AI가 필요한 정보를 가져오는 단계
- Top-K/Top-P & 토큰: AI가 가져온 정보로 답변을 생성할 때 어떤 단어를 선택할지 결정
즉, RAG 시스템에서는 좋은 Chunk 설계가 중요하며, 생성 단계에서는 Top-K/Top-P 설정과 토큰 선택이 답변 품질과 다양성을 좌우합니다.
※ Amazon Bedrock에서 제공되는 모델마다 지원하는 하이퍼파라미터가 다릅니다. 특히 Claude 3/4 시리즈 등 최신 모델들은 Top-K 대신 Top-P와 Temperature를 통한 샘플링 제어를 우선적으로 권장하며, API 상에서 Top-K 옵션을 제공하지 않는 경우가 많습니다.
자세한 내용은 아래 AWS 공식 문서에서 확인할 수 있습니다.
마무리
이번 글에서는 Amazon Bedrock 기반 RAG 시스템에서 AI가 문서를 검색하고 답변을 생성하는 전체 흐름을 살펴보았습니다. 핵심 포인트를 다시 정리하면 다음과 같습니다.
-
Chunking
문서를 의미 있는 작은 단위로 나누어 AI가 정확한 정보를 빠르게 찾도록 돕는 과정입니다. 잘 설계된 Chunk는 Retrieval 단계에서 필요한 정보를 놓치지 않게 하고, 불필요한 정보 혼입을 방지합니다. -
Retrieval&Top-K
사용자의 질문과 관련된 Chunk를 검색하는 단계입니다. Top-K는 가져올 Chunk 수를 결정하지만, Claude 4 시리즈 등 최신 Bedrock 모델에서는 직접 설정이 불가능할 수 있습니다. 따라서 Chunk 설계를 통해 안정적인 검색 결과를 확보하는 것이 중요합니다. -
토큰,Top-K,Top-P
AI 모델은 가져온 정보를 바탕으로 다음 단어(토큰)를 선택합니다.토큰(Token): 텍스트의 최소 단위Top-K: 상위 K개의 후보 토큰만 고려Top-P: 누적 확률이 P 이상이 될 때까지 후보 토큰 선택Temperature: 확률 분포를 평탄하게 만들어 다양성 조절
실제 Bedrock 모델에서는 Top-K를 직접 조정하지 못할 수 있으므로, Top-P와 Temperature를 통한 샘플링 조정이 더 현실적입니다.
- RAG 시스템 최적화 핵심
- Chunk 설계 → Retrieval 안정성 확보
- 프롬프트 및 Top-P/Temperature 조정 → 생성 단계에서 답변 품질과 다양성 확보
결론적으로, Bedrock에서 안정적이고 정확한 답변을 얻기 위해서는 Chunk 설계와 프롬프트 최적화가 핵심이며, Top-K/Top-P와 토큰 선택은 모델이 내부적으로 처리하는 방식과 연결되어 있다는 점을 이해하는 것이 중요합니다.







