使用 Aurora PostgreSQL 作為 Amazon Bedrock 的知識庫 - Amazon Aurora

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

使用 Aurora PostgreSQL 作為 Amazon Bedrock 的知識庫

您可以使用 Aurora PostgreSQL 資料庫叢集作為 Amazon Bedrock 的知識庫。如需詳細資訊,請參閱在 Amazon Aurora 中建立向量存放區。知識庫會自動擷取在 Amazon S3 儲存貯體中存放的非結構化文字資料、將其轉換為文字區塊和向量,並將其存放在 PostgreSQL 資料庫中。透過生成式 AI 應用程式,您就可以使用 Amazon Bedrock 代理人,查詢在知識庫中存放的資料,並使用那些查詢的結果來增強基礎模型提供的答案。此工作流程稱為檢索增強生成 (RAG)。如需 RAG 的詳細資訊,請參閱檢索增強生成 (RAG)

如需使用 Aurora PostgreSQL 透過 RAG 建置生成式 AI 應用程式的詳細資訊,請參閱此部落格文章

先決條件

熟悉下列先決條件,以使用 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 版

  • RDS 資料 API

  • 在 AWS Secrets Manager 中管理的使用者。如需更多詳細資訊,請參閱 使用 Amazon Aurora 和 進行密碼管理 AWS Secrets Manager

準備將 Aurora PostgreSQL 用作為 Amazon Bedrock 知識庫

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

建立和設定 Aurora PostgreSQL

若要使用 Aurora PostgreSQL 資料庫叢集設定 Amazon Bedrock,您必須先建立 Aurora PostgreSQL 資料庫叢集,並記下使用 Amazon Bedrock 進行設定的重要欄位。如需建立 Aurora PostgreSQL 資料庫叢集的詳細資訊,請參閱建立 Aurora PostgreSQL 資料庫叢集並與之連線

  • 在建立 Aurora PostgreSQL 資料庫叢集時啟用資料 API。如需有關支援版本的詳細資訊,請參閱使用 Amazon RDS 資料 API

  • 請務必記下 Aurora PostgreSQL 資料庫叢集的 Amazon Resource Name (ARN)。您需要此資訊來設定資料庫叢集,以便與 Amazon Bedrock 搭配使用。如需詳細資訊,請參閱 Amazon Resource Name (ARN)

連線至資料庫並安裝 pgvector

您可以使用任何連線公用程式連線至 Aurora PostgreSQL。如需這些公用程式的詳細資訊,請參閱連接至 Amazon Aurora PostgreSQL 資料庫叢集。或者,您可以使用 RDS 主控台查詢編輯器來執行查詢。您需要已啟用 RDS 資料 API 的 Aurora 資料庫叢集,才能使用查詢編輯器。

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

    CREATE EXTENSION IF NOT EXISTS vector;

    使用支援 HNSW 索引的 pgvector 0.5.0 和更高版本。如需詳細資訊,請參閱使用 HNSW 索引的 pgvector 第 0.5.0 版

  2. 若要檢查已安裝的 pg_vector 版本,請使用下列命令:

    SELECT extversion FROM pg_extension WHERE extname='vector';

設定資料庫物件和權限

  1. 建立 Bedrock 可用來查詢資料的特定結構描述。使用以下命令來建立結構描述:

    CREATE SCHEMA bedrock_integration;
  2. 建立 Bedrock 可用來查詢資料庫的新角色。使用以下命令來建立新角色:

    CREATE ROLE bedrock_user WITH PASSWORD 'password' LOGIN;
    注意

    請記下此密碼,因為稍後您需要此資訊來建立 Secrets Manager 密碼。

    如果您使用的是 psql 用戶端,請使用下列命令來建立新角色:

    CREATE ROLE bedrock_user LOGIN; \PASSWORD password;
  3. 授予管理 bedrock_integration 結構描述的 bedrock_user 許可。這將提供在結構描述中建立資料表或索引的功能。

    GRANT ALL ON SCHEMA bedrock_integration to bedrock_user;
  4. 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 嵌入文字

    • 若是 Titan 第 1.2 版模型,使用 vector(1536)。若要進一步了解,請參閱 Amazon Titan 多模態嵌入 G1

    • 若是 Cohere Embed 模型,使用 vector(1024)。若要進一步了解,請參閱 Cohere Embed 模型

    • 若是 Cohere Embed Multilingual 第 3 版,使用 vector(1024)

    前四欄為必要欄位。對於中繼資料處理,Bedrock 會將中繼資料檔案中的資料寫入 custom_metadata 欄。如果您打算使用中繼資料和篩選條件,建議您建立此欄。如果您未建立 custom_metadata 欄,請在開始擷取之前,為資料表中的每個中繼資料屬性新增個別欄。如需詳細資訊,請參閱設定和自訂查詢和回應產生

  5. 請依照下列步驟建立 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 中建立秘密

Secrets Manager 可讓您存放 Aurora 憑證,以便安全地將這些憑證傳輸到應用程式。如果您在建立 Aurora PostgreSQL 資料庫叢集時未選擇 AWS 秘密管理員選項,則現在可以建立秘密。如需建立 AWS Secrets Manager 資料庫秘密的詳細資訊,請參閱 AWS Secrets Manager 資料庫秘密

在 Bedrock 主控台中建立知識庫

在準備將 Aurora PostgreSQL 用作為知識庫向量存放區時,您必須收集下列詳細資訊,您需要將這些資訊提供給 Amazon Bedrock 主控台。

  • Amazon Aurora 資料庫叢集 ARN:資料庫叢集的 ARN。

  • 秘密 ARN:資料庫叢集之 AWS Secrets Manager 金鑰的 ARN。

  • 資料庫名稱:資料庫名稱。例如,您可以使用預設資料庫 postgres

  • 資料表名稱:我們建議您在使用與下列類似的命令建立資料表時,提供結構描述的完整名稱:

    CREATE TABLE bedrock_integration.bedrock_kb;

    此命令將在 bedrock_integration 結構描述中建立 bedrock_kb 資料表。

  • 建立資料表時,請務必使用指定的欄和資料類型來設定資料表。您可以使用偏好的欄名稱,而不是資料表中列出的欄名稱。請務必記下您選擇的名稱,以便在知識庫設定期間作為參考。

    欄名稱 資料類型 描述
    id UUID 主索引鍵

    包含每個記錄的唯一識別碼。

    區塊 文字

    包含來自資料來源的原始文字區塊。

    內嵌項目 向量

    包含資料來源的向量內嵌項目。

    中繼資料 JSON

    包含執行來源屬性及啟用資料擷取和查詢所需的中繼資料。

    custom_metadata JSONB

    (選用) 定義 Amazon Bedrock 從資料來源寫入中繼資料詳細資訊的目標欄。

您現在可以透過這些詳細資訊,在 Bedrock 主控台中建立知識庫。如需設定向量索引和建立知識庫資訊的更多詳細資訊,請參閱在 Amazon Aurora 中建立向量存放區在 Amazon Aurora 中建立向量存放區

新增 Aurora 作為知識庫後,您現在就可以擷取資料來源以進行搜尋和查詢。如需詳細資訊,請參閱將資料來源擷取至知識庫