AWS Cloud

AWS 벡터 데이터베이스 활용

Pro.Dev 2024. 12. 10. 16:18
반응형

AWS 벡터 데이터베이스 활용 : 벡터 데이터를 효율적으로 사용하는 방법

AWS 벡터 데이터베이스를 활용한 효과적인 데이터 처리 방법에 대해 알아보겠습니다. 이 글은 AWS 데이터베이스 스페셜리스트들이 공유한 지식과 경험을 바탕으로 작성되었습니다. 벡터 데이터베이스와 생성형 AI를 결합한 사례와 실질적인 활용 전략을 포함하여 따라하기 쉽게 작성되었습니다.


생성형 AI와 벡터 데이터베이스의 만남

생성형 AI란 무엇인가?

생성형 AI(Generative AI)는 방대한 비정형 데이터(예: 인터넷 데이터)를 머신러닝을 통해 학습한 모델입니다. AWS에서는 Amazon Bedrock이라는 완전 관리형 서비스를 통해 강력한 AI 모델을 단일 API로 쉽게 활용할 수 있습니다.

검색 증강 생성(Search-Augmented Generation)

검색 증강 생성은 파운데이션 모델에 질문한 결과가 불충분할 때, 별도의 데이터베이스를 활용하여 답변의 정확성을 높이는 기술입니다. 이 과정에서 벡터 데이터를 사용하여 모델의 성능을 강화합니다.


벡터 데이터 처리 워크플로우

  1. 데이터 준비: PDF 등 비정형 데이터를 청크로 나눕니다.
  2. 벡터화: Amazon Titan과 같은 임베딩 모델을 사용하여 데이터를 벡터 형태로 변환합니다.
  3. 저장: 벡터 데이터를 Aurora, RDS 등 데이터베이스에 저장합니다.
  4. 검색: 사용자가 입력한 쿼리를 벡터화하여 데이터베이스에서 유사한 데이터를 검색합니다.
  5. 결과 반환: 파운데이션 모델을 통해 자연어 형태로 결과를 반환합니다.

벡터 데이터 활용 시 유의점

  1. 임베딩 생성 시간: 데이터를 벡터화하는 과정에서 시간이 소요됩니다.
  2. 저장 공간: 벡터 데이터는 디멘션의 수에 따라 크기가 결정됩니다.
    • 예: 136개의 디멘션은 약 6KB의 저장 공간 필요
  3. 쿼리 성능: 디멘션 수와 데이터 양이 많을수록 쿼리 시간이 늘어날 수 있습니다.

벡터 데이터베이스의 스토리지 및 인덱싱 전략

스토리지 전략

  • 플레인(Plain): 데이터를 인라인으로 저장.
  • 익스터널(External): 데이터 압축 없이 별도 테이블에 저장.
  • 익스텐디드(Extended): 압축하여 별도 테이블에 저장.

추천 전략: 플레인 또는 익스터널 방식을 활용.

인덱싱 전략

벡터 데이터베이스에서 사용되는 주요 인덱스는 다음과 같습니다.

1. HNSW 인덱스

  • 특징: 그래프 기반의 인덱싱으로 다수의 레이어를 활용.
  • 구성 파라미터:
    • M: 벡터 간 최대 링크 수.
    • EF Construction: 인덱스 생성 시 근접 이웃 목록 수.
  • 장점: 검색 성능이 뛰어남.
  • 단점: 인덱스 생성 시간이 상대적으로 길 수 있음.

2. IVF Flat 인덱스

  • 특징: K-평균 클러스터링 알고리즘을 활용.
  • 구성 파라미터:
    • List: 클러스터 수.
  • 장점: 간단한 구조, 검색 속도 빠름.
  • 단점: 데이터 수정 시 재구축 필요.

벡터 데이터 검색 및 최적화 전략

  1. HNSW 인덱스

    • EF Search 값을 조정하여 검색 정확도와 속도 간 균형을 맞춥니다.
    • 동시 쓰기를 활용해 인덱스 구축 시간을 단축할 수 있습니다.
  2. IVF Flat 인덱스

    • Probe 값을 조정하여 검색 대상 리스트 수를 최적화합니다.
    • 병렬 스캔 기능을 활용해 구축 시간을 단축합니다.

AWS에서 벡터 데이터베이스 활용의 장점

  1. 확장성: 대규모 데이터 처리가 가능.
  2. 속도: 고성능 인덱싱을 통해 빠른 검색.
  3. 통합성: 기존 AWS 서비스와 원활하게 통합.

따라 해보기: 벡터 데이터 처리 프롬프트

아래는 AWS 환경에서 벡터 데이터 처리를 위해 사용할 수 있는 주요 프롬프트입니다. 여러분도 직접 실행하며 실습해 보세요.

데이터 임베딩 예시

aws s3 cp data.pdf s3://your-bucket/
python embed_data.py --input data.pdf --output embedding.json

벡터 데이터 저장

CREATE TABLE vector_data (
    id SERIAL PRIMARY KEY,
    embedding VECTOR(128)
);

검색 쿼리

SELECT id, similarity_score
FROM vector_data
ORDER BY similarity(embedding, query_embedding) DESC
LIMIT 10;

반응형

'AWS Cloud' 카테고리의 다른 글

AWS Lambda Scheduler serverless.yml  (0) 2020.04.08
AWS Parameter Store 와 Serverless Framework  (0) 2020.04.08
Serverless Setting  (0) 2020.04.08