AWS OpenSearch로 구축하는 대화형 AI 검색 시스템: RAG 파이프라인 구현 가이드
최근 생성형 AI(Generative AI)의 보급과 함께 정확도 높은 답변 생성이 가능한 검색 기반 AI 시스템 구축에 대한 수요가 증가하고 있습니다. 그 중 하나가 RAG(Retrieval-Augmented Generation)입니다. 이 글에서는 Amazon OpenSearch Service를 활용하여 대화형 검색 기능까지 포함된 RAG 시스템을 어떻게 구축할 수 있는지 소개합니다. 전체 구현 흐름, 핵심 구성요소, 자동화 및 배포 방법에 대해 하나씩 살펴보겠습니다.
RAG + OpenSearch: 조합의 의미와 장점
RAG는 대규모 언어 모델(LLM)에 외부 지식 검색을 결합하여 인공지능의 환각(hallucination)을 줄이고 정확한 정보 기반 응답을 제공합니다. Amazon OpenSearch Service는 강력한 벡터 검색 기능과 함께 MLCommons 플러그인을 통해 LLM과의 통합을 지원하며, 실제 유용한 대화형 AI 시스템을 구현하는 데 적합한 선택지입니다.
또한 OpenSearch의 ‘에이전트(Agents)’ 및 ‘도구(Tools)’ 기능을 사용하면 다양한 머신러닝 작업을 조율하여 보다 유연하고 강력한 생성형 AI 프로그램을 만들 수 있습니다.
사전 준비 사항
- AWS 계정 생성
- OpenSearch 2.13 이상 버전의 도메인 생성 및 설정
- Amazon Bedrock에서 Titan 및 Claude 모델 사용 권한 부여
- IAM 역할 및 사용자 생성, 적절한 권한 부여
- OpenSearch와 Bedrock 간 통신을 위한 Connector 구성
벡터 임베딩 모델 연결
아래와 같이 아마존의 Titan 텍스트 임베딩 모델을 연결합니다. 해당 모델은 입력 문장을 1,536차원의 벡터로 변환하며, 의미 기반 검색(semantic search)에 최적화되어 있습니다.
Python 코드, IAM 연결 정보 및 OpenSearch API를 통해 connector_id를 획득하고 모델을 정의한 후 OpenSearch에 등록 및 배포합니다.
모델 연결이 완료되면 관련 데이터를 분석하여 점수 요약 등의 텍스트를 벡터화해 저장할 수 있습니다.
데이터 수집, 색인 및 저장
다음 단계는 모델 기반 임베딩 처리와 색인 자동화를 위한 파이프라인 구성입니다.
- OpenSearch Ingest Pipeline 생성
- cricket_data 색인(index) 생성
- 전체 1,536차원 벡터 필드를 갖는 구조 정의
- ODI 스타들에 대한 샘플 데이터를 일괄 저장
이 과정은 추후 질문 기반 검색 및 응답 정확도를 결정짓는 중요한 기초 작업입니다.
LLM(생성 모델) 연결: Claude v1
Amazon Bedrock의 Claude-instant-v1 모델을 사용하여 질문에 대한 텍스트 응답을 생성하게 합니다.
- MLCommons의 Connector API를 통해 Claude 모델 연결
- connector_id 기반으로 모델 등록 후 배포
- OpenSearch Dashboard에서 모델 상태 확인 가능
Agent 및 Tool 구성
에이전트는 다음과 같은 두 가지 도구(Tool)를 조합하여 작동하게 됩니다.
- VectorDBTool: 질문에 맞는 문서 검색 및 벡터 필드 비교
- MLModelTool: OpenSearch 문서를 기반으로 응답 생성
에이전트는 대화형 구조를 갖고 있으며, 사용자 질문, 기록된 대화 히스토리, 검색된 문서를 바탕으로 컨텍스트를 유지하며 다음 질문에 자연스럽게 대응합니다.
API를 통해 아래와 같은 대화 시나리오를 구현할 수 있습니다:
- 첫 질문 : “Sachin Tendulkar의 경기 점수는?”
- 후속 질문 : “그는 T20 경기를 얼마나 뛰었나?”, “그 점수를 Virat Kohli와 비교해줘”
대화 히스토리는 자동으로 memory_id에 저장되며, 이후 질문에서 이 메모리가 활용됩니다. 즉, 사용자별 대화 맥락을 유지하고 자동화를 적용하여 개인 맞춤형 AI 검색을 구현할 수 있게 됩니다.
활용 및 배포 자동화 방안
- Python으로 IAM 역할 및 connector 구성 자동화
- CI/CD로 OpenSearch Pipeline 및 모델 그룹 일괄 등록 가능
- Prompt 엔지니어링을 통한 강제 응답 포맷 적용 → 환각 방지 강화
- 대화 히스토리 자동 저장 → 사용자당 분기된 메모리 관리
- OpenSearch Dashboard를 통한 시각화 및 배포 상태 확인 가능
결론
이번 포스팅에서는 Amazon OpenSearch Service의 머신러닝 플러그인을 활용하여 검색 기반 대화형 생성형 AI를 구축하는 방법을 구체적으로 살펴보았습니다. 단순한 검색 이상의 흐름 관리, 벡터 기반 의미 검색, LLM 통합이라는 RAG 파이프라인의 특징을 실제 구현 코드와 함께 분석해 자세히 설명했습니다.
다양한 질문 흐름을 지원하고, 정확하면서도 설명 가능한 응답을 가능하게 하는 conversational search 시스템을 구축하려는 개발자라면 이 구조를 활용해보시길 권장합니다.
https://aws.amazon.com/blogs/big-data/build-conversational-ai-search-with-amazon-opensearch-service/
AI, Cloud 관련한 문의는 아래 연락처로 연락주세요!
(주)에이클라우드
이메일 : acloud@a-cloud.co.kr
회사 번호 : 02-538-3988
회사 홈페이지 : https://www.a-cloud.co.kr/
문의하기