使用 Aurora PostgreSQL 作为 Amazon Bedrock 的知识库
可以将 Aurora PostgreSQL 数据库集群作为 Amazon Bedrock 知识库。有关更多信息,请参阅在 Amazon Aurora 中创建向量存储。知识库会自动获取存储在 Amazon S3 存储桶中的非结构化文本数据,将其转换为文本块和向量,然后存储在 PostgreSQL 数据库中。借助生成式人工智能应用程序,您可以使用 Amazon Bedrock 的代理来查询存储在知识库中的数据,并使用这些查询的结果来增强基础模型提供的答案。此工作流程称为检索增强生成(RAG)。有关 RAG 的更多信息,请参阅检索增强生成(RAG)。
有关使用 Aurora PostgreSQL 通过 RAG 构建生成式人工智能应用程序的详细信息,请参阅此博客文章
主题
先决条件
要使用 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
在 Amazon Secrets Manager 中管理的用户。有关更多信息,请参阅使用 Amazon Aurora 和 Amazon 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。有关支持的版本的更多信息,请参阅使用 RDS 数据 API。
确保记下 Aurora PostgreSQL 数据库集群的 Amazon 资源名称(ARN)。您需要使用它来配置数据库集群,以便与 Amazon Bedrock 结合使用。有关更多信息,请参阅 Amazon 资源名称(ARN)。
连接到数据库并安装 pgvector
可以使用任何连接实用程序连接到 Aurora PostgreSQL。有关这些实用程序的更多详细信息,请参阅连接到 Amazon Aurora PostgreSQL 数据库集群。或者,可以使用 RDS 控制台查询编辑器来运行查询。您需要一个启用了 RDS 数据 API 的 Aurora 数据库集群,才能使用查询编辑器。
-
以主用户身份登录数据库并设置 pgvector。如果未安装该扩展,请使用以下命令:
CREATE EXTENSION IF NOT EXISTS vector;
使用支持 HNSW 索引的
pgvector
0.5.0 及更高版本。有关更多信息,请参阅支持 HNSW 索引的 pgvector 0.5.0 版本。 -
使用以下命令检查已安装的
pg_vector
版本:SELECT extversion FROM pg_extension WHERE extname='vector';
设置数据库对象和权限
创建 Bedrock 可以用来查询数据的特定架构。使用以下命令创建架构:
CREATE SCHEMA bedrock_integration;
创建 Bedrock 可用来查询数据库的新角色。使用以下命令创建新角色:
CREATE ROLE bedrock_user WITH PASSWORD '
password
' LOGIN;注意
记下此密码,因为您以后需要这一密码来创建 Secrets Manager 密码。
如果您使用的是
psql
客户端,则使用以下命令来创建新角色:CREATE ROLE bedrock_user LOGIN; \PASSWORD
password
;向
bedrock_user
授予管理bedrock_integration
架构的权限。这将提供在架构中创建表或索引的功能。GRANT ALL ON SCHEMA bedrock_integration to bedrock_user;
以
bedrock_user
身份登录并在bedrock_integration schema
中创建表。CREATE TABLE bedrock_integration.bedrock_kb (id uuid PRIMARY KEY, embedding vector(
n
), chunks text, metadata json);此命令将在
bedrock_integration
架构中创建包含 Titan 嵌入的bedrock_kb
表。将
vector(
数据类型中的 n 替换为对应您正在使用的嵌入模型的合适大小。使用以下建议来帮助选择大小:n
)对于 Titan v2 模型,使用
vector(1024)
、vector(512)
或vector (256)
。要了解更多信息,请参阅 Amazon Titan Embeddings Text。对于 Titan v1.2 模型,使用
vector(1536)
。要了解更多信息,请参阅 Amazon Titan Multimodal Embeddings G1。对于 Cohere 嵌入模型,使用
vector(1024)
。要了解更多信息,请参阅 Cohere Embed models。对于 Cohere Embed Multilingual v3,使用
vector(1024)
。
建议您使用余弦运算符创建索引,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);
在 Secrets Manager 中创建密钥
Secrets Manager 可让您存储 Aurora 凭证,这样它们就可以安全地传输到应用程序。如果您在创建 Aurora PostgreSQL 数据库集群时未选择 Amazon Secrets Manager 选项,则可以立即创建密钥。有关创建 Amazon Secrets Manager 数据库密钥的更多信息,请参阅 Amazon Secrets Manager database secret。
在 Bedrock 控制台中创建知识库
在准备将 Aurora PostgreSQL 用作知识库的向量存储时,必须收集您需要提供给 Amazon Bedrock 控制台的以下详细信息。
Amazon Aurora 数据库集群 ARN – 数据库集群的 ARN。
密钥 ARN – 数据库集群的 Amazon Secrets Manager 密钥的 ARN。
数据库名称 – 数据库的名称。例如,可以使用默认数据库
postgres
。表名称 - 建议您在创建表时,使用类似于以下内容的命令提供架构限定名称:
CREATE TABLE bedrock_integration.bedrock_kb;
此命令将在
bedrock_integration
架构中创建bedrock_kb
表。创建表时,请务必使用指定的列和数据类型对表进行配置。可以使用您首选的列名称,而不使用表中列出的列名称。请记得记下您在知识库设置过程中选择的以供参考的名称。
列名称 数据类型 描述 id UUID(主键) 包含每条记录的唯一标识符。
chunks 文本 包含来自数据来源的原始文本块。
嵌入 Vector 包含数据来源的向量嵌入。
metadata JSON 包含执行来源归因以及启用数据摄取和查询所需的元数据。
利用这些详细信息,您现在可以在 Bedrock 控制台中创建一个知识库。有关设置向量索引和创建知识库信息的更多详细信息,请参阅 Create a vector store in Amazon Aurora 和 Create a vector store in Amazon Aurora。
将 Aurora 添加为知识库后,您现在可以提取数据来源来进行搜索和查询。有关更多信息,请参阅 Ingest your data sources into the Knowledge Base。