

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Aurora PostgreSQL 作為 Amazon Bedrock 的知識庫
<a name="AuroraPostgreSQL.VectorDB"></a>

您可以使用 Aurora PostgreSQL 資料庫叢集作為 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)
+ [快速建立 Aurora PostgreSQL Amazon Bedrock 知識庫](AuroraPostgreSQL.quickcreatekb.md)

## 先決條件
<a name="AuroraPostgreSQL.VectorDB.Prereq"></a>

熟悉下列先決條件，以使用 Aurora PostgreSQL 叢集作為 Amazon Bedrock 的知識庫。您需要以高層次將下列服務設為與 Bedrock 搭配使用：
+ 在下列任一版本中建立的 Amazon Aurora PostgreSQL 資料庫叢集：
  + 16.1 版和所有更新版本
  + 15.4 和更新版本
  + 14.9 和更新版本
  + 13.12 和更新版本
  + 12.16 和更新版本
**注意**  
您必須在目標資料庫中啟用 `pgvector` 延伸模組，以及使用 0.5.0 版或更新版本。如需詳細資訊，請參閱[使用 HNSW 索引的 pgvector 第 0.5.0 版](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-aurora-postgresql-pgvector-v0-5-0-hnsw-indexing/)。
+ RDS 資料 API
+ 在 中受管的使用者 AWS Secrets Manager。如需詳細資訊，請參閱[使用 Amazon Aurora 和 進行密碼管理 AWS Secrets Manager](rds-secrets-manager.md)。

## 準備將 Aurora PostgreSQL 用作為 Amazon Bedrock 知識庫
<a name="AuroraPostgreSQL.VectorDB.PreparingKB"></a>

請依照以下各節中說明的步驟，準備將 Aurora PostgreSQL 用作為 Amazon Bedrock 知識庫。

### 建立和設定 Aurora PostgreSQL
<a name="AuroraPostgreSQL.VectorDB.CreatingDBC"></a>

若要使用 Aurora PostgreSQL 資料庫叢集設定 Amazon Bedrock，您必須先建立 Aurora PostgreSQL 資料庫叢集，並記下使用 Amazon Bedrock 進行設定的重要欄位。如需建立 Aurora PostgreSQL 資料庫叢集的詳細資訊，請參閱[建立 Aurora PostgreSQL 資料庫叢集並與之連線](CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.md)。
+ 在建立 Aurora PostgreSQL 資料庫叢集時啟用資料 API。如需有關支援版本的詳細資訊，請參閱[使用 Amazon RDS 資料 API](data-api.md)。
+ 請務必記下 Aurora PostgreSQL 資料庫叢集的 Amazon Resource Name (ARN)。您需要此資訊來設定資料庫叢集，以便與 Amazon Bedrock 搭配使用。如需詳細資訊，請參閱 [Amazon Resource Name (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 資料庫叢集](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL)。或者，您可以使用 RDS 主控台查詢編輯器來執行查詢。您需要已啟用 RDS 資料 API 的 Aurora 資料庫叢集，才能使用查詢編輯器。

1. 使用主要使用者登入資料庫並設定 pgvector。如果未安裝延伸模組，請使用下列命令：

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

   使用支援 HNSW 索引的 `pgvector` 0.5.0 和更高版本。如需詳細資訊，請參閱[使用 HNSW 索引的 pgvector 第 0.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 第 2 版模型，使用 `vector(1024)`、`vector(512)` 或 `vector (256)`。若要進一步了解，請參閱 [Amazon Titan 嵌入文字](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-text.html)。
   + 若是 Titan 第 1.2 版模型，使用 `vector(1536)`。若要進一步了解，請參閱 [Amazon Titan 多模態嵌入 G1](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-mm.html)。
   + 若是 Cohere Embed 模型，使用 `vector(1024)`。若要進一步了解，請參閱 [Cohere Embed 模型](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-embed.html)。
   + 若是 Cohere Embed Multilingual 第 3 版，使用 `vector(1024)`。

   前四欄為必要欄位。對於中繼資料處理，Bedrock 會將中繼資料檔案中的資料寫入 `custom_metadata` 欄。如果您打算使用中繼資料和篩選條件，建議您建立此欄。如果您未建立 `custom_metadata` 欄，請在開始擷取之前，為資料表中的每個中繼資料屬性新增個別欄。如需詳細資訊，請參閱[設定和自訂查詢和回應產生](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 資料庫叢集時未選擇 AWS 秘密管理員選項，現在可以建立秘密。如需建立 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 資料庫叢集 ARN**：資料庫叢集的 ARN。
+ **秘密 ARN**：資料庫叢集之 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/zh_tw/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)

您現在可以透過這些詳細資訊，在 Bedrock 主控台中建立知識庫。如需設定向量索引和建立知識庫資訊的更多詳細資訊，請參閱[在 Amazon Aurora 中建立向量存放區](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup-rds.html)和[在 Amazon Aurora 中建立向量存放區](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-create.html)。

新增 Aurora 作為知識庫後，您現在就可以擷取資料來源以進行搜尋和查詢。如需詳細資訊，請參閱[將資料來源擷取至知識庫](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ingest.html)。