An open API service indexing awesome lists of open source software.

https://github.com/squatboy/amazon-bedrock-serverless-rag-bot

AWS Serverless RAG chatbot system using Amazon Bedrock Knowledge Base
https://github.com/squatboy/amazon-bedrock-serverless-rag-bot

amazon-bedrock amazon-bedrock-knowledge-bases aws rag rag-chatbot

Last synced: 3 months ago
JSON representation

AWS Serverless RAG chatbot system using Amazon Bedrock Knowledge Base

Awesome Lists containing this project

README

          

# Amazon Bedrock Serverless RAG Bot

Amazon Bedrock Knowledge Base를 사용한 AWS 서버리스 기반의 RAG(Retrieval-Augmented Generation) 챗봇 시스템

## 프로젝트 개요

이 프로젝트는 기업/단체/조직의 내부 문서(규정, 매뉴얼, 지식 베이스 등)를 기반으로 동작하는 AI 챗봇을 **안전하고 확장 가능하며 비용 효율적인** 서버리스 플랫폼으로 제공합니다. AWS의 완전 관리형 서비스를 중심으로 설계되어 인프라 관리 부담을 최소화하고 비즈니스 로직 개발에 집중할 수 있습니다.

### 주요 특징

- **서버리스 아키텍처**: AWS Lambda, API Gateway, Bedrock을 활용한 완전 관리형 인프라
- **RAG 기반**: Amazon Bedrock Knowledge Base를 통한 지능형 문서 검색 및 답변 생성
- **IaC 기반**: Terraform을 통한 인프라 코드 관리
- **강화된 보안**(선택): Bedrock Guardrails를 통한 PII 보호 및 유해 콘텐츠 필터링

## 시스템 아키텍처

bedrock-kb-arch

### 핵심 구성 요소

- **API Gateway**: 시스템의 단일 진입점, RESTful API 제공
- **Lambda**: 사용자 요청 처리 및 Bedrock과의 통신
- **Bedrock Knowledge Base**: RAG 파이프라인 자동화 및 오케스트레이션
- **S3**: 문서 저장소
- **OpenSearch Serverless**: 자동 생성되는 벡터 스토어
- **Bedrock Guardrails**(선택): PII 보호 및 콘텐츠 필터링

## 시작하기

### 사전 요구사항

- AWS CLI 설치 및 구성
- Terraform 설치 (>= 1.0)
- Python 3.9+
- 적절한 AWS 권한 (Bedrock, Lambda, API Gateway, S3 등)

### 1. 리포지토리 클론

```bash
git clone https://github.com/squatboy/amazon-bedrock-serverless-rag-bot.git
cd amazon-bedrock-serverless-rag-bot
```

### 2. 인프라 배포

```bash
# Terraform 초기화
terraform init

# 배포 계획 확인
terraform plan

# 인프라 배포
terraform apply
```

### 3. Bedrock Knowledge Base 설정

> **중요**: Bedrock Knowledge Base는 AWS Console에서 수동으로 생성해야 합니다.

1. AWS Bedrock Console에서 Knowledge Base 생성
2. "Quick Create" 옵션 사용
3. S3 버킷 데이터소스 연결 (Terraform으로 생성된 버킷 사용)
4. 생성된 Knowledge Base ID를 Lambda 환경변수에 설정

### 4. 문서 업로드 및 동기화

```bash
# S3 버킷에 문서 업로드
aws s3 cp your-documents/ s3://your-bucket-name/docs/ --recursive

# Bedrock Console에서 "Sync" 실행
```

## 사용 방법

### API 엔드포인트

배포 완료 후, API Gateway URL을 통해 챗봇에 답변을 요청할 수 있습니다:

```bash
# 요청 예시
curl -X POST https://your-api-gateway-url/chat \
-H "Content-Type: application/json" \
-d '{"message": "회사 휴가 정책에 대해 알려주세요"}'
```

### 응답 형식

```json
{
"response": "회사의 연차 휴가는 입사일로부터 1년 후에 15일이 부여됩니다...",
"citations": [
{
"content": "연차 휴가 관련 규정...",
"source": "company-policy.pdf"
}
]
}
```