

# Aurora PostgreSQL을 Amazon Bedrock의 지식 기반으로 사용
<a name="AuroraPostgreSQL.VectorDB"></a>

Aurora PostgreSQL DB 클러스터를 Amazon Bedrock용 지식 기반으로 사용할 수 있습니다. 자세한 내용은 [Amazon Aurora에서 벡터 저장소 생성](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)을 참조하세요. 지식 기반은 Amazon S3 버킷에 저장된 비정형 텍스트 데이터를 자동으로 가져와 텍스트 청크 및 벡터로 변환하고 PostgreSQL 데이터베이스에 저장합니다. 생성형 AI 애플리케이션을 사용하면 Amazon Bedrock용 에이전트를 사용하여 지식 기반에 저장된 데이터를 쿼리하고 이러한 쿼리의 결과를 사용하여 기본 모델에서 제공하는 답변을 보강할 수 있습니다. 이 워크플로를 검색 증강 생성(RAG)이라고 합니다. RAG에 대한 자세한 내용은 [검색 증강 생성(RAG)](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html)을 참조하세요.

Aurora PostgreSQL을 사용하여 RAG를 통한 생성형 AI 애플리케이션을 구축하는 방법에 대한 자세한 내용은 이 [블로그 게시물](https://aws.amazon.com/blogs/database/build-generative-ai-applications-with-amazon-aurora-and-knowledge-bases-for-amazon-bedrock/)을 참조하세요.

**Topics**
+ [사전 조건](#AuroraPostgreSQL.VectorDB.Prereq)
+ [Aurora PostgreSQL을 Amazon Bedrock의 지식 기반으로 사용하도록 준비](#AuroraPostgreSQL.VectorDB.PreparingKB)
+ [Bedrock 콘솔에서 지식 기반 만들기](#AuroraPostgreSQL.VectorDB.CreatingKB)
+ [Amazon Bedrock용 Aurora PostgreSQL 지식 기반 빠른 생성](AuroraPostgreSQL.quickcreatekb.md)

## 사전 조건
<a name="AuroraPostgreSQL.VectorDB.Prereq"></a>

Aurora PostgreSQL 클러스터를 Amazon Bedrock용 지식 기반으로 사용하려면 다음 사전 조건을 숙지하세요. 개괄적인 수준에서 Bedrock과 함께 사용할 수 있도록 다음 서비스를 구성해야 합니다.
+ Amazon Aurora PostgreSQL DB 클러스터는 다음 버전 중 하나로 생성됩니다.
  + 16.1 이상의 모든 버전
  + 15.4 이상 버전
  + 14.9 이상 버전
  + 13.12 이상 버전
  + 12.16 이상 버전
**참고**  
대상 데이터베이스에서 `pgvector` 확장을 활성화하고 버전 0.5.0 이상을 사용해야 합니다. 자세한 내용은 [HNSW 인덱싱이 포함된 pgvector v0.5.0](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-aurora-postgresql-pgvector-v0-5-0-hnsw-indexing/)을 참조하세요.
+ RDS Data API
+ AWS Secrets Manager에서 사용자가 관리합니다. 자세한 내용은 [Amazon Aurora 및 AWS Secrets Manager를 통한 암호 관리](rds-secrets-manager.md) 섹션을 참조하세요.

## Aurora PostgreSQL을 Amazon Bedrock의 지식 기반으로 사용하도록 준비
<a name="AuroraPostgreSQL.VectorDB.PreparingKB"></a>

아래 섹션에 설명된 단계에 따라 Amazon Bedrock용 지식 기반으로 사용할 Aurora PostgreSQL을 준비하세요.

### Aurora PostgreSQL 생성 및 구성
<a name="AuroraPostgreSQL.VectorDB.CreatingDBC"></a>

Aurora PostgreSQL DB 클러스터를 사용하여 Amazon Bedrock을 구성하려면 먼저 Aurora PostgreSQL DB 클러스터를 생성하고 Amazon Bedrock으로 구성하는 데 필요한 중요 필드를 기록해 두어야 합니다. Aurora PostgreSQL DB 클러스터 생성에 대한 자세한 정보는 [Aurora PostgreSQL DB 클러스터 생성 및 연결](CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.md) 섹션을 참조하세요.
+ Aurora PostgreSQL DB 클러스터를 생성하는 동안 Data API를 활성화합니다. 지원되는 버전에 대한 자세한 내용은 [Amazon RDS Data API 사용](data-api.md) 섹션을 참조하세요.
+ Aurora PostgreSQL DB 클러스터의 Amazon 리소스 이름(ARN)을 기록해 둡니다. Amazon Bedrock과 함께 사용할 DB 클러스터를 구성하는 데 필요합니다. 자세한 내용은 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.ARN.html)을 참조하세요.

### 데이터베이스에 연결 및 pgvector 설치
<a name="AuroraPostgreSQL.VectorDB.ConnectingDB"></a>

모든 연결 유틸리티를 사용하여 Aurora PostgreSQL에 연결할 수 있습니다. 이러한 유틸리티에 대한 자세한 내용은 [Amazon Aurora PostgreSQL DB 클러스터에 연결](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL) 섹션을 참조하세요. 또는 RDS 콘솔 쿼리 편집기를 사용하여 쿼리를 실행할 수 있습니다. 쿼리 편집기를 사용하려면 RDS Data API가 활성화된 Aurora DB 클러스터가 필요합니다.

1. 마스터 사용자로 데이터베이스에 로그인하고 pgvector를 설정합니다. 확장이 설치되지 않은 경우 다음 명령을 사용하세요.

   ```
   CREATE EXTENSION IF NOT EXISTS vector;
   ```

   HNSW 인덱싱을 지원하는 `pgvector` 0.5.0 이상 버전을 사용하세요. 자세한 내용은 [HNSW 인덱싱이 포함된 pgvector v0.5.0](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-aurora-postgresql-pgvector-v0-5-0-hnsw-indexing/)을 참조하세요.

1. 다음 명령을 사용하여 현재 설치된 `pg_vector` 버전을 확인합니다.

   ```
   SELECT extversion FROM pg_extension WHERE extname='vector';
   ```

### 데이터베이스 객체 및 권한 설정
<a name="AuroraPostgreSQL.VectorDB.SetupDBObjects"></a>

1. Bedrock이 데이터를 쿼리하는 데 사용할 수 있는 특정 스키마를 만듭니다. 다음 명령을 실행해 스키마를 생성합니다.

   ```
   CREATE SCHEMA bedrock_integration;
   ```

1. Bedrock이 데이터를 쿼리하는 데 사용할 수 있는 새 역할을 생성합니다. 다음 명령을 실행해 새 역할을 생성합니다.

   ```
   CREATE ROLE bedrock_user WITH PASSWORD 'password' LOGIN;
   ```
**참고**  
추후 Secrets Manager 암호를 생성할 때 필요하므로, 이 암호를 기록해 두세요.

   `psql` 클라이언트를 사용하는 경우 다음 명령을 사용하여 새 역할을 생성합니다.

   ```
   CREATE ROLE bedrock_user LOGIN;
   \PASSWORD password;
   ```

1. `bedrock_integration` 스키마를 관리할 `bedrock_user` 권한을 부여하세요. 이렇게 하면 스키마 내에 표나 인덱스를 생성할 수 있습니다.

   ```
   GRANT ALL ON SCHEMA bedrock_integration to bedrock_user;
   ```

1. `bedrock_user`로 로그인하고 에서 `bedrock_integration schema`에 테이블을 생성합니다.

   ```
   CREATE TABLE bedrock_integration.bedrock_kb (id uuid PRIMARY KEY, embedding vector(n), chunks text, metadata json, custom_metadata jsonb);
   ```

   이 명령은 Titan 임베딩을 사용하여 `bedrock_integration` 스키마에 `bedrock_kb` 테이블을 만듭니다.

   `vector(n)` 데이터 유형의 n을 사용 중인 임베딩 모델의 적절한 차원으로 바꿉니다. 아래 권장 사항을 사용하여 차원을 선택합니다.
   + Titan v2 모델의 경우 `vector(1024)` 또는 `vector(512)` 또는 `vector (256)`를 사용합니다. 자세한 내용은 [Amazon Titan Embeddings Text](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-text.html)를 참조하세요.
   + Titan v1.2 모델의 경우 `vector(1536)`를 사용합니다. 자세한 내용은 [Amazon Titan Multimodal Embeddings G1](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-mm.html)을 참조하세요.
   + Cohere Embed 모델의 경우 `vector(1024)`를 사용합니다. 자세한 내용은 [Cohere Embed models](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-embed.html)을 참조하세요.
   + Cohere Embed Multilingual v3의 경우 `vector(1024)`를 사용합니다.

   처음 4개 열은 필수입니다. 메타데이터 처리를 위해 Bedrock은 메타데이터 파일의 데이터를 `custom_metadata` 열에 씁니다. 메타데이터 및 필터링을 사용하려는 경우 이 열을 만드는 것이 좋습니다. `custom_metadata` 열을 만들지 않는 경우 수집을 시작하기 전에 테이블의 각 메타데이터 속성에 대해 개별 열을 추가합니다. 자세한 내용은 [Configure and customize queries and response generation](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)을 참조하세요.

1. 다음 단계에 따라 Bedrock이 데이터를 쿼리하는 데 사용하는 필수 인덱스를 만듭니다.
   + Bedrock이 데이터를 쿼리하는 데 사용할 수 있는 코사인 연산자를 사용하여 인덱스를 만듭니다.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops);
     ```
   + 병렬 인덱스 구축을 사용하는 `pgvector` 0.6.0 이상 버전의 경우 `ef_construction` 값을 256으로 설정하는 것이 좋습니다.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops) WITH (ef_construction=256);
     ```
   + Bedrock이 텍스트 데이터를 쿼리하는 데 사용할 수 있는 인덱스를 만듭니다.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('simple', chunks));
     ```
   + 사용자 지정 메타데이터에 대한 열을 만든 경우 Bedrock이 메타데이터를 쿼리하는 데 사용할 수 있는 인덱스를 만듭니다.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (custom_metadata);
     ```

### Secrets Manager에서 보안 암호 생성
<a name="AuroraPostgreSQL.VectorDB.SecretManager"></a>

Secrets Manager를 사용하면 Aurora 자격 증명을 저장하여 애플리케이션으로 안전하게 전송할 수 있습니다. Aurora PostgreSQL DB 클러스터를 생성할 때 AWS Secrets Manager 옵션을 선택하지 않았다면, 지금 암호를 생성할 수 있습니다. AWS Secrets Manager 데이터베이스 암호 생성에 대한 자세한 내용은 [AWS Secrets Manager 데이터베이스 암호](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_database_secret.html)를 참조하세요.

## Bedrock 콘솔에서 지식 기반 만들기
<a name="AuroraPostgreSQL.VectorDB.CreatingKB"></a>

지식 기반의 벡터 저장소로 사용할 Aurora PostgreSQL을 준비하는 동안 Amazon Bedrock 콘솔에 제공해야 하는 다음과 같은 세부 정보를 수집해야 합니다.
+ **Amazon Aurora DB 클러스터 ARN** – DB 클러스터의 ARN입니다.
+ **암호 ARN** - DB 클러스터용 AWS Secrets Manager 키의 ARN입니다.
+ **데이터베이스 이름** - 데이터베이스의 이름입니다. 예를 들어, 기본 데이터베이스 *postgres*를 사용할 수 있습니다.
+ **표 이름** – 다음과 유사한 명령을 사용하여 표를 생성할 때 스키마에 적합한 이름을 제공하는 것이 좋습니다.

  ```
  CREATE TABLE bedrock_integration.bedrock_kb;
  ```

  이 명령은 `bedrock_integration` 스키마에 `bedrock_kb` 표를 만듭니다.
+ 표를 생성할 때는 지정된 열과 데이터 유형으로 구성해야 합니다. 표에 나열된 이름 대신 원하는 열 이름을 사용할 수 있습니다. 지식 기반을 설정하는 동안 참조용으로 선택한 이름을 기록해 두세요.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)

이러한 세부 정보를 사용하여 이제 Bedrock 콘솔에서 지식 기반을 만들 수 있습니다. 벡터 인덱스 설정 및 지식 기반 정보 만들기에 대한 자세한 내용은 [Create a vector store in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup-rds.html) 및 [Create a vector store in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-create.html)를 참조하세요.

Aurora를 지식 기반으로 추가한 후에는 이제 검색 및 쿼리를 위해 데이터 소스를 수집할 수 있습니다. 자세한 내용은 [Ingest your data sources into the Knowledge Base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ingest.html)를 참조하세요.