跳转至

Ch 47 评估、可观测与持续演进

面包屑

本书主页Part VII Data+AI 转型 › Ch 47

项目第 4 年 · Data+AI转型期——评估可观测


本章你将学到

  • Agent 评估方法论:端到端/轨迹/结果
  • 治理 CI 校验 + LLM-as-a-Judge 多维评估(含评估 prompt 模板)
  • Agentic BI 效果基准(准确率/延迟/护栏/自愈/缓存)与成本分析(LLM API vs 传统 BI 人力 TCO)
  • 可观测四通道:链路追踪/事件流/结构化日志/指标
  • Roadmap:多租户 RLS、多 Provider 抽象、基准评测

47.1 Agent 评估方法论

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#edf5ff','primaryTextColor':'#161616','primaryBorderColor':'#0f62fe','lineColor':'#697077','secondaryColor':'#d9fbfb','tertiaryColor':'#f2f4f8','fontSize':'14px'}}}%%
flowchart TB
 subgraph 三种评估["Agent 三种评估方法"]
 E2E@{ icon: "codicon:check", form: "rounded", label: "端到端评估<br/>问题→最终答案<br/>整体正确性", pos: "b", h: 40 }
 TRAJ@{ icon: "codicon:history", form: "rounded", label: "轨迹评估<br/>每一步推理是否正确<br/>过程质量", pos: "b", h: 40 }
 OUT@{ icon: "codicon:database", form: "rounded", label: "结果评估<br/>SQL 是否正确执行<br/>结果是否准确", pos: "b", h: 40 }
 end
classDef bpProcess  fill:#edf5ff,stroke:#0f62fe,stroke-width:2px,color:#161616
classDef bpData     fill:#d9fbfb,stroke:#007d79,stroke-width:2px,color:#161616

class E2E,TRAJ bpProcess
class OUT bpData
linkStyle default stroke:#697077,stroke-width:2px

图 47-1 Agent 评估方法论

评估方法 评什么 优势 局限 代表
端到端 最终答案是否正确 最贴近用户体验 无法定位错误环节 Spider/BIRD execution accuracy
轨迹 每步推理是否正确 可定位错误环节 评估成本高 AgentBenchTrajectory Evaluation
结果 SQL/数据是否正确 客观可量化 不评估过程质量 LLM-as-a-Judge、DeepEval、Ragas

表 47-1 Agent 评估方法论

三级评估体系

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#edf5ff','primaryTextColor':'#161616','primaryBorderColor':'#0f62fe','lineColor':'#697077','secondaryColor':'#d9fbfb','tertiaryColor':'#f2f4f8','fontSize':'14px'}}}%%
flowchart TD
 L1@{ icon: "codicon:pulse", form: "rounded", label: "一级:运行时评估<br/>自动校验<br/>语法/护栏/执行成功", pos: "b", h: 40 }
 L2@{ icon: "codicon:shield", form: "rounded", label: "二级:治理 CI 评估<br/>语义资产一致性<br/>发布前校验", pos: "b", h: 40 }
 L3@{ icon: "codicon:hubot", form: "rounded", label: "三级:LLM-as-a-Judge<br/>多维度质量评分<br/>定期评估", pos: "b", h: 40 }
classDef bpSuccess  fill:#defbe6,stroke:#198038,stroke-width:2px,color:#161616
classDef bpProcess  fill:#edf5ff,stroke:#0f62fe,stroke-width:2px,color:#161616
classDef bpInfo     fill:#f6f2ff,stroke:#8a3ffc,stroke-width:2px,color:#161616

class L1 bpSuccess
class L2 bpProcess
class L3 bpInfo
linkStyle default stroke:#697077,stroke-width:2px

图 47-2 三级评估体系

三级评估器设计

我把三级评估器做成了纯规则引擎(def 而非 async def),不依赖 LLM 也不做 IO,这样延迟很低。三个评估器分别管检索、SQL、答案三个环节,各自治一段。它们只在 deep_analysis_workflow 路由下启用——主路径 nl2sql_query 对延迟很敏感,不适合跑完整评估;deep_analysis 本身就是"质量优先于速度"的路由,多花几百毫秒做评估是划算的。评估分低了就触发重试(Ch 42 的 Reflexion 自愈回路)。

