将 S3 Vectors 与 Amazon Bedrock 知识库结合使用
注意
适用于 Amazon Simple Storage Service 的 Amazon S3 Vectors 为预览版,可能会发生变化。
S3 Vectors 与 Amazon Bedrock 知识库
有关将 Amazon Bedrock 嵌入模型与 S3 Vectors 操作集成的高级 CLI 命令的更多信息,请参阅。
集成概述
在 Amazon Bedrock 中创建知识库时,可以选择 S3 Vectors 作为向量存储。此集成提供以下内容:
-
对于使用大型向量数据集的 RAG 应用程序,可节省成本。
-
与 Amazon Bedrock 的完全托管式 RAG 工作流程无缝集成。
-
由 Amazon Bedrock 服务处理的自动向量管理。
-
知识库检索操作的查询延迟为亚秒级。
Amazon Bedrock 知识库提供了完全托管式的端到端 RAG 工作流程。使用 S3 Vectors 创建知识库时,Amazon Bedrock 自动从 S3 数据来源获取数据,将内容转换为文本块,生成嵌入,并将其存储在向量索引中。然后,可以查询知识库,并根据从源数据中检索的分块生成响应。
何时使用此集成
当需要以下各项时,可考虑将 S3 Vectors 与 Amazon Bedrock 知识库结合使用:
-
经济高效的向量存储,适用于亚秒级查询延迟可满足应用程序要求的大型数据集。
-
基于文本和图像的文档检索,适用于搜索手册、策略和可视化内容等使用案例。
-
RAG 应用程序,优先考虑存储成本优化而不是超低延迟响应。
-
托管式向量操作,而无需直接学习 S3 Vectors API 操作:可以继续使用熟悉的 Amazon Bedrock 界面。
-
长期向量存储,具有 Amazon S3 的耐久性和可扩展性
这种集成非常适合于要构建 RAG 应用程序的组织,这些应用程序需要搜索写入的内容和图像并从中提取见解,其中 S3 Vectors 的成本优势与可接受的查询性能要求相一致。
支持的嵌入模型
S3 Vectors 与 Amazon Bedrock 知识库的集成支持以下嵌入模型:
-
amazon.titan-embed-text-v2:0:适用于基于文本的嵌入
-
amazon.titan-embed-image-v1:适用于图像嵌入和多模态嵌入
-
cohere.embed-english-v3:适用于多语言和专业的文本嵌入
先决条件和权限
在使用 S3 Vectors 创建知识库之前,请确保您具备以下各项:
-
适用于 S3 Vectors 和 Amazon Bedrock 服务的相应 IAM 权限。有关适用于 S3 Vectors 的 IAM 权限的更多信息,请参阅 S3 Vectors 中的身份和访问权限管理。有关 Amazon Bedrock 知识库服务角色访问 S3 Vectors 的 IAM 权限的更多信息,请参阅《Amazon Bedrock User Guide》中的 Permissions to access your vector store in Amazon S3 Vectors。
-
准备好纳入知识库的源文档。
-
了解嵌入模型要求。
设置安全配置时,可以选择一个 IAM 角色,该角色可为 Amazon Bedrock 提供访问所需 AWS 服务的权限。可以让 Amazon Bedrock 创建服务角色,也可以使用您自己的自定义角色。如果使用自定义角色,请配置向量存储桶策略,该策略将向量存储桶和向量索引的访问权限限制为该自定义角色。
有关所需权限和 IAM 角色的详细信息,请参阅《Amazon Bedrock User Guide》中的 Create a service role for Amazon Bedrock Knowledge Bases。服务角色还必须具有对 S3 Vectors 和 AWS KMS API 操作的权限。
使用 S3 Vectors 创建知识库
可以通过两种方法创建使用 S3 Vectors 的知识库。
方法一:使用 Amazon Bedrock 控制台
在 Amazon Bedrock 控制台中创建知识库时,可以选择“S3 向量存储桶”作为向量存储选项。您有两个设置选项:
-
快速创建新的向量存储:Amazon Bedrock 创建 S3 向量存储桶和向量索引,并使用所需的设置对它们进行配置。默认情况下,向量存储桶使用具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)进行加密。可以选择使用 AWS KMS 对存储桶进行加密。有关在控制台中快速创建新的向量存储的更多信息,请参阅《Amazon Bedrock User Guide》中的 Create a knowledge base by connecting to a data source in Amazon Bedrock Knowledge Bases。
-
选择您创建的向量存储:从您的账户中选择您之前创建的现有 S3 向量存储桶和向量索引。有关在 Amazon Bedrock 知识库控制台中创建 S3 向量存储桶和向量索引的更多信息,请参阅《Amazon Bedrock User Guide》的 Prerequisites for using a vector store you created for a knowledge base 中的“S3 Vectors”选项卡。
有关详细的分步说明,请参阅《Amazon Bedrock User Guide》中的 Create a knowledge base by connecting to a data source in Amazon Bedrock Knowledge Bases。
方法二:使用 Amazon SageMaker 融通式合作开发工作室
还可以通过 Amazon SageMaker AI 融通式合作开发工作室
SageMaker AI 融通式合作开发工作室中的 Amazon Bedrock
有关将 S3 Vectors 与 SageMaker AI 融通式合作开发工作室中的 Amazon Bedrock 结合使用的信息,请参阅《SageMaker AI Unified Studio User Guide》中的 Add a data source to your Amazon Bedrock app。
管理和查询知识库
数据同步和管理
Amazon Bedrock 知识库提供摄取作业操作,以使数据来源和向量嵌入保持同步。同步数据来源时,Amazon Bedrock 扫描每个文档,并验证是否已将其编入向量存储的索引中。也可以使用 IngestKnowledgeBaseDocuments 操作将文档直接编入向量存储的索引中。最佳实践是为每个知识库创建单独的向量存储,以确保数据同步。
删除知识库或数据来源资源时,Amazon Bedrock 提供两种数据删除策略:Delete
(默认)和 Retain
。如果选择 Delete
策略,则会自动删除向量索引和向量存储桶中的向量。
查询和检索
设置知识库后,可以执行以下操作:
-
使用 Retrieve API 操作从源数据中检索分块。
-
使用 RetrieveAndGenerate API 操作根据检索到的分块生成响应。
-
直接在 Amazon Bedrock 控制台中测试查询。
返回的响应中附有对原始源数据的引用。
限制
将 S3 Vectors 与 Amazon Bedrock 知识库结合使用时,应了解以下限制:
-
仅限语义搜索:S3 Vectors 支持语义搜索,但不支持混合搜索功能。
-
S3 Vectors 大小限制:每个向量都有总元数据大小限制和可筛选元数据的大小限制,这可能会限制自定义元数据和筛选选项。有关每个向量的元数据和可筛选元数据大小限制的更多信息,请参阅限制和局限性。
-
分块策略约束:由于元数据大小限制,仅限于将内容拆分为最多 500 个令牌的分块的模型。
-
仅限浮点向量:不支持二进制向量嵌入。
有关使用 Amazon Bedrock 知识库的全面指导,请参《Amazon Bedrock User Guide》中的 Retrieve data and generate AI responses with Amazon Bedrock Knowledge Bases。