본 블로그는 Domenico di Salvia와 Andrea Filippo La Scola가 작성한 블로그인 Automating vector embedding generation in Amazon Aurora PostgreSQL with Amazon Bedrock를 번역, 편집하였습니다. 벡터 임베딩은 생성형 AI를 활용하여 애플리케이션에서 비정형 데이터를 다루는 방식을 근본적으로 변화시켰습니다. 임베딩은 텍스트, 이미지 및 기타 콘텐츠의 본질을 머신이 효율적으로 처리할 수 있는 형태로 변환하는 수학적 표현 방식으로, 시맨틱 검색, […] ||
본 블로그는 Domenico di Salvia와 Andrea Filippo La Scola가 작성한 블로그인 Automating vector embedding generation in Amazon Aurora PostgreSQL with Amazon Bedrock를 번역, 편집하였습니다.
벡터 임베딩은 생성형 AI를 활용하여 애플리케이션에서 비정형 데이터를 다루는 방식을 근본적으로 변화시켰습니다. 임베딩은 텍스트, 이미지 및 기타 콘텐츠의 본질을 머신이 효율적으로 처리할 수 있는 형태로 변환하는 수학적 표현 방식으로, 시맨틱 검색, 추천 시스템, 그리고 다양한 자연어 처리 작업을 가능하게 합니다.
Retrieval-Augmented Generation (RAG) 또는 기타 AI 기반 솔루션을 활용하는 애플리케이션을 구축하는 조직에게 벡터 임베딩을 최신 상태로 유지하는 것은 필수적입니다. 데이터베이스에 새로운 데이터가 삽입되거나 기존 데이터가 수정될 때, 해당 임베딩이 신속하고 정확하게 생성되도록 보장하는 것이 AI 기반 기능의 품질과 관련성을 유지하는 핵심입니다.
Amazon Bedrock은 임베딩 생성과 검색을 자동으로 처리하는 관리형 RAG 솔루션을 제공하지만, 많은 조직에서는 고유한 요구 사항으로 인해 커스텀 벡터 데이터베이스 솔루션을 직접 구현하는 경우가 있습니다. 이는 오픈 소스 pgvector 확장을 활용한 PostgreSQL을 통해 구현할 수 있습니다. 이러한 요구 사항에는 기존 애플리케이션과의 긴밀한 통합, 특정 성능 최적화, 또는 고유한 데이터 처리 워크플로 등이 포함될 수 있습니다.
이 게시글에서는 Amazon Aurora PostgreSQL 호환 에디션에서 데이터가 삽입되거나 수정될 때 벡터 임베딩 생성을 자동화하는 여러 가지 접근 방식을 살펴봅니다. 각 접근 방식은 복잡성, 지연 시간, 안정성, 확장성 측면에서 서로 다른 트레이드오프를 제공하므로, 여러분의 특정 애플리케이션 요구 사항에 가장 적합한 방식을 선택할 수 있습니다.
솔루션 개요
Aurora PostgreSQL에서 pgvector 확장을 사용하여 벡터 데이터베이스를 구현할 때, 데이터 변경이 발생할 때마다 임베딩을 생성하고 업데이트하는 안정적인 시스템이 필요합니다. 일반적인 워크플로는 다음 단계로 구성됩니다:
새로운 데이터 또는 수정된 데이터에 임베딩이 필요한지 감지합니다.
해당 콘텐츠를 Amazon Bedrock 임베딩 모델로 전송합니다.
생성된 임베딩 벡터를 수신합니다.
이러한 벡터를 원본 데이터와 함께 저장합니다.
이 게시글에서는 Amazon Titan foundation model (FM)과 함께 Amazon Bedrock을 사용합니다. Amazon Titan은 추가 인프라를 관리할 필요 없이 프로덕션 수준의 벡터 임베딩을 제공하기 때문입니다. Amazon Titan 임베딩은 텍스트 데이터의 시맨틱 관계를 효과적으로 포착하므로, 데이터가 저장된 곳에서 바로 유사성 검색과 추천 기능을 구현할 수 있습니다.
이 게시글에서는 대부분의 프로덕션 워크로드에 적합한 성능과 간편성의 균형을 제공하는 Amazon Titan을 선택했지만, Amazon Bedrock에서 지원하는 Cohere Embed 또는 Anthropic의 Claude와 같은 다른 모델을 선택할 수도 있습니다. 따라서 특정 시맨틱 검색 또는 문서 검색 요구 사항에 가장 적합한 임베딩 솔루션을 유연하게 선택할