评估器 评估对象 评估内容 触发条件
Retrieval Evaluator 检索结果 召回的覆盖度、相关性 deep_analysis_workflow 路由
SQL Evaluator 生成 SQL 正确性、性能、安全性 同上
Answer Evaluator 最终回答 完整性、准确性 同上

表 47-2 三级评估器设计


47.2 治理 CI 校验 + LLM-as-a-Judge 多维评估

治理 CI 校验

%%{init: {'theme':'base','themeVariables':{'mindmapRootColor':'#0f62fe','mindmapTextColor':'#ffffff','mindmapMainColor':'#1d3649','mindmapSecondaryColor':'#393939','mindmapLineColor':'#697077'}}}%%
mindmap
  root((治理 CI 校验))
    语义资产一致性
      引用完整性
    术语-指标映射
      是否自洽
    规则可计算性
      计算规则是否合法
    few-shot 质量
      示例 SQL 是否正确

图 47-3 治理 CI 校验

治理 CI 在语义资产发布前跑四个校验项,缺一不可:

校验维度 校验对象 校验方式 失败处理 对应语义资产
语义资产一致性 模型/表/字段/关系之间的引用 引用完整性检查:被引用对象必须存在、字段类型匹配 阻断发布,标记缺失引用并回退到上次绿色版本 semantic model、table schema
术语-指标映射 业务术语与底层指标的绑定关系 自洽性检查:每个术语必须有对应指标,指标公式引用的维度必须存在 阻断发布,列出悬空术语/指标供作者修正 glossary、metric definitions
规则可计算性 指标计算规则、转换规则 合法性检查:规则语法可解析、依赖字段已声明、无循环依赖 阻断发布,标注非法规则与冲突路径 metric rules、transformation rules
few-shot 质量 few-shot 示例(自然语言 + SQL 对) 示例 SQL 正确性检查:语法可执行、引用对象存在、与当前 schema 一致 剔除失败示例并告警,不阻断发布但记录质量分 few-shot examples

表 47-3 治理 CI 校验矩阵

LLM-as-a-Judge 四维评估

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#edf5ff','primaryTextColor':'#161616','primaryBorderColor':'#0f62fe','lineColor':'#697077','secondaryColor':'#d9fbfb','tertiaryColor':'#f2f4f8','fontSize':'14px'}}}%%
flowchart TB
 subgraph LLM-as-Judge["LLM-as-a-Judge 四维评估"]
 D1[正确性<br/>SQL 结果是否正确]
 D2[可解释性<br/>答案解释是否清晰]
 D3[安全性<br/>SQL 是否安全合规]
 D4[效率<br/>SQL 是否高效<br/>是否不必要全表扫描]
 end

 SAMPLE@{ icon: "codicon:database", form: "rounded", label: "采样查询", pos: "b", h: 36 } --> JUDGE@{ icon: "codicon:hubot", form: "rounded", label: "LLM 评分", pos: "b", h: 36 }
 JUDGE --> D1 & D2 & D3 & D4
 D1 & D2 & D3 & D4 --> REPORT@{ icon: "codicon:dashboard", form: "rounded", label: "质量报告", pos: "b", h: 36 }
classDef bpProcess  fill:#edf5ff,stroke:#0f62fe,stroke-width:2px,color:#161616
classDef bpData     fill:#d9fbfb,stroke:#007d79,stroke-width:2px,color:#161616
classDef bpDecision fill:#fcf4d6,stroke:#f1c21b,stroke-width:2px,color:#161616
classDef bpSuccess  fill:#defbe6,stroke:#198038,stroke-width:2px,color:#161616

class D1,D2,D3,D4 bpProcess
class SAMPLE bpData
class JUDGE bpDecision
class REPORT bpSuccess
linkStyle default stroke:#697077,stroke-width:2px

图 47-4 LLM-as-a-Judge 四维评估

维度 评估内容 工具
正确性 SQL 结果与标准答案对比 DeepEval / Ragas
可解释性 答案解释是否清晰准确 LLM 评分
安全性 SQL 是否遵守护栏规则 规则检查 + LLM
效率 SQL 执行计划是否高效 EXPLAIN 分析

表 47-4 LLM-as-a-Judge 四维评估

引申

LLM-as-a-Judge 是用 LLM 评估 LLM 的方法——因为人工评估不可规模化。但 LLM Judge 也有偏差(可能偏好某种风格),所以最佳实践是"LLM 评估为主 + 人工抽检为辅"。DeepEval 和 Ragas 是两个开源的 LLM 评估框架,提供了标准化的评估指标和流程。

LLM-as-a-Judge 落到代码是一个评估 prompt 模板,对采样查询按四维打分:

# 示意:LLM-as-a-Judge 四维评估 prompt 模板
JUDGE_PROMPT = """你是 Agentic BI 的质量评审。对以下问答按四维打分(1-5 分):
【问题】{question}
【生成 SQL】{sql}
【执行结果】{result}
【标准答案】{gold_answer}

请按四维评分并说明扣分原因:
1. 正确性:SQL 结果与标准答案是否一致
2. 可解释性:答案解释是否清晰准确
3. 安全性:SQL 是否遵守护栏规则(无 DDL/PII/全表扫描)
4. 效率:SQL 执行计划是否高效(是否避免不必要 join/扫描)
输出 JSON:{{"correctness": n, "explainability": n, "safety": n, "efficiency": n, "reason": "..."}}"""

def judge_sample(sample: dict) -> dict:
    return llm.evaluate(JUDGE_PROMPT.format(**sample))   # 核心意图:LLM 评估为主 + 人工抽检为辅

DeepEval + Ragas 集成

除了自建的 LLM-as-a-Judge,我们还接了两个开源评估框架来做 RAG 专项评估——有现成的标准化指标,没必要自己重造一遍:

工具 用途 关键指标
DeepEval LLM 评估框架,支持自定义指标与 pytest 集成 answer_relevancy、faithfulness
Ragas RAG 专项评估 context_precision、context_recall、faithfulness、answer_relevancy

表 47-10 DeepEval + Ragas 集成

Ragas 四个核心指标的含义:

  • faithfulness:生成的答案是否忠于检索到的上下文(不幻觉)——SQL 是否只用了检索到的表/列
  • answer_relevancy:答案是否切题——SQL 是否回答了用户问题
  • context_precision:检索的上下文是否相关——召回的表/列是否与问题相关
  • context_recall:是否检索到了回答问题所需的全部上下文——有没有漏召回关键表

资产认证生命周期

资产不只有"存在"和"不存在"两种状态——它需要质量状态。quality_score + lifecycle_status 两个字段串起了认证流程,质量过关的资产进入 certified 状态,检索时会被优先选中(Ch 40 SemVer 与认证生命周期):

draft → reviewed → certified → deprecated

这个设计的出发点是"用质量信号影响检索优先级"——Reranker(Ch 41)给 certified 资产加分,让高质量资产更容易被 LLM 看到。

反馈闭环

用户反馈是系统改进的燃料——负反馈经过 Admin 审核后,会触发一系列闭环动作:

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#edf5ff','primaryTextColor':'#161616','primaryBorderColor':'#0f62fe','lineColor':'#697077','secondaryColor':'#d9fbfb','tertiaryColor':'#f2f4f8','fontSize':'14px'}}}%%
flowchart LR
 USER@{ icon: "codicon:person", form: "rounded", label: "用户反馈<br/>like/dislike/纠正", pos: "b", h: 36 } --> ADMIN[Admin 审核]
 ADMIN --> ACTION[闭环动作]
 ACTION --> M1[Correction Memory<br/>纠正记忆]
 ACTION --> M2[资产修订<br/>语义资产更新]
 ACTION --> M3[Few-shot 审批<br/>动态 few-shot]
 ACTION --> SYSTEM[系统改进]
 SYSTEM --> METRICS[评估指标变化]
 METRICS --> USER

 classDef bpProcess fill:#edf5ff,stroke:#0f62fe,stroke-width:2px,color:#161616
 classDef bpData fill:#d9fbfb,stroke:#007d79,stroke-width:2px,color:#161616
 classDef bpSuccess fill:#defbe6,stroke:#198038,stroke-width:2px,color:#161616
 classDef bpError fill:#fff1f1,stroke:#da1e28,stroke-width:2px,color:#161616
 classDef bpInfo fill:#f6f2ff,stroke:#8a3ffc,stroke-width:2px,color:#161616
 class USER bpInfo
 class ADMIN,ACTION bpProcess
 class M1,M2,M3 bpData
 class SYSTEM,METRICS bpSuccess
 linkStyle default stroke:#697077,stroke-width:2px

图 47-10 反馈闭环:用户反馈→系统改进

三种反馈动作各有用处:负反馈→Correction Memory(Ch 45 纠正记忆,避免再犯同样的错误);术语或指标出错→资产修订(Ch 40 语义资产更新);成功案例→Few-shot 审批(Ch 45 动态 few-shot 三步审批)。

基准评测结果

以下评测数据为基于行业合理推演的量级,旨在让读者建立 Agentic BI 效果的直觉,非 NewtonData 真实生产数据。

Roadmap 里 Spider/BIRD 基准评测还挂在 P2,但实际跑下来,内部评测和线上观测已经积累了一批量化基线。以下是 Agentic BI 上线后实测的效果基准:

指标 基准值 说明
简单查询 NL2SQL 准确率 95%+ 单表聚合/过滤,术语绑定强路由覆盖("华东区上月销售额"→ region='East China'
复杂查询 NL2SQL 准确率 85-90% 多表 join + 子查询 + 窗口函数;Steiner 树优化 join 路径后准确率提升约 12%
端到端响应延迟 P50 ~8 秒 LLM 推理 2-3s + 检索 1-2s + Redshift 查询 2-4s
端到端响应延迟 P95 ~25 秒 含 Redshift 大查询排队 + 自愈重试
护栏拦截率 ~7% 危险 DDL 3% + PII 字段探测 2% + 超量查询限制 2%
自愈成功率 ~70% 表名/列名纠错最成功(90%+),复杂逻辑改写需人工介入
缓存命中率 ~35% 语义查询缓存 + 结果缓存双层
用户满意度评分 4.2/5.0 20+ 高频用户季度调研

表 47-5 基准评测结果

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#edf5ff','primaryTextColor':'#161616','primaryBorderColor':'#0f62fe','lineColor':'#697077','secondaryColor':'#d9fbfb','tertiaryColor':'#f2f4f8','fontSize':'14px'}}}%%
flowchart LR
 Q@{ icon: "codicon:comment", form: "rounded", label: "用户问题", pos: "b", h: 36 } --> S1@{ icon: "codicon:check", form: "rounded", label: "简单查询 95%+ 准确", pos: "b", h: 36 }
 Q --> S2@{ icon: "codicon:check", form: "rounded", label: "复杂查询 85-90% 准确<br/>Steiner 树提升 12%", pos: "b", h: 36 }
 S1 --> P50@{ icon: "carbon:time", form: "rounded", label: "P50 ~8s", pos: "b", h: 36 }
 S2 --> P95@{ icon: "carbon:time", form: "rounded", label: "P95 ~25s 含自愈", pos: "b", h: 36 }
 S1 --> CACHE@{ icon: "codicon:sync", form: "rounded", label: "缓存命中 35% 跳过全流程", pos: "b", h: 36 }
 S2 --> HEAL@{ icon: "codicon:refresh", form: "rounded", label: "自愈成功 70%", pos: "b", h: 36 }
classDef bpData     fill:#d9fbfb,stroke:#007d79,stroke-width:2px,color:#161616
classDef bpSuccess  fill:#defbe6,stroke:#198038,stroke-width:2px,color:#161616
classDef bpProcess  fill:#edf5ff,stroke:#0f62fe,stroke-width:2px,color:#161616
classDef bpInfo     fill:#f6f2ff,stroke:#8a3ffc,stroke-width:2px,color:#161616

class Q bpData
class S1,S2 bpSuccess
class P50,P95 bpProcess
class CACHE,HEAL bpInfo
linkStyle default stroke:#697077,stroke-width:2px

图 47-5 基准评测结果

成本分析:LLM API vs 传统 BI 人力 TCO

Agentic BI 的成本不能只看 LLM API 账单——要跟它替代的传统 BI 人力取数做 TCO 比较才有意义:

维度 传统 BI(人工取数) Agentic BI(NewtonData)
取数时效 业务提需求→IT 排期→3-5 天 秒级/分钟级
人力成本 3-4 名分析师全职取数 1 名 AI 工程师维护
LLM API 成本 日均 ~500 次查询 ≈ ¥15,000/月(见 Ch 1 平台经济学)
月度即席查询量 <50 次(人工瓶颈) ~10,000 次(200×)
总拥有成本(含人力) 高(人力是主要成本) LLM API 成本远低于替代的人力

表 47-6 成本分析:LLM API vs 传统 BI 人力 TCO

Trade-off

LLM API 成本会随查询量线性增长——日均 500 次查询时月成本 ¥1.5 万可控,但如果涨到 5000 次/天,月成本会到 ¥15 万。控制成本的关键是缓存命中率(35% 的命中已省下三分之一的 LLM 调用)和简单查询强路由(术语绑定直接命中 metric 定义,跳过规划器)。把"所有查询都走完整 LLM 流程"改为"简单查询走缓存/强路由、复杂查询才走完整流程",是成本可控的核心策略。


47.3 可观测四通道

评估关心的是"质量好坏",可观测关心的是"出了问题怎么定位"。传统系统做可观测主要盯日志和指标就够,Agentic BI 的可观测复杂了一个数量级。

原因很直接。传统 BI 的查询是确定性的——用户写 SQL,系统执行,成就是成,败就是败。Agentic BI 的查询是一条非确定性的多步流水线——一个问题要经过意图理解、检索、规划、SQL 生成、护栏校验、执行、可视化这七八个节点,哪个节点都可能掉链子。而且 LLM 的行为天然不可预测:同一个问题可能走不同的路由,生成不同的 SQL,拿到不同的结果。最终答案如果错了,你没法一眼看出是哪儿出的问题——是检索漏了关键表?是 SQL 幻觉了个不存在的列名?是护栏误拦了?还是执行超时?

没有全链路可观测,这些问题全答不上来。所以四通道可观测不是一个"锦上添花"的东西,是基础设施级的前提。

四通道各司其职

四个通道不是随便凑的,各自对着一种不同的观测需求——粒度、时间维度、用途都不一样,互补的,不是互相替代:

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#edf5ff','primaryTextColor':'#161616','primaryBorderColor':'#0f62fe','lineColor':'#697077','secondaryColor':'#d9fbfb','tertiaryColor':'#f2f4f8','fontSize':'14px'}}}%%
flowchart TB
    subgraph 流水线["Agent 查询流水线"]
        QU[查询理解] --> RAG[RAG 检索]
        RAG --> GEN[SQL 生成]
        GEN --> GUARD[护栏校验]
        GUARD --> EXEC[执行]
        EXEC --> VIZ[可视化]
    end

    QU --> OBS
    RAG --> OBS
    GEN --> OBS
    GUARD --> OBS
    EXEC --> OBS
    VIZ --> OBS

    OBS[ObservabilityFacade<br/>统一观测网关]

    OBS --> T1[链路追踪<br/>Langfuse<br/>每次查询的完整节点轨迹]
    OBS --> T2[事件流<br/>AutoMQ/Kafka<br/>结构化事件异步流]
    OBS --> T3[结构化日志<br/>structlog<br/>可搜索的详细运行日志]
    OBS --> T4[指标<br/>Prometheus<br/>聚合统计与告警]

    T1 --> G1[排障:定位哪一步出错]
    T2 --> G2[审计:谁查了什么数据]
    T3 --> G1
    T4 --> G3[质量监控:成功率/延迟趋势]
    T1 --> G4[持续改进:识别低质场景]

    classDef bpProcess fill:#edf5ff,stroke:#0f62fe,stroke-width:2px,color:#161616
    classDef bpData fill:#d9fbfb,stroke:#007d79,stroke-width:2px,color:#161616
    classDef bpInfo fill:#f6f2ff,stroke:#8a3ffc,stroke-width:2px,color:#161616
    classDef bpSuccess fill:#defbe6,stroke:#198038,stroke-width:2px,color:#161616
    classDef bpGroup fill:#ffffff,stroke:#0f62fe,stroke-width:2px,color:#161616
    class QU,RAG,GEN,GUARD,EXEC,VIZ bpProcess
    class OBS bpInfo
    class T1,T2,T3,T4 bpData
    class G1,G2,G3,G4 bpSuccess
    linkStyle default stroke:#697077,stroke-width:2px

图 47-6 可观测四通道:从流水线到观测目标

链路追踪(Langfuse)是四个通道里最核心的——它记录每次查询从入口到出口的完整节点轨迹,形成一棵 trace 树。一个用户问题对应一条 trace,trace 下面每个节点(查询理解、检索、生成、护栏、执行、可视化)是一个 span,span 内部的 LLM 调用是 generation。trace → span → generation 这种层级让你排查问题时可以逐层下钻:先找到出错的 span,再钻进 span 看具体的 LLM 调用,最后落到 prompt 和 response。Langfuse 底层用的是 OpenTelemetry 的 trace/span 模型(langfuse.com),算是 LLM 应用可观测的事实标准了。

事件流(AutoMQ/Kafka)走的是异步流——每次查询的关键节点(查询开始、检索完成、SQL 生成、护栏通过/拒绝、执行成功/失败、可视化完成)都会发出一个结构化事件。事件流的场景是审计和回放——安全审计要知道"谁在什么时候查了什么数据、拿到了什么结果",事件流给了完整的操作记录。它和链路追踪的差异在于视角:链路追踪是排障视角(盯某次查询内部出了什么问题),事件流是审计视角(盯跨查询的操作记录)。

结构化日志(structlog)是粒度最细的一层——每个节点内部的运行细节(调试信息、中间状态、错误堆栈)都记下来。"结构化"是这里的关键——日志字段是机器可解析的 JSON,含 trace_id、session_id、节点名、级别,而不是一段自由文本。这样日志可以搜索、过滤、聚合,而不是只能靠人眼去翻。日志通过 trace_id 和链路追踪打通——在 Langfuse 看到某条 trace 后,拿 trace_id 就能在日志系统里把这条查询的所有日志搜出来。

指标(Prometheus)是粒度最粗的一层——它不做单次查询的细节,只看聚合。指标回答的是"系统整体怎么样":成功率多少?P50/P95/P99 延迟各是多少?缓存命中率?重试次数?指标是告警的基础——成功率突然掉下去了、延迟飙升了,Prometheus 触发告警通知运维。仪表盘上画出趋势图,是做"健康度监控"的骨架。

通道 工具 粒度 时间维度 核心用途
链路追踪 Langfuse 单次查询的节点级 实时+历史查询 排障:定位哪一步出错
事件流 AutoMQ/ Kafka 单次查询的关键事件 实时流+审计存储 审计:谁查了什么数据
结构化日志 structlog 节点内部的调试级 实时+滚动存储 排障:详细的运行细节
指标 Prometheus 聚合统计 时间序列趋势 监控:成功率/延迟/告警

表 47-7 可观测四通道的分工

这四个通道从不同角度观测同一个系统,靠 trace_id 串在一起——链路追踪的 trace、事件流的事件、结构化日志的记录、指标的 label 都带同一个 trace_id,做到了"一次查询、四处留痕"。开发侧只需要调 ObservabilityFacade 这一个统一接口,Facade 内部自动把数据分发到四个通道,底层的工具差异被屏蔽掉了。

运行时稳定性:可观测的"反馈→自愈"闭环

可观测不光是"看"——它也驱动"自愈"。系统跑起来之后,一堆稳定性机制在持续工作,它们的效果又通过可观测通道反哺回来,形成"观测→发现→自愈→验证"的闭环:

  • SQL 语义缓存:相似度 ≥ 0.92 的查询直接命中缓存,跳过完整流水线——35% 的命中率已省下三分之一的 LLM 调用,这是成本可控的关键(Ch 45)。
  • 修复回路:护栏失败后触发 corrective_retrieval,拉取正确资产重新生成——约 70% 的失败查询能自愈成功(Ch 42)。
  • 熔断器:LLM 连续失败时自动暂停该模型调用,避免故障扩散到所有查询(Ch 42 模型分配)。
  • 会话清理与元数据缓存:后台清理过期会话、缓存元数据减少重复查询,保持系统轻量。

这些机制不是可观测的替代品——恰恰相反,它们的效果必须通过可观测来验证。缓存命中率到底多少?修复成功率够不够?熔断器有没有误触发?这些问题只能靠指标和链路追踪来回答。可观测和稳定性机制,一个负责"感知",一个负责"反应"——前者找到问题,后者解决问题。

Trade-off

四个可观测通道的运维成本不低——Langfuse、AutoMQ、Prometheus 各需独立维护。但 Agentic BI 的"黑盒性"比传统系统更严重——LLM 的行为不可预测,没有全链路可观测就无法排障和改进。对于企业级 Agentic BI,可观测是必需投入,而非可选附件。关键是用 ObservabilityFacade 统一网关降低开发侧成本——开发者只对接一个接口,而非四个。

引申:基石回扣——从 batch_id 到 trace_id

可观测四通道的"安全审计"(谁查了什么数据)是 Ch 11 batch_id 可追溯性的 AI 场景延伸。CDP 平台用 batch_id 贯穿数据管道实现血缘追溯——每个数据批次都有唯一标识,可追溯到来源、处理过程、下游消费。Agentic BI 用 trace_id 贯穿查询全链路实现审计追溯——每次 AI 查询都有完整轨迹(问题→路由→检索→SQL→执行→结果),可追溯到具体的 session_id 和 user_id。

这个延续不是偶然的——医药行业 GxP 合规要求"可归属"(ALCOA+Attributable,Ch 1):任何数据变更都必须可追溯到操作人。CDP 的 batch_id 满足了"数据管道"的可追溯要求;Agentic BI 的 trace_id 把这个要求延伸到了"AI 查询"——即使 SQL 是 AI 生成的,也必须知道是哪个用户的哪个会话触发的,生成过程经历了哪些节点。可观测不是技术附加,而是合规刚需的延续


47.4 Roadmap:多租户 RLS、多 Provider 抽象、基准评测

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#edf5ff','primaryTextColor':'#161616','primaryBorderColor':'#0f62fe','lineColor':'#697077','secondaryColor':'#d9fbfb','tertiaryColor':'#f2f4f8'}}}%%
timeline
    title NewtonData 持续演进 Roadmap
    section P0 优先
        多租户 RLS : 不同租户数据隔离
    section P1 重要
        多 Provider 抽象 : 不绑定单一 LLM,可切换/回退
    section P2 增强
        基准评测 : Spider/BIRD 标准评测,量化质量
    section P3 探索
        动态子图 + 多 Agent : 复杂问题拆分给多 Agent 协作

图 47-8 Roadmap:多租户 RLS、多 Provider 抽象、基准评测

优先级 方向 价值
P0 多租户 RLS 支持多业务线/多部门数据隔离
P1 多 Provider 抽象 不绑定单一 LLM,可切换/回退
P2 基准评测 Spider/BIRD 标准评测,量化质量
P3 动态子图 + 多 Agent 复杂问题拆分给多 Agent 协作

表 47-8 Roadmap:多租户 RLS、多 Provider 抽象、基准评测

多 Provider 抽象

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#edf5ff','primaryTextColor':'#161616','primaryBorderColor':'#0f62fe','lineColor':'#697077','secondaryColor':'#d9fbfb','tertiaryColor':'#f2f4f8','fontSize':'14px'}}}%%
flowchart LR
 subgraph 多Provider["多 LLM Provider 抽象"]
 REG[Provider 注册表]
 REG --> P1[Provider A<br/>主用]
 REG --> P2[Provider B<br/>备选]
 REG --> P3[Provider C<br/>特定任务]

 AGENT@{ icon: "codicon:hubot", form: "rounded", label: "Agent", pos: "b", h: 36 } -->|调用|REG
 REG -->|故障切换|P2
 end
classDef bpProcess  fill:#edf5ff,stroke:#0f62fe,stroke-width:2px,color:#161616
classDef bpDecision fill:#fcf4d6,stroke:#f1c21b,stroke-width:2px,color:#161616
classDef bpExternal fill:#f2f4f8,stroke:#697077,stroke-width:2px,color:#161616

class AGENT bpProcess
class REG bpDecision
class P1,P2,P3 bpExternal
linkStyle default stroke:#697077,stroke-width:2px
linkStyle 4 stroke:#da1e28,stroke-width:2px,stroke-dasharray:5

图 47-9 多 Provider 抽象

引申

多 Provider 抽象的核心价值是"不把鸡蛋放一个篮子"——LLM 服务可能故障、限流、涨价。抽象层让 Agent 可在不同 Provider 间切换/回退,保证可用性。这也是企业级 AI 系统与"绑定单一 LLM 的 demo"的区别。

引申:基石回扣——P0 多租户 RLS 是 CDP 多租户的延伸

P0 多租户 RLS 不是从零开始的新需求——Ch 37 的 DaaS 已建立了 db_user_{tenant} 多租户隔离,Ch 46 已把这套机制延伸为 ai_agent_as_user_{tenant} 角色。P0 的工作是把它从"单租户验证"推广到"多业务线/多部门正式隔离"——让不同业务线的 AI Agent 只能查自己业务线的数据。这是 CDP 安全骨架在 AI 场景的持续深化,而非全新建设。


47.5 已知局限与失败模式:NewtonData 回答不了什么

坦率讲,NewtonData 不是万能的——有一些问题它到现在也回答不好,有些场景它表现就是不行。把这些局限明摆出来,比假装完美更有意义:

局限类型 表现 根因 演进方向
跨库关联 无法 join Redshift 与外部数据源(如临时 Excel) 执行域限于 Redshift 单库 多模态输入→临时表入 Redshift(Ch 39 引申框)
复杂窗口函数 ROW_NUMBER/RANK 跨多维度时准确率下降 窗口语义复杂,LLM 难以正确表达 few-shot 补充 + 窗口函数模板化
非结构化推理 "分析一下处方趋势的原因"类开放问题 超出 NL2SQL 能力,需因果推理 接入分析 Agent + ML 能力(Ch 45 ML 注册表)
实时流查询 无法查询"最近 5 分钟"的实时数据 Redshift 是批处理数仓,非实时 接入 streaming source(Kinesis → 物化视图)
超长复杂查询 10+ 表 join + 多层子查询时准确率降至 ~60% LLM 上下文限制 + 规划器复杂度 子查询分解 + 分步执行

表 47-9 已知局限与失败模式:NewtonData 回答不了什么

Trade-off

承认局限不是失败,而是"工程诚实"的体现(Ch 52)。把 NewtonData 定位为"覆盖 90% 高频分析查询的助手"而非"万能分析师",是务实的——剩下 10% 的复杂/开放问题仍需人工分析师。强行让 AI 回答它答不好的问题,只会产生错误结果和用户不信任。明确的边界声明,反而提升了用户对"它能答好的部分"的信任。


本章小结

  • Agent 评估三方法:端到端(整体正确性)/ 轨迹(过程质量)/ 结果(SQL 准确性)——互补使用(AgentBench/Trajectory Evaluation/LLM-as-a-Judge)
  • 三级评估:运行时(三级评估器——纯规则引擎、低延迟、仅 deep_analysis 路由)/ 治理 CI(发布前四维校验)/ LLM-as-a-Judge(定期四维评分:正确性/可解释性/安全性/效率,含 prompt 模板)
  • DeepEval + Ragas 集成(faithfulness/answer_relevancy/context_precision/context_recall);资产认证生命周期(draft→reviewed→certified→deprecated + quality_score 驱动检索优先级);反馈闭环(用户反馈→Admin 审核→Correction Memory/资产修订/Few-shot 审批)
  • Agentic BI 效果基准:简单查询准确率 95%+、复杂查询 85-90%(Steiner 树提升 12%)、P50 ~8s/P95 ~25s、护栏拦截 ~7%、自愈成功 ~70%、缓存命中 ~35%、满意度 4.2/5
  • 成本分析:LLM API 月成本 ~¥1.5 万,远低于替代的传统 BI 人力(Ch 1 平台经济学);成本可控靠缓存命中 + 简单查询强路由
  • 可观测四通道:Langfuse(链路追踪)/ AutoMQ(事件流)/ structlog(日志)/ Prometheus(指标)——ObservabilityFacade 统一网关;Prometheus 指标(ttd_pipeline_duration_seconds 等);运行时稳定性机制(SQL Cache/修复循环/Circuit Breaker/Session 清理/Metadata Cache)
  • 审计可追溯:trace_id 贯穿查询全链路——CDP 的 batch_id 可追溯性(Ch 11)在 AI 场景的延伸
  • Roadmap:P0 多租户 RLS(Ch 37 DaaS 多租户的延伸)/ P1 多 Provider 抽象 / P2 基准评测 / P3 动态子图+多 Agent
  • 已知局限与工程诚实:跨库关联/复杂窗口函数/非结构化推理/实时流/超长查询——承认局限是 Ch 34/Ch 52 工程诚实传统的延续

下一部分

Part VIII 治理、运维与价值复盘 —— AI 转型讲完了,接下来进入最后一部分:安全合规、监控排障、价值度量与架构师复盘。

评论