AWS Bedrock으로 구현한 Contextual Retrieval
지난 글에서 소개했던 Anthropic의 Contextual Retrieval을 AWS Bedrock 서비스를 활용하여 직접 구현해 보았습니다. 특히 기존 RAG 시스템의 한계를 극복하고자 하는 이 방식의 효과를 실제로 확인해보고 싶었습니다.
Anthropic의 맥락적 검색(Contextual Retrieval): 대규모 지식 베이스를 위한 RAG 기술
2024년 9월 20일, Anthropic은 기존 Retrieval-Augmented Generation (RAG) 시스템의 성능을 크게 향상할 수 있는 '맥락적 검색(Contextual Retrieval)'이라는 새로운 방법을 소개했습니다. Introducing Contextual RetrievalAnthr
yunwoong.tistory.com
RAG 시스템의 한계
기존 RAG(Retrieval-Augmented Generation) 시스템은 긴 문서를 작은 청크로 나누어 처리하는 과정에서 다음과 같은 문제점들이 발생합니다:
- 청크 크기 제한: LLM의 컨텍스트 윈도우 제한으로 인한 강제 분할
- 독립적 임베딩: 각 청크를 독립적으로 벡터화하여 저장
- 문서 구조 손실: 목차, 섹션 등 문서의 구조적 정보 손실
- 참조 정보 단절: 이전/이후 내용에 대한 참조 관계 유실

이러한 한계는 다음과 같은 실패 사례로 이어집니다.
사용자 질문: "2023년 3분기 매출은 얼마였나요?" 결과적 답변: "2024년 3분기 목표 매출은 150억원입니다."
Chunk 1의 시간 정보 누락으로 벡터 유사도 검색 시 ‘2023년', ‘분기', '매출', '억원' 등의 키워드 중심 검색하여 2023년 3분기 매출"을 찾았는데 "2024년 3분기 목표"를 반환합니다.
구현 및 테스트 환경
사용한 AWS Bedrock 모델
- Text Generation: anthropic.claude-3-5-haiku-20241022-v1:0
- Embedding: amazon.titan-embed-text-v2:0
- Reranking: amazon.rerank-v1:0
구현한 검색 모드
- Contextual Embedding만 사용
- Contextual Embedding + BM25 하이브리드 검색
- 하이브리드 검색 + Reranking
프로젝트 구성
bedrock_contextual_retrieval/ ├── contextual_retrieval/ │ ├── __init__.py │ ├── config/ │ │ ├── __init__.py │ │ ├── default_config.yaml │ │ └── schema.py │ ├── utils/ │ │ ├── __init__.py │ │ └── document_utils.py │ ├── embedding_models.py │ ├── vector_client.py │ ├── bm25.py │ ├── reranker.py │ └── retriever.py ├── tests/ │ └── test_search.py └── asset/ └── doc/ └── test_doc.pdf
테스트 문서 선정
테스트를 위해 "2024년 「일자리 채움 청년지원금」 사업운영 지침(안)"을 선택했습니다. 이 문서는
- 약 90페이지 분량의 복잡한 공문서
- 한국어 특유의 행정 용어와 복잡한 문장 구조
- 다양한 예외사항과 조건들이 문서 전반에 걸쳐 분산됨
이런 특성을 가진 문서는 기존 RAG 시스템의 한계를 잘 보여줄 수 있는 좋은 테스트 케이스였습니다.
테스트 결과
동일한 질문 "일자리 채움 청년지원금 중복 지원 가능한 경우에 대해 알려줘"로 각 모드를 테스트했습니다.
1. Contextual Embedding 검색
기본적인 맥락 정보는 포함되었지만, 중복 지원이라는 특정 예외사항을 찾지 못해 "제공된 검색 결과에서 중복 지원에 대해 명확하게 언급된 내용은 없습니다"라는 잘못된 답변을 제공했습니다.

2. Contextual Embedding + BM25
BM25를 추가하여 키워드 기반 검색을 결합하자, 문서 중간에 있던 중복 지원 관련 내용을 정확하게 찾아내어 올바른 답변을 제공했습니다.

3. Reranking 추가
재순위화까지 적용하니 가장 관련성 높은 내용을 우선적으로 제공하며, 맥락을 잘 파악한 답변을 생성했습니다.

