

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon Bedrock 知识库的运作方式
<a name="kb-how-it-works"></a>

Amazon Bedrock 知识库可以帮助您利用检索增强生成（RAG），后者是一种常用技术，可从数据存储中提取信息来增强大型语言模型（LLM）生成的响应。如果使用数据来源建立知识库，应用程序就可以查询该知识库以返回信息，通过直接引用数据来源或使用根据查询结果生成的自然响应来回答查询。

借助 Amazon Bedrock 知识库，您可以使用在查询知识库时接收到的上下文来丰富自己构建的应用程序。通过摆脱繁重的管道构建工作并为您提供开箱即用的 RAG 解决方案来缩短应用程序的构建时间，从而加快上市速度。添加知识库还可以提高成本效益，因为无需持续训练模型即可利用您的私有数据。

下面的示意图说明了 RAG 的执行方法。知识库可以通过自动执行 RAG 的设置和实施中的几个步骤来简化这个过程。

**预处理非结构化数据**

为了能够有效检索非结构化私有数据（即结构化数据存储中不存在的数据），通常的做法是先将数据转换为文本并将其拆分为可管理的部分。然后将这些部分或分块转换为嵌入内容并写入向量索引，同时保持与原文档的映射。这些嵌入内容用于确定查询和数据来源文本之间的语义相似性。下图说明了如何预处理向量数据库的数据。

![预处理数据以实现检索增强生成](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/rag-preprocess.png)


向量嵌入是一系列数字，用于代表每个文本块。模型将每个文本块转换为一系列数字（称为向量），以便能够以数学方式对文本进行比较。这些向量可以是浮点数（float32），也可以是二进制数。默认情况下，Amazon Bedrock 支持的大多数嵌入模型都使用浮点向量。但是，有些模型支持二进制向量。如果选择二进制嵌入模型，还必须选择支持二进制向量的模型和向量存储。

每个维度仅使用 1 位的二进制向量没有浮点（float32）向量那么昂贵的存储成本，后者每个维度使用 32 位。但是，二进制向量在表示文本时的精度不如浮点向量。

以下示例用三种表示形式显示了一段文本：


****  

| 表示 | 值 | 
| --- | --- | 
| 文本 | “Amazon Bedrock 采用来自领先的 AI 公司和 Amazon 的高性能基础模型。” | 
| 浮点向量 | [0.041..., 0.056..., -0.018..., -0.012..., -0.020..., ...] | 
| 二进制向量 | [1,1,0,0,0, ...] | 

**运行时执行**

在运行时，使用嵌入模型将用户的查询转换为向量。然后，通过将文档向量与用户查询向量进行比较来查询向量索引，查找与用户查询在语义上相似的数据块。最后，使用从向量索引中检索到的数据块中的附加上下文来增强用户提示。接下来，将提示和附加上下文一起发送给模型，以便为用户生成响应。下图说明了 RAG 如何在运行时运行以增强对用户查询的响应。

![运行时检索增强生成](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/rag-runtime.png)


要详细了解如何将数据转换为知识库、如何在设置知识库后查询知识库，以及在摄取期间可以应用于数据来源的自定义设置，请参阅以下主题：

**Topics**
+ [将数据转换为知识库](kb-how-data.md)
+ [使用 Amazon Bedrock 知识库从数据来源检索信息](kb-how-retrieval.md)
+ [自定义知识库](kb-how-customization.md)