使用 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 脱敏(自动去除个人信息)和拒绝话题(定义拒绝回答的话题)。 如需系统学习生成式 AI,可参考相关书籍(Amazon)。
Knowledge Bases 的费用
Knowledge Bases 的费用由文档索引化(向量化)和查询两部分构成。向量化按所使用的嵌入模型(Titan Embeddings V2 每 1,000 token 约 0.00002 美元)计费。查询时除嵌入模型费用外,还产生回答生成所用 LLM(Claude 3 Haiku 每 1,000 输入 token 约 0.00025 美元)的费用。使用 OpenSearch Serverless 作为向量存储时,OCU(OpenSearch Compute Unit)的按时计费(每 OCU 约 0.24 美元/小时)是主要成本因素。可选择 Pinecone 或 Aurora PostgreSQL pgvector 作为替代向量存储来优化成本。
总结
Bedrock Knowledge Bases 是以托管方式实现 RAG 模式的服务。自动索引 S3 上的文档,通过 RetrieveAndGenerate API 整合检索与生成。通过优化分块策略和应用 Guardrails,可构建准确且安全的 RAG 应用。