성능 향상 요소
Anthropic의 연구 결과와 유사하게, 이번 구현에서도 각 요소 추가에 따른 성능 향상을 확인할 수 있었습니다.
- Contextual Embeddings: 검색 실패율 35% 감소
- Contextual Embeddings + BM25: 검색 실패율 49% 감소
- Reranking 추가 시: 검색 실패율 67% 감소
전체 코드는 GitHub에 공개했으니, 관심 있으신 분들은 직접 테스트해보실 수 있습니다.
'Tech & Development > AI' 카테고리의 다른 글
AI로 시작하는 No-code 개발: MVP부터 프로토타입까지 (0) | 2025.01.28 |
---|---|
OpenAI, Sora(소라) 사용방법 가이드 (0) | 2024.12.13 |
Claude의 새로운 기능: 맞춤형 응답 스타일 설정 (0) | 2024.11.28 |
Anthropic의 Model Context Protocol(MCP) : 사용 가이드 (0) | 2024.11.27 |
AI 에이전트 시작하기: LangGraph 개념과 실습 (0) | 2024.11.26 |
댓글
이 글 공유하기
다른 글
-
AI로 시작하는 No-code 개발: MVP부터 프로토타입까지
AI로 시작하는 No-code 개발: MVP부터 프로토타입까지
2025.01.28안녕하세요. 이번에는 AI를 활용한 개발 경험을 공유해드리려고 합니다. 특히 개발 경험이 전혀 없는 분들도 AI를 이용해 어떻게 프로그램을 만들 수 있는지, 그 과정에서 배운 점들을 이야기해 보겠습니다. 제가 실험해 본 결과, AI 도구들을 적절히 활용하면 생각보다 훨씬 빠르게 원하는 프로그램을 만들 수 있습니다.1. AI 개발 도구 현황현재 AI 개발 도구는 크게 두 가지 방향으로 발전하고 있습니다.웹 기반 프로토타이핑 도구AI 코드 에디터각각의 도구들은 서로 다른 장점을 가지고 있어, 개발 목적과 상황에 따라 적절히 선택해서 사용하면 됩니다. 자세히 살펴보겠습니다.1.1 웹 기반 프로토타이핑 도구프로토타이핑 도구들은 코드 작성 없이도 빠르게 아이디어를 구현할 수 있게 해주는 도구들입니다.Lovable… -
OpenAI, Sora(소라) 사용방법 가이드
OpenAI, Sora(소라) 사용방법 가이드
2024.12.13OpenAI가 진행 중인 12일간의 특별 업데이트 이벤트의 세 번째 날, 드디어 기다리던 Sora가 공개되었습니다. 월요일 발표 직후에는 폭발적인 관심으로 인해 계정 생성이 잠시 중단되었었는데요, 이제 다시 서비스가 정상화되어 직접 테스트해 볼 수 있게 되었습니다. SoraTransform text and images into immersive videos. Animate stories, visualize ideas, and bring your concepts to life.sora.comSora 사용을 위한 준비Sora는 sora.com에서 별도로 접속하여 사용할 수 있습니다. ChatGPT 웹사이트가 아닌 독립된 도메인이지만, 기존 ChatGPT 계정으로 로그인이 가능합니다.계정 생성 및 로그인 프로… -
Claude의 새로운 기능: 맞춤형 응답 스타일 설정
Claude의 새로운 기능: 맞춤형 응답 스타일 설정
2024.11.28Anthropic이 Claude.ai 사용자들을 위해 발표한 새로운 기능인 '커스텀 스타일(Custom Styles)'에 대해 알아보겠습니다. 이 기능을 통해 사용자들은 자신만의 필요와 작업 방식에 맞게 Claude의 응답을 맞춤화할 수 있게 되었습니다. Tailor Claude's responses to your personal styleToday, we're announcing custom styles for all Claude.ai users. Now you can tailor Claude's responses to your unique needs and workflows.www.anthropic.com맞춤형 스타일이란?Claude의 커스텀 스타일 기능을 사용하면 Claude의 응답 방식을 사용자의… -
Anthropic의 Model Context Protocol(MCP) : 사용 가이드
Anthropic의 Model Context Protocol(MCP) : 사용 가이드
2024.11.27오늘은 Anthropic에서 새롭게 발표한 Model Context Protocol(MCP)에 대해 자세히 알아보려고 합니다. AI에 관심이 있는 분이라면 꼭 알아두어야 할 새로운 기술이니 차근차근 살펴보겠습니다. Introducing the Model Context ProtocolThe Model Context Protocol (MCP) is an open standard for connecting AI assistants to the systems where data lives, including content repositories, business tools, and development environments. Its aim is to help frontier models produce bett…
댓글을 사용할 수 없습니다.