首页 / 文章 / 实用笔记:我如何停止猜测,开始衡量我的RAG流程

实用笔记:我如何停止猜测,开始衡量我的RAG流程

《实用笔记》操作指南:我如何停止猜测并开始衡量我的RAG流程——面向采用该模式的团队提供的合同、检查项以及可直接插入的代码模块。

986 词

本指南将逐步构建从原材料到可运行系统的完整流程,内容来自《我如何停止猜测并开始衡量我的RAG管道》(LLM Zoomcamp 2026,第4模块)。重点在于可操作的步骤、明确的检查点以及可直接放入代码库的代码,无需猜测其用途。 在概览阶段,应在修改代码之前明确输入参数、该步骤的负责人以及完成标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏的状态。 相比庞大的脚本,更应优先使用小型且可测试的单元。当某个步骤失败时,故障原因应能明确指向单一责任模块,而非整个复杂的流程。

为何评估是RAG中最被低估的部分

在处理“为何需要评估”这一阶段时,首先写下相关契约:所需的输入参数、成功标志,以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 将这一阶段视为输入与验证后输出之间的契约。为相关成果命名,明确成功判定标准,杜绝无声的半完成状态。 缓存稳定的系统指令和工具架构。重复发送相同的开头信息是导致资源浪费的常见原因。

构建真实数据集

在完成“构建真实值”阶段时,首先写下相关规范:所需输入、成功信号以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。 缓存稳定的系统指令和工具结构。重复发送相同的开头信息是造成资源浪费的常见原因。

两个重要的指标

在处理“两个指标”阶段时,首先需明确契约内容:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改保持透明可追溯。 应将配置信息与应用程序代码分开。环境文件、密钥存储以及功能开关应集中存放于一处,这样操作人员无需查看整个系统结构即可进行审计。 缓存系统中稳定的指令和工具架构。重复发送相同的开头信息是导致资源浪费的常见原因。 在处理“两个指标”阶段时,首先需明确契约内容:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改保持透明可追溯。 相比庞大的脚本,更应优先使用小型且易于测试的单元。当某个步骤失败时,故障应能指向单一责任模块,而非复杂的流程链。

让我惊讶的结果

“令人惊讶的结果”阶段若被视为可度量的对象,效果最佳。在扩大范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。 将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,明确成功标准,绝不允许默默地仅完成部分工作。 为每轮及每次会话设定token预算。智能工具会过度扩展上下文;设置上限可防止演示变成意外的费用账单。

改变一切的evaluate()函数

将该评估函数视为可测量的模型时,其在该阶段的表现最为理想。在扩大应用范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。在功能结果旁同时记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外账单。为每轮及每次会话设定令牌预算。智能工具往往会大量消耗上下文资源,设置上限能防止演示环境变成令人意外的收费来源。

def evaluate(search_func, ground_truth):
    hit_rates, mrrs = [], []
    for record in ground_truth:
        results = search_func(record["question"])
        relevance = compute_relevance(record, results)
        hit_rates.append(hit_rate(relevance))
        mrrs.append(mrr(relevance))
    return {"hit_rate": sum(hit_rates)/len(hit_rates),
            "mrr": sum(mrrs)/len(mrrs)}

完整解决方案

将“完整解决方案”阶段视为可度量的对象来处理效果最佳。在扩大范围之前,需记录一份理想的操作日志、一个故障案例以及回滚说明。 应将配置与应用程序代码分开。环境文件、密钥存储和功能开关应集中存放,以便操作人员无需查看整个系统结构即可进行审计。 为每轮对话和每次会话设定预算额度。智能工具往往会过度扩展上下文,设置上限可避免演示过程变成意外的费用账单。 将“完整解决方案”阶段视为可度量的对象来处理效果最佳。在扩大范围之前,需记录一份理想的操作日志、一个故障案例以及回滚说明。 相比庞大的脚本,应优先使用小型且可测试的单元。当某个步骤出现故障时,故障原因应能明确指向单一责任模块,而非复杂的流程链。

操作检查清单

将操作检查清单视为可衡量的基准,效果最佳。在扩大范围之前,先记录一份完美的处理流程、一个故障案例以及回滚说明。

同时记录正常流程与恢复流程。重试机制、人工审核环节以及错误处理方式都是产品本身的一部分,而非后续需要补充的内容。

为每次操作和每个会话设定预算额度。智能工具会大量消耗上下文资源,设置上限可避免演示过程突然产生额外费用。

需注明支撑答案的具体内容。没有引用依据,操作人员就无法区分是幻觉内容还是索引缺失导致的错误。

编写简短的操作手册:包括如何轮换密钥、如何清空队列以及如何回滚最近的导入操作。