
LangGraph, Amazon Bedrock Knowledge Base, S3 Annotations를 사용하여 인도 시민 서비스를 위한 멀티
요약
LangGraph와 Amazon Bedrock Knowledge Base를 활용하여 인도 시민 서비스를 위한 멀티 에이전트 AI 시스템을 구축한 사례입니다. 최신 정부 데이터를 기반으로 힌디어와 영어로 정확한 정보를 제공하며, 서버리스 아키텍처로 비용 효율성을 극대화했습니다.
핵심 포인트
- LangGraph와 Bedrock Knowledge Base를 결합한 멀티 에이전트 구조
- 서버리스 아키텍처를 통해 월 10달러 미만의 저비용 운영 가능
- 특화된 에이전트 배치를 통해 컨텍스트 낭비 및 비용 문제 해결
- S3 Annotations를 활용한 쿼리 로그 기록 및 데이터 관리
이것은 무엇인가: 인도 여권, Aadhaar, PAN 카드 관련 질문에 대해 정확하고 검증된 데이터를 바탕으로 힌디어/영어 답변을 제공하는 멀티 에이전트 (Multi-agent) AI입니다. LangGraph + Bedrock Knowledge Base + S3 Annotations를 사용하여 구축되었습니다. 서버리스 (Serverless) 방식이며, 월 비용은 10달러 미만입니다.
문제점
인도인 누구에게든 물어보세요: "잘못된 정보 때문에 정부 기관에 방문했다가 헛걸음한 적이 있나요?"
거의 모든 사람이 경험해 보았을 것입니다. 한 친구는 타트칼 (tatkal) 서비스를 위해 3,500루피를 들고 여권 서비스 센터 (Passport Seva Kendra)에 갔지만, 수수료가 5,000루피로 인상되어 (2026년 7월 1일 개정) 되돌아와야 했습니다. 어떤 가족은 PAN 카드와 Aadhaar를 연결하지 않아 1,000루피의 과태료를 냈습니다. 마감 기한이 지난 줄 몰랐기 때문입니다. 누군가는 주소를 업데이트하기 위해 Aadhaar 센터를 방문했지만, 알고 보니 온라인으로 2분 만에 처리할 수 있는 일이었습니다.
정보는 정부 웹사이트에 존재합니다. 하지만 PDF 파일 속에 파묻혀 있거나, 탐색 구조가 복잡하며, 대부분 영어로 되어 있습니다. 그리고 모든 AI 도구 (ChatGPT, Perplexity)는 최신 수수료 개정 사항이 학습 데이터에 포함되어 있지 않기 때문에 오래된 답변을 제공합니다.
만약 힌디어로 질문하면 5초 안에 정확하고 최신화된 답변을 얻을 수 있는 단 한 곳이 있다면 어떨까요?
그것이 제가 만든 것입니다.
라이브 데모
🔗 직접 시도해 보세요: https://main.d4937hpik5ydn.amplifyapp.com
여권, Aadhaar, 또는 PAN 카드에 대해 힌디어, 영어, 또는 힌글리시 (Hinglish)로 무엇이든 물어보세요.
솔루션: AI Naagrik
저는 Bedrock Knowledge Base의 검증된 데이터를 사용하여 여권, Aadhaar, PAN 카드 질문에 힌디어 또는 영어로 즉시 답변하는 멀티 에이전트 (Multi-agent) AI 시스템을 구축했습니다.
아키텍처 (Architecture)
흐름: 사용자 질문 → API Gateway → Lambda에서 LangGraph 실행 → Supervisor가 분류 및 라우팅 → Specialist agent가 Knowledge Base에서 정보 검색 → Nova Lite가 응답 형식 지정 → S3 Annotation이 쿼리 로그 기록
왜 멀티 에이전트 (Multi-Agent)인가?
여권, Aadhaar, PAN에 대한 모든 정보를 하나의 프롬프트에 담는 방식은 다음과 같은 문제에 직면합니다:
- 컨텍스트 윈도우 (Context window) 낭비 — 누군가 PAN에 대해 물을 때 왜 여권 문서를 로드해야 하는가?
- 주제를 벗어난 쿼리 (날씨, 욕설 등)가 여전히 비용이 많이 드는 지식 베이스 (KB) 검색을 호출함
- 하나의 모델이 모든 것을 처리할 때 분류 정확도가 떨어짐
LangGraph를 사용하여 다음과 같은 상태 머신 (State machine)을 구축했습니다:
Supervisor → 의도 분류 (classifies intent) → 전문가에게 라우팅 (routes to specialist)
↓
Passport Agent / Aadhaar Agent / PAN Agent / Off-Topic
...
Supervisor는 비용이 저렴한 분류 호출을 한 번 수행합니다. 관련 있는 전문가 에이전트만이 비용이 많이 드는 KB 검색 및 LLM 생성을 실행합니다. 주제를 벗어난 쿼리는 어떤 AI 서비스도 건드리지 않고 즉시 반환됩니다.
Bedrock Knowledge Base: 데이터가 항상 정확한 이유
정부 관련 질의에 답변하는 LLM의 핵심 문제는 데이터의 최신성입니다. 학습 데이터는 구식이 되기 마련이며, 웹 검색은 신뢰할 수 없는 블로그 게시물을 반환합니다.
저의 해결책은 검증된 정보가 담긴 세 개의 마크다운 (markdown) 파일입니다.
knowledge-base/
├── passport.md # 수수료, 서류, 절차 (2026년 7월 개정)
├── aadhaar.md # 온/오프라인 업데이트 절차
...
이 파일들은 S3에 업로드되며, Bedrock Knowledge Base에 의해 Titan Embed Text v2를 사용하여 인덱싱됩니다. 사용자가 "tatkal 여권 수수료는?"이라고 물으면, 에이전트는 KB를 쿼리하여 정확한 수수료 표 청크 (chunk)를 가져온 뒤, 이를 Nova Lite에 전달하여 형식을 지정합니다.
모델은 제가 통제하는 소스에서 읽어오기 때문에 수수료를 환각 (hallucinate)할 수 없습니다. 수수료가 변경되면 한 줄만 수정하고 ./deploy.sh kb를 실행하면 됩니다. 2분 안에 동기화됩니다.
실시간 분석을 위한 S3 Annotations
데이터베이스를 구축하지 않고 사람들이 무엇을 묻는지 추적하고 싶었습니다. 2026년 6월에 출시된 S3 Annotations가 이에 완벽하게 부합합니다.
각 쿼리는 단일 영구 S3 객체에 어노테이션 (annotation)을 저장합니다:
s3.put_object_annotation(
Bucket=bucket,
Key="analytics/queries.json",
...
트렌드를 파악하기 위해, 저는 어노테이션을 나열하고 접두사 (prefix)별로 개수를 셉니다:
response = s3.list_object_annotations(Bucket=bucket, Key=key)
for ann in response["Annotations"]:
if ann["AnnotationName"].startswith("passport"):
DynamoDB 없음. RDS 없음. 순수 S3 API 호출만 사용합니다. 랜딩 페이지에는 매 쿼리마다 업데이트되는 실시간 통계가 표시됩니다.
안전을 위한 Bedrock Guardrails
사용자들은 "가짜 여권 만드는 법(fake passport kaise banaye)"과 같은 질문을 시도할 것입니다. 프롬프트 지침(Prompt instructions)만으로는 이를 확실하게 방지할 수 없습니다. Bedrock Guardrails는 주제 정책(topic policies)을 통해 강력한 안전 계층을 추가합니다.
흥미로운 도전 과제도 있었습니다. 초기에는 가드레일이 "tatkal passport documents"를 차단했습니다. "passport + documents"라는 단어를 보고 위조로 분류한 것입니다. 저는 주제 정의를 더 구체적으로 다듬어(예: "가짜(FAKE) 여권 만들기" vs 정당한 "여권 서류 필요") 오탐(false positives)을 중단시켰습니다.
CodeBuild: 노트북에 Docker 설치 불필요
LangGraph + langchain-aws + boto3 조합은 Lambda zip 파일로 만들기에는 너무 큽니다. Docker가 필요합니다. 하지만 로컬에 Docker를 설치하고 싶지는 않았습니다.
해결책: CodeBuild가 AWS 상에서 Docker 이미지를 빌드합니다.
./deploy.sh build
→ 코드 압축(Zip) → S3에 업로드 → CodeBuild가 Docker 빌드 → ECR로 푸시 → Lambda가 이미지 풀(pull)
개발자는 Docker를 설치할 필요가 전혀 없습니다.
사용된 최신 AWS 서비스
이 프로젝트는 최근 출시된 여러 AWS 기능을 활용합니다:
- Amazon S3 Annotations (2026년 6월) — S3 객체에 풍부한 메타데이터 페이로드 (metadata payloads)를 직접 연결합니다. 여기서는 데이터베이스 없이 쿼리 분석 (query analytics)을 위해 사용되었습니다.
- Amazon Bedrock Knowledge Bases — 자동 청킹 (chunking) 및 임베딩 (embedding)을 포함한 RAG 검색 (retrieval).
- Amazon Bedrock Guardrails — 버전 관리가 포함된 주제 기반 콘텐츠 필터링 (content filtering).
- Amazon Nova Lite — 강력한 다국어 (힌디어) 지원을 갖춘 비용 효율적인 파운데이션 모델 (foundation model).
- Amazon OpenSearch Serverless — KB 임베딩을 위한 관리형 벡터 검색 (vector search).
- AWS CodeBuild — 로컬 Docker 없이 AWS에서 Docker 이미지를 빌드합니다.
- AWS Lambda Container Images — Lambda에서 컨테이너 워크로드 (container workloads) 실행.
- Amazon API Gateway HTTP APIs — 저비용 HTTP 엔드포인트 (endpoint).
- AWS Amplify Hosting — 정적 사이트 배포 (static site deployment).
- AWS Systems Manager Parameter Store — 런타임 구성 (runtime configuration).
- LangGraph — 멀티 에이전트 오케스트레이션 (multi-agent orchestration) 프레임워크.
결과 (Results)
| 쿼리 (Query) | 응답 (Response) | 정확함? (Correct?) |
|---|---|---|
| "Tatkal 여권 수수료?" | ₹5,000 (36 페이지) | ✅ 2026년 7월 개정됨 |
| ... |
제로 상태에서 라이브 배포까지 총 소요 시간: 20분 미만.
다음에 추가할 사항 (What I'd Add Next)
- 운전면허증 (Driving License) 및 유권자 ID (Voter ID) 에이전트 (동일한 패턴 적용 — 노드 추가 + 마크다운)
- 영어 키보드 입력이 어려운 사용자를 위한 음성 입력 (Voice input)
- 앱 미사용자를 위한 Twilio 기반 WhatsApp 봇
- 자동 주간 지식 베이스 (KB) 갱신 (Lambda를 통해 정부 사이트의 변경 사항 확인)
직접 해보기 & 소스 코드 (Try It & Source Code)
🔗 라이브 데모 (Live Demo): https://main.d4937hpik5ydn.amplifyapp.com
📝 AWS Builder Blog: 전체 기사 (Full article)
💼 LinkedIn: 게시물 (Post)
📂 소스 코드 (Source Code): 커뮤니티의 관심에 따라 오픈 소스로 공개할 계획입니다. 멀티 에이전트 (Multi-agent) + 지식 베이스 (Knowledge Base) 패턴은 LLM이 사실 관계를 환각 (Hallucinate) 하는 모든 도메인 — 의료, 법률, 인사(HR) 정책, 금융 — 에 적용 가능합니다. 액세스를 원하시면 댓글을 남겨주세요!
저자 소개 (About the Author)
Utkarsh Rastogi — AWS Community Builder | 실세계 문제를 해결하는 서버리스 (Serverless) 솔루션을 구축하는 클라우드 및 AI 열성가.
- 📝 Dev.to Blog
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기