实用提示:超越相似度搜索——RAG中的元数据过滤方法
《实用笔记》操作指南:超越相似度搜索——面向 RAG 的元数据过滤方法,附有适用于采用该模式的团队的合同、检查清单以及可直接插入的代码模板。
以下笔记梳理了围绕“超越相似度搜索:基于 Amazon S3 Vectors 的 RAG 元数据过滤”这一主题的实用实现路径。重点在于契约、校验项以及可直接插入代码的占位符,而非动机性阐述。 在完成概览阶段时,首先明确契约内容:所需输入、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续代码修改的规范性。 将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,定义成功校验标准,并杜绝默许的部分完成情况。
过滤器从何而来?
“过滤器位于何处”这一阶段在被视为可度量的对象时效果最佳。在扩大范围之前,先记录一份优秀的处理结果、一个失败案例以及回滚说明。在功能结果旁同时记录处理时间以及令牌或查询成本。提前了解成本情况,可避免在系统从演示环境过渡到共享环境时出现意外费用。应将分块策略与检索策略分开处理,当质量指标发生变化时,修改其中一项不应强制要求重新编写另一项。
User Question +Known Application Context
↓
category = returns
↓
Vector Search
User Question
↓
Query Embedding
↓
Vector Search
↓
Relevant Results
User Question
↓
Query Understanding
↓
returns
↓
Vector Search
↓
category = returns
为向量添加元数据
将“向阶段添加元数据”视为可度量的操作面时,效果最佳。在扩大范围之前,先记录一份优秀的处理结果、一个失败案例以及回滚说明。 配置应与应用程序代码分开。环境文件、密钥存储和功能开关应集中存放于一处,以便操作人员无需查看整个系统结构即可进行审计。 将分块策略与检索策略分开。当质量指标发生变化时,修改其中一项不应强制要求重新编写另一项。
{
"document_name": "Return Policy",
"category": "returns",
"region": "us",
"status": "active",
"chunk_text": "Damaged products can be returned within the allowed return period."
}
搜索过滤
将“搜索过滤”阶段视为可度量的对象时,其效果最佳。在扩大范围之前,需记录一个理想案例、一个失败案例以及回滚说明。 同时记录正常流程与恢复流程。重试机制、人工审核环节以及错误处理都属于产品功能的一部分,而非后续需要补充的内容。 应将分块策略与检索策略分开。当质量指标发生变化时,修改其中一项不应强制要求重新编写另一项。 将“搜索过滤”阶段视为输入与经过验证的输出之间的契约。为相关成果命名,明确成功标准,杜绝默默完成部分任务的情况。
const result = await s3Vectors.send(
new QueryVectorsCommand({
vectorBucketName: "rag-demo-vectors",
indexName: "store-knowledge",
queryVector: {
float32: queryEmbedding,
},
topK: 5,
returnMetadata: true,
returnDistance: true,
})
);
const result = await s3Vectors.send(
new QueryVectorsCommand({
vectorBucketName: "rag-demo-vectors",
indexName: "store-knowledge",
queryVector: {
float32: queryEmbedding,
},
topK: 5,
filter: {
category: "returns",
},
returnMetadata: true,
returnDistance: true,
})
);
(Meaning of the Question + category = returns)
↓
Amazon S3 Vectors
↓
Relevant Return Information
可过滤与不可过滤的元数据
在“可过滤元数据”和“不可过滤元数据”阶段,修改代码之前需明确输入内容、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。应在功能结果旁记录处理时间以及令牌或查询成本。提前显示成本信息,可避免在从演示环境切换到共享环境时出现意外费用。需注明实际作为答案依据的段落;没有引用的话,操作人员就无法区分是幻觉内容还是索引缺失导致的错误。
{
"category": "returns",
"region": "us",
"status": "active"
}
{
"chunk_text": "Damaged products can be returned within the allowed return period."
}
metadataConfiguration: {
nonFilterableMetadataKeys: ["chunk_text"],
}
使用多个条件
在“使用多个阶段”模式下,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储以及功能标志应集中存放于一个位置,以便操作人员无需查看整个流程即可进行审核。 需引用实际作为答案依据的段落。如果没有引用,操作人员就无法区分是幻觉内容还是索引缺失导致的错误。
filter: {
$and: [
{
category: {
$eq: "returns",
},
},
{
region: {
$eq: "us",
},
},
{
status: {
$eq: "active",
},
},
],
}
filter: {
category: {
$in: ["returns", "warranty"],
},
}
尽早考虑元数据问题
在“提前考虑元数据”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 需同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及错误处理都是产品本身的组成部分,而非后续需要补充的内容。 必须引用那些真正作为答案依据的段落。如果没有引用,操作人员就无法区分是幻觉内容还是索引缺失导致的错误。 在“提前考虑元数据”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 应将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,明确成功判定标准,并杜绝默默完成部分任务的情况。
{
"document_name": "Return Policy",
"category": "returns",
"region": "us",
"status": "active",
"chunk_text": "..."
}
相似度与元数据协同工作
在处理“相似度与元数据协同工作”阶段时,首先明确相关规范:所需的输入参数、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免从演示环境过渡到共享环境时出现意外费用。 在调整提示词之前,先使用固定的问题集测试召回率。仅仅更换提示词往往无法改善较差的检索效果。
User Question
↓
(Semantic Similarity + Reliable Metadata Context)
↓
Amazon S3 Vectors
↓
More Focused Results
结论
在进入结论阶段时,首先写下相关约定:所需的输入参数、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 将配置信息与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中管理,以便操作人员无需查看整个系统结构即可进行审计。 在调整提示词之前,先使用固定的问题集来测试召回率。仅仅更换提示词往往无法解决检索效果不佳的问题。
操作清单
在制定操作清单阶段,需在修改代码之前明确输入参数、各步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行相应步骤,而无需猜测系统中的隐藏状态。
应优先选择小型、可测试的单元,而非庞大的脚本。当某个步骤出错时,故障应指向单一责任点,而非复杂的处理流程。
请引用实际作为答案依据的段落。没有引用的话,操作人员就无法区分是幻觉内容还是索引缺失的问题。
编写一份简短的操作手册:说明如何轮换密钥、如何清空队列、以及如何回滚上一次的导入操作。
将此阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功标准,拒绝默许部分完成的状态。
请引用实际作为答案依据的段落。没有引用的话,操作人员就无法区分是幻觉内容还是索引缺失的问题。
在推广该技术栈之前,应先冻结版本,为关键流程记录标准输出日志,并明确回滚步骤。共享环境需要设置速率限制、租户验证机制,以及明确的密钥轮换负责人。与其展示花哨的一次性演示,不如注重扎实的可靠性。
关于5ab755d9f682的批处理说明:请将提供商密钥移出代码仓库,设定单会话令牌上限,并将日志存储在评估用示例文件旁,以便后续模型更换时保持数据可比性。