You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Bedrock的CSV知识库中获取准确回答?

AWS Bedrock知识库RAG优化:CSV数据自然语言查询准确性问题

背景

正在开展一项概念验证(POC),目标是让业务开发人员通过自然语言查询客户数据库。采用AWS Bedrock知识库结合S3存储的CSV文件实现检索增强生成(RAG)方案——因无法直接访问数据库,排除了Redshift结构化数据存储知识库,选择上传CSV快照(约1万条记录、数十列,已匿名化PII数据)。但初次搭建后,模型频繁返回错误答案,影响用户信任,遂开展简化测试定位问题。

测试流程

  1. 上传模拟myclients.csv至S3存储桶,数据如下:
Client ID,Client Registration Date,Total Purchases,Service Subscription Start Date,Service Subscription End Date,Support Contact Date,Priority Sales Flag
3556854361,2023-04-27,1065,2025-04-23,2027-04-30,,on
7356544614,2023-03-13,1845,2023-03-13,2024-03-31,2024-07-06,off
3929885536,2022-12-02,982,2022-12-02,2024-12-31,,on
8291623426,2022-12-02,2201,2025-02-21,2027-02-28,,off
6785192202,2022-03-10,1166,2024-03-08,2026-03-31,2025-01-16,off
2802241472,2022-01-11,822,2023-08-10,2025-08-31,,off
  1. 创建带向量存储的Bedrock知识库,数据源选择Amazon S3
  2. 指向目标S3 URI,采用Bedrock默认解析器,设置无分块
  3. 选用Amazon Titan Text Embeddings V2(按需)作为嵌入模型
  4. 新建Amazon OpenSearch Serverless向量存储
  5. 同步数据源,无警告信息

测试结果

  • Cohere Command R查询「有多少客户?」:返回正确(6个)
  • Cohere Command R+查询「有多少客户拥有活跃服务订阅?」(当前日期2025-04-24,实际应为4个):返回错误(5个)
  • Cohere Command R+查询「有多少客户的服务订阅结束日期在2025年4月24日之后?」:返回错误(5个)
  • Anthropic Claude 3 Sonnet查询同一日期问题:返回错误(3个)
  • Anthropic Claude 3 Sonnet查询「最后一个服务订阅何时到期?」:返回正确(2027-04-30)
  • Amazon Titan Text G1 - Premier查询「2023年注册客户的平均服务订阅时长(按开始到结束的天数计算)是多少?」:未给出正确结果,仅返回注册日期

优化建议

1. 调整CSV分块与解析策略

  • 取消「无分块」设置:将整个CSV作为单一文档嵌入会导致检索无法精准定位单条记录,建议按单条记录分块,或按固定行数(如100条)分块,让每条记录的字段与值形成独立嵌入单元。
  • 自定义解析提示:给解析器添加指令,要求将每条记录格式化为结构化文本(如Client ID: 3556854361, Client Registration Date: 2023-04-27...),强化字段与值的对应关系,提升嵌入模型的理解精度。

2. 优化向量检索配置

  • 调整检索返回数量:设置返回所有相关记录,避免计数、统计类查询因缺失数据导致错误计算。
  • 加入前置过滤:在RetrieveAndGenerate调用中,针对日期类查询利用Bedrock过滤功能提前筛选符合时间范围的记录,减少模型处理的数据量。

3. 强化Prompt工程

  • 强制基于检索数据计算:在Prompt中明确指令,如「请严格基于检索到的所有客户记录统计,先列出符合条件的记录再计算数量/平均值」,避免模型脑补数据。
  • 结构化引导复杂计算:针对时长统计类查询,设计分步式Prompt,如「第一步:筛选2023年注册的客户;第二步:计算每个客户的服务订阅时长(结束日期-开始日期的天数);第三步:求平均值」,引导模型按逻辑执行。

4. 适配结构化数据的模型选择

  • 优先选用结构化推理能力强的模型:如Cohere Command R+,并将温度参数设为0,减少随机性;尝试Amazon Titan Text G1 - Express(针对结构化数据优化)或Claude 3 Opus(强推理能力)处理复杂统计查询。

5. 验证嵌入与检索准确性

  • 单独测试检索结果:调用Retrieve接口查看返回文档是否包含所有符合条件的记录(如日期查询应返回4条正确记录),若检索结果缺失,需调整分块或嵌入模型。
  • 切换嵌入模型:尝试Cohere Embed English V3,验证是否能提升结构化数据的检索精准度。

6. 预处理结构化数据

  • 转换为JSON Lines格式:将CSV转为每条记录对应一个JSON对象的格式,Bedrock解析器对JSON结构的处理更友好,能更好保留字段关系。
  • 预计算衍生字段:在CSV中提前计算「服务订阅时长(天数)」等字段,避免模型生成阶段因日期计算出错。

内容的提问来源于stack exchange,提问作者dave thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:04:57