Neptune Analytics 또는 인메모리 그래프에 적재합니다 — 문서 변경 시 영향받는 엔티티·관계만 증분 업데이트.
takeaway
추출은 자동, 품질은 사람 — 샘플 검증 없는 그래프는 오추출을 그대로 추론에 사용하게 됩니다.
PART 3 · GraphRAG
그래프 + 벡터 — 하이브리드 에이전트
질문 유형에 따라 그래프 검색과 벡터 검색을 골라 쓰는 에이전트
핵심 포인트
search_graph
"페어링 가능한 와인 전부" — 관계·의존성 질문 담당
search_docs
"예약 취소 절차는?" — 정책·설명 텍스트 질문 담당
자동 선택
시스템 프롬프트의 기준대로 에이전트가 도구를 고름
복합 질문
"디너로 바꾸면 뭐가 달라지고, 취소 규정은?" — 두 도구 결합
코드
python
from strands import Agent, tool
import boto3
bedrock_rt = boto3.client("bedrock-agent-runtime", region_name="us-east-1")
# 그래프 검색 도구 — 엔티티의 관계를 직접 탐색
@tool
def search_graph(entity_name: str, relation: str = "") -> str:
"""레스토랑·와인·코스 간 관계를 그래프에서 검색합니다."""
return format_relations(find_related(find_entity(entity_name), relation))
# 벡터 검색 도구 — 정책·설명 텍스트는 Knowledge Base Retrieve로, 선택은 에이전트가
@tool
def search_docs(query: str) -> str:
"""메뉴·정책·FAQ 텍스트를 벡터 검색합니다."""
resp = bedrock_rt.retrieve(knowledgeBaseId="KB-RESTAURANT-001",
retrievalQuery={"text": query})
return "\n\n".join(r["content"]["text"] for r in resp["retrievalResults"][:3])
agent = Agent(tools=[search_graph, search_docs])
PART 3 · GraphRAG
그래프 적용 기준
모든 질문에 그래프가 필요한 것은 아님 — 두 번의 질문으로 판단
takeaway
벡터 RAG가 실패한 질문 중 관계 추론 비중이 크면(예시 기준: 30%+) 도입 가치가 있습니다 — 시작은 인메모리, 확장은 Neptune입니다.
🗺️
선택 가이드
데이터 형태별 전략 · 실습
PART 4 · 선택 가이드
데이터 형태별 전략 선택
질문을 받으면 데이터 형태부터 — 형태가 전략과 도구를 결정
데이터 형태
대표 질문
전략
핵심 도구
텍스트 문서
"예약 취소 절차는?"
표준 벡터 RAG
Knowledge Bases (Knowledge Bases 모듈)
이미지 · 표
"비교표에서 디너 가격은?"
Vision 추출 또는 멀티모달 임베딩
Claude Vision · Nova MM Embeddings
비디오 · 음성
"몇 분쯤에 설명하나?"
트랜스크립트 + 타임스탬프 청킹
Amazon Transcribe
복잡한 PDF
표·이미지가 섞인 약관
자동 구조화 파싱
Bedrock Data Automation
관계 질문
"페어링 가능한 와인 전부?"
GraphRAG 하이브리드
Neptune Analytics
takeaway
직접 구축 전에 확인 — Knowledge Base 멀티모달 리트리벌(Nova Multimodal Embeddings를 Knowledge Base 임베딩 모델로)과 BDA·파운데이션 모델 멀티모달 파서로 이미지·비디오·오디오를 관리형으로 인덱싱할 수 있습니다. Knowledge Base 3종의 선택 기준은 Knowledge Bases 모듈에서 다뤘습니다 — 여기서의 결정 축은 데이터 형태입니다.