使用 Amazon Bedrock Knowledge Bases 构建 RAG 应用 - 检索增强生成的实现

自动索引 S3 上的文档,通过 RetrieveAndGenerate API 整合检索与生成。介绍分块策略的选择以及通过 Guardrails 确保安全性的方法。

RAG 模式与 Knowledge Bases 概述

RAG(Retrieval-Augmented Generation)是用外部知识增强大语言模型(LLM)回答的模式。LLM 单独无法回答训练数据中不包含的最新信息或企业内部特有信息,而 RAG 通过检索与问题相关的文档,将其内容作为上下文传递给 LLM,从而生成准确且有依据的回答。Bedrock Knowledge Bases 以托管方式提供这种 RAG 模式,整合了文档索引化、向量检索和 LLM 回答生成。

数据源与分块策略

指定 S3 存储桶作为数据源,自动索引 PDF、HTML、Markdown、Word、CSV 等文档。文档被分割为块(片段),每个块被向量化后存储到向量存储中。分块策略是直接影响检索精度的重要设计决策。固定大小分块按指定字符数均匀分割,简单但可能切断上下文。语义分块基于句子的语义关联进行分割,在保持上下文方面表现优异。层次化分块采用父块(大范围上下文)和子块(详细信息)的两层结构,检索时通过子块匹配,向 LLM 传递父块的广泛上下文以提高精度。

API 使用方法与 Guardrails 集成

RetrieveAndGenerate API 接收问题文本,在一次 API 调用中完成相关文档检索和 LLM 回答生成。响应中包含生成的回答以及作为回答依据的源文档引用信息(S3 URI、相关段落)。Retrieve API 仅执行检索,用于在应用端加工获取的块后再传递给 LLM 的自定义流程。将 Guardrails 应用于 Knowledge Bases 后,在回答生成时会自动应用内容过滤(阻止不当内容)、PII 脱敏(自动去除个人信息)和拒绝话题(定义拒绝回答的话题)。

Knowledge Bases 的费用

Knowledge Bases 的费用由文档索引化(向量化)和查询两部分构成。向量化按所使用的嵌入模型(Titan Embeddings V2 每 1,000 token 约 0.00002 美元)计费(截至 2026 年 8 月)。查询时除嵌入模型费用外,还产生回答生成所用 LLM(Claude 3 Haiku 每 1,000 输入 token 约 0.00025 美元)的费用。使用 OpenSearch Serverless 作为向量存储时,OCU(OpenSearch Compute Unit)的按时计费(每 OCU 约 0.24 美元/小时)是主要成本因素。可选择 Pinecone 或 Aurora PostgreSQL pgvector 作为替代向量存储来优化成本。

向量存储的选择

RAG 的检索性能和成本取决于如何选择保存向量的存储。使用托管的检索基础设施,构建的工作量少,可以立即开始,但会按运行时间产生费用。如果采用在现有关系型数据库中加入向量扩展的方式,就可以把运维集中到现有基础设施上,数据量为小到中等规模时,更容易控制成本。还有选择外部专用向量数据库这一选项。根据数据量、检索频率和可接受的运维负担,选择符合需求的存储,是构建高性价比 RAG 的起点。

检索精度的改善

RAG 的回答质量取决于能否准确取出相关的块。为块添加元数据,使其可以按文档类型或日期进行筛选,就能防止无关信息混入。将基于语义相近度的向量检索与查看关键词是否一致的检索结合起来,对专有名词和型号这类严格的词语也能很好地应对。如果插入重新排序,按相关度调整获取的候选的先后,就能把真正相关的内容集中到前面。提高检索阶段的精度,直接关系到最终回答的准确性。

回答质量与引用的运用

RAG 的一大优势是能够展示作为回答依据的出处。在生成的回答中附上所参考文档的位置和相关段落,用户就能自己确认内容的真伪。这是针对幻觉(说出看似合理却错误的内容)的有效对策。检索未能得到充分依据时,不勉强回答、而是返回“不知道”的设计也是重要的。定期评估回答的准确性,并建立发现和改进错误多的模式的机制,就能将其培养成值得信赖的 RAG 应用。

数据的更新与运维

知识库只有跟随源数据的变化,才能保持其价值。S3 中的文档更新后,同步索引以反映最新状态。如果不是全部重建,而是只导入变更部分,就能抑制更新的成本和时间。对于包含敏感信息的文档,结合限制可参阅用户的访问控制,防止内容泄露给没有权限的人。将哪些数据、在何时、向哪个范围的用户公开定为运维规则,就能维持安全且始终新鲜的知识库。

总结

Bedrock Knowledge Bases 是以托管方式实现 RAG 模式的服务。自动索引 S3 上的文档,通过 RetrieveAndGenerate API 整合检索与生成。通过优化分块策略和应用 Guardrails,可构建准确且安全的 RAG 应用。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享