이 글은 로컬동작하는 FAISS 기반 RAG 실습을 AWS Bedrock Knowledge Bases와 Amazon S3 Vectors로 옮긴 과정을 정리합니다.
복습: 로컬 RAG에서는 무엇을 직접 했을까?
로컬 실습에서는 셔츠 상품 CSV를 읽고, 한 행을 하나의 문서처럼 다뤘습니다. 그다음 embedding model로 문서를 vector로 바꾸고 FAISS index에 넣었습니다. 아래 코드는 로컬 실습에서 RAG의 핵심이 되는 부분입니다.
from langchain_community.document_loaders import CSVLoader
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
loader = CSVLoader(file_path=str(data_path), encoding="utf-8")
documents = loader.load()
embeddings = OpenAIEmbeddings(
model="text-embedding-3-small",
dimensions=1536,
)
vector_store = FAISS.from_documents(documents, embeddings)
- CSV를 문서로 변환
- 문서를 embedding model로 숫자 vector로 변경
- FAISS index에 vector를 저장
- 질문이 들어오면 같은 embedding model로 질문도 vector로 변경
- 가까운 문서 Top-K를 찾아 prompt context로 넘김
AWS 아키텍처
AWS로 옮길 때는 최대한 AWS기능을 활용하는 것이 좋습니다. 그래서 Bedrock knowledge base를 RAG로 사용하고 Vector DB를 S3 Vector를 사용했습니다.
- RAG: Bedrock Knowledge Bases
- Vector DB는 AWS S3 Vector

Bedrock은 여러 foundation model을 AWS API와 권한 체계 안에서 사용할 수 있게 해주는 관리형 서비스입니다. 그중 Knowledge Bases는 RAG를 위한 문서 ingestion, chunking, embedding, retrieval을 관리합니다.
AWS S3 Vector는 객체 스토리지에 벡터를 저장하고 쿼리를 할 수 있게합니다. S3 콘솔을 보면 Vector buckets이 따로 존재합니다.

Bedrock knowledge base에서 S3 Vector로 데이터를 저장하는 방법은 매우 간단합니다. Sync를 누르면 됩니다.

S3 Vectors를 사용한 이유?
이번 실습의 목적은 검색 엔진을 이해하고 장단점을 파악하는것이 아니라 빠르게 AWS로 실습하는게 목표여서 AWS S3 vector를 선택했습니다. AWS에서 Vector DB로 쓸 수 있는 리소스는 OpenSearch, Postgres RDS vector, S3 vector 등이 있습니다.
또한, AWS S3 Vector는 사용방법이 쉬울뿐만 아니라 성능도 매우 우수합니다. AWS 공식 설명을 보면, 수식억개의 벡터를 저장하고 조회하는데 1초 미만이 걸린다고 합니다.

S3 vector 설정
S3 vector를 만드면 3가지 설정이 가능합니다.
1. Dimension(차원)
2. 거리측정방법: 코사인과 유클리드 중 선택
3. Non-filterable metadata: vector 내 사용하는 인덱스

실습
AWS 리소스 생성
저는 테라폼으로 리소스를 생성했습니다.
- 생성한 리소스: data source S3, S3 vector, Bedrock knowledge base
S3 vector에 데이터를 저장
data source s3에 있는 products.md를 S3 vector에 넣어보겠습니다.

Bedrock sync만 클릭하면 간단히 producs.md가 S3 vector에 저장됩니다.

Bedrock sync는 data source의 문서를 읽고, chunking하고, embedding model을 호출한 뒤, 만들어진 vector와 metadata를 S3 Vectors index에 저장합니다.

S3 vector 내용 확인
Bedrock sync가 끝난 뒤에는 S3 Vectors API로 결과를 확인해야 합니다.
먼저 vector key와 Bedrock metadata를 조회합니다.
aws s3vectors list-vectors \
--index-arn "{S3 vector arn}" \
--return-metadata \
--max-items 5 \
--region ap-northeast-2 \
--query 'vectors[].{key:key,text:metadata.AMAZON_BEDROCK_TEXT,metadata:metadata.AMAZON_BEDROCK_METADATA}'

쿼리를 보면 AMAZON_BEDROCK_TEXT와 AMAZON_BEDROCK_METADATA를 사용했습니다. 이 두개 메타데이터는 S3 vector에 설정한 인덱스입니다.
- AMAZON_BEDROCK_TEXT는 Bedrock이 만든 chunk text
- AMAZON_BEDROCK_METADATA에는 원본 문서 위치 같은 Bedrock 관리 metadata

특정 vector를 다시 보고 싶으면 key를 하나 가져와 get-vectors로 조회합니다.
VECTOR_KEY=$(aws s3vectors list-vectors \
--index-arn "{S3 vector arn}" \
--max-items 1 \
--region ap-northeast-2 \
--query 'vectors[0].key' \
--output text)
aws s3vectors get-vectors \
--index-arn "{S3 vector arn}" \
--keys "$VECTOR_KEY" \
--return-metadata \
--return-data \
--region ap-northeast-2 \
--query 'vectors[0].{key:key,text:metadata.AMAZON_BEDROCK_TEXT,vector_preview:data.float32[:10]}'
Bedrock console에서 테스트하기
AWS 콘솔에서 “Test Knowledge Base” 기능으로 AI모델와 RAG연동 테스트를 할 수 있습니다.
1.Bedrock > Knowledge Bases
2.생성된 Knowledge Base 선택
3.Test knowledge base 선택
4.generation model 선택
5.질문 입력

테스트 질문은 아래처럼 넣었습니다. 기대한 결과는 S3 vector에 저장된 데이터를 기반으로 답변을 주는겁니다.
regular fit blue or white formal shirt for men

참고자료
- AWS, What is RAG?: https://aws.amazon.com/ko/what-is/retrieval-augmented-generation/
- Amazon S3 Vectors 소개: https://aws.amazon.com/ko/blogs/korea/introducing-amazon-s3-vectors-first-cloud-storage-with-native-vector-support-at-scale/
- S3 Vectors with Bedrock Knowledge Bases: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-bedrock-kb.html
- Bedrock Knowledge Bases vector store setup: https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html
- Titan Text Embeddings V2: https://docs.aws.amazon.com/bedrock/latest/userguide/titan-embedding-models.html
- Terraform aws_bedrockagent_knowledge_base: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/bedrockagent_knowledge_base
'전공영역 공부 기록' 카테고리의 다른 글
| GenerativeAiOnKubernetes 스터디 - 챕터 4장 RAG, Lora 파인튜닝 (0) | 2026.05.18 |
|---|---|
| Kubernetes v1.36 업그레이드 전에 확인할 운영 영향과 핸즈온 (1) | 2026.05.10 |
| 스터디 챕터 8 정리 - LLM As Judge, AI Agent (0) | 2026.05.05 |
| 스터디 챕터 7 정리 - 프러덕션을 위해, Streamlit을 FastAPI로 마이그레이션 (0) | 2026.05.04 |
| AI 모델 사용 vs AI 에이전트 사용 — LangGraph 실습 (0) | 2026.05.02 |