为了捕获检索或生成步骤中的延迟瓶颈,实施监控来跟踪每个组件中花费的时间、错误率和系统资源使用情况。首先,检测您的代码以分别测量检索和生成阶段的持续时间。例如,在应用程序代码中记录每个步骤前后的时间戳,并将这些指标导出到 Prometheus 等监控系统。设置仪表板(例如,在 Grafana 中)以可视化两个步骤随时间变化的延迟百分位数(p50、p90、p99)。这有助于识别是否某个阶段始终花费比预期更长的时间,或者延迟峰值是否与特定事件相关,例如流量激增或代码部署。
接下来,监控每个步骤特有的错误率和超时。对于检索,跟踪失败的数据库查询、API 调用错误或强制执行较慢回退路径的缓存未命中。对于生成,记录模型推理失败或分词问题等错误。使用警报(例如,通过 PagerDuty)在错误率超过阈值(例如,请求的 5%)或延迟超过预定义的 SLA(例如,检索为 500 毫秒)时发出通知。此外,跟踪系统级指标,如 CPU/GPU 利用率、内存压力和网络延迟。例如,如果生成延迟激增而 GPU 使用率达到 100%,则表明模型受计算限制,可能需要优化或硬件扩展。
最后,实施分布式跟踪(例如,Jaeger 或 OpenTelemetry)以跟踪通过检索和生成的单个请求。 这有助于查明延迟发生的位置 - 例如,特定数据库查询花费的时间过长或模型批量大小导致排队。使用综合测试来模拟用户流量并测量基线性能。例如,运行每小时测试,触发简单和复杂请求的组合,并将结果与历史数据进行比较以检测回归。将这些方法结合使用可以清晰地了解瓶颈,无论它们是源于代码效率低下、资源限制还是第三方 API 等外部依赖项。