返回 Expert 笔记
Expert Day 180

Expert Day 180 (附): Phase 3 资深AI系统工程面试题集(30道)

Expert Day 180 (附): Phase 3 资深AI系统工程面试题集(30道)

2026-10-28
Phase 3 综合产出
面试题AILLM求职

日期: 2026-10-28 方向: AI系统工程 / LLM / RAG / Agent / LLMOps 阶段: Phase 3 综合产出 标签: #面试题 #AI #LLM #求职


题目分布与难度

类别题号数量来源
一、LLM基础与Prompt工程Q1-Q88Day 121-134
二、RAG高级模式Q9-Q168Day 135-148
三、Agent架构Q17-Q248Day 149-162
四、LLMOps与生产化Q25-Q306Day 163-176

难度分布:资深 18 / 高 8 / 中 4。 ⭐ 高频核心题(top 6):Q1, Q2, Q9, Q17, Q18, Q25。


一、LLM基础与Prompt工程类(Q1-Q8)

Q1. 解释Transformer self-attention数学(含QKV投影、softmax、scaling factor √d_k) ⭐

类别: LLM 基础 / Transformer 难度: 资深 考察点: 数学推导能力、为什么 scale、复杂度分析、KV-cache、Multi-head 直觉

简短回答(30秒): Self-attention 是带权点积加权和。给定 X,投影出 Q = XW_Q, K = XW_K, V = XW_V,然后算 softmax(QK^T / √d_k) · V。除以 √d_k 是因为高维点积方差为 d_k,softmax 会饱和到 one-hot 导致梯度消失。复杂度 O(n²d) 是 long-context 贵的根因。

详细回答(2-3分钟版本):

  1. 背景/定义:Self-attention 是 Transformer 的核心算子,让序列中每个 token 与其他所有 token 直接交互(不像 RNN 需要逐步传递)。给定输入 X ∈ ℝ^(n×d),输出依然是 ℝ^(n×d)。

  2. 核心机制/原理

    Q = XW_Q,  K = XW_K,  V = XW_V    (W_*: d×d_k)
    A = softmax(QK^T / √d_k)          (n×n)
    Output = A · V                    (n×d_v)
    
    • W_Q, W_K, W_V 是可学习投影。Q="想问什么",K="自己是什么",V="实际信息"。
    • QK^T 是相似度矩阵(每对 token 的内积)。
    • softmax 行归一化 把每个 token 对其他 token 的"注意力"做成概率分布。
    • 乘以 V 是按注意力加权聚合信息。
  3. 为什么除以 √d_k

    • 假设 Q, K 元素近似独立同分布、零均值、方差 1。
    • 则 q·k = Σ q_i k_i 的方差为 d_k。
    • 当 d_k 大(如 64, 128),点积尺度大 → softmax 饱和 → 梯度趋零 → 训不动。
    • 除以 √d_k 把方差归一化到 1。
    # 反例:不 scale
    d_k = 128
    q = np.random.randn(d_k); k = np.random.randn(d_k)
    print(q @ k)  # 大概 ±10,softmax 后 max 项接近 1
    
  4. Multi-Head:把 d 拆成 h 个 head(每个 d/h 维),每个 head 独立 attention,最后 concat + W_O。直觉:不同 head 学不同关系(induction head, copy head, name resolution)。Anthropic 可解释性研究里有专门"induction head"识别重复模式。

  5. 复杂度与 KV-cache

    • 训练阶段:O(n²d) 时间 + O(n²) 空间(attention matrix)
    • 自回归生成时 KV-cache 让每步 O(n) 而不是 O(n²)。Claude 4.7 的 1M context 工程关键就是 KV-cache 分页(PagedAttention)+ 减少冗余复制。
  6. 真实数据/案例:1M context 一次 forward 大约需要 10^12 次操作 per layer;80 层模型即 10^14——这是为什么"长 context 推理"必须靠 prompt caching + paged KV。

  7. 我的观点:理解 attention 数学不是为了装逼,是为了在面对"为什么模型在某个任务上失败"时能从底层 reasoning(比如 attention 范围、head 分工)反推。Day 121 我用 numpy 写完一遍 multi-head 之后,对 Claude 行为的"白盒理解"提升至少一个量级。

追问准备:

  • Q: Multi-Query Attention (MQA) / Grouped-Query Attention (GQA) 与 MHA 区别? → A: MQA 共享 K, V 的 W 跨 head(节省 KV-cache 显存);GQA 是 group 内共享,是 MQA 和 MHA 折中。Llama 3 用 GQA,Claude 内部细节未公开但推测类似。
  • Q: 为什么 RoPE 比绝对位置编码好? → A: RoPE 把位置编进 Q, K 旋转中,attention 只依赖相对位置;外推到训练长度之外更稳。Sinusoidal 只在训练长度内泛化,超出后 attention 退化。
  • Q: Flash Attention 优化了什么? → A: 它不改算法,改 IO——把 attention 计算 tile 化、用 SRAM 而非 HBM,速度 2-4x 提升、显存 O(n) 而非 O(n²)。Flash Attention 2 进一步优化 backward。
  • Q: ALiBi vs RoPE? → A: ALiBi 用线性偏置(attention bias 与距离成反比),实现极简、外推性好;RoPE 是当前主流(Llama / DeepSeek / Qwen),ALiBi 在 BLOOM / MPT 用过。
  • Q: 为什么 attention 是 softmax 而不是别的? → A: 历史上 softmax 是天然的概率归一化;近期有 Linear Attention / Performer / Mamba 用其他形式(kernel feature map / SSM)尝试 O(n) 复杂度。Mamba 在长 context 上有竞争力但 attention 仍是主流。

Q2. Claude prompt caching 如何工作?什么场景受益最大? ⭐

类别: Prompt 工程 / 成本优化 难度: 资深 考察点: API 机制、TTL、cache 命中条件、经济模型、何时不该用

简短回答(30秒): Claude prompt caching 让你给 prompt 中前缀部分打 cache_control 标记,命中时复用之前的 KV 计算。Anthropic 实测命中可降 90% 输入成本、85% 延迟。受益最大的场景:长 system prompt + 大文档 RAG + 多轮 agent。但 cache 写入价是 1.25x,hit rate < 50% 反而更贵。

详细回答(2-3分钟版本):

  1. 背景/定义:Prompt caching 是 Anthropic 在 2024 推出的功能,把"重复 prefix"的 KV 状态缓存在服务端,下次复用。本质是把"模型 forward pass 的 KV 计算"做了去重。

  2. 核心机制/原理

    client.messages.create(
        model="claude-opus-4-7",
        system=[
            {"type": "text", "text": LONG_SYSTEM_PROMPT,
             "cache_control": {"type": "ephemeral"}},
            {"type": "text", "text": LARGE_DOC,
             "cache_control": {"type": "ephemeral"}}
        ],
        messages=[{"role": "user", "content": user_query}]
    )
    
    • cache_control 标记的位置之前的 token 全部进入 cache(前缀匹配)。
    • TTL:默认 5 分钟(ephemeral),1h 模式按更高 base price。
    • 命中条件:tokenize 后字节级一致的前缀。
    • 写入价 = 1.25x 原 token cost;命中价 = 0.1x 原 token cost。
  3. 关键 trade-off

    净收益 = hit_count * 0.9 * cost - 1 * 0.25 * cost  (相比不缓存)
    收支平衡:hit_rate ~= 25%
    

    命中率低于 25% 反而更贵。所以 caching 不是默认开就好

  4. 真实案例/数据:Day 164 我对一个金融 RAG 做了 3 周线上观测:

    • System prompt(800 tokens)+ tool catalog(1200 tokens)+ 长文档(5000 tokens)→ 全部 cache
    • 命中率:78%(相同 system + tools 跨用户)
    • 成本下降:82%(实测)
    • 延迟下降:1.2s → 280ms
  5. 受益最大的场景

    • 长 system prompt(>1000 tokens)+ 高 hit rate(多用户共用)
    • RAG 把"长文档"放 cache、"用户 query"放外面
    • Agent 多轮:把 conversation history 渐进 cache
    • 批量推理同一份长 context 的不同 query
  6. 我的观点:Prompt caching 是 LLM 工程里最被低估的 cost lever。我看过太多团队不用 caching、抱怨 token 贵。但不是所有场景都该用——单次查询不重复的、context 短的、多用户 prompt 不一致的(如完全个性化),开了反而烧钱。Day 164 的 ROI 分析模型应该是每个 LLM PM 的入门必修。

追问准备:

  • Q: cache 是按 prefix 还是任意位置匹配? → A: 严格 prefix,必须从开头到 cache_control 位置完全一致。哪怕一个空格不同也会 miss。
  • Q: 多个 cache_control 嵌套行为? → A: 每个 breakpoint 独立 cache,最多 4 个。前面 hit、后面 miss 是常见模式。比如 [system+tools (cache 1)] + [doc (cache 2)] + [user query (no cache)]——前两段独立缓存。
  • Q: cache miss 时 latency 是否有惩罚? → A: 几乎无惩罚(只是没 hit 收益)。但如果 cache 写入失败可能多 50ms。
  • Q: Claude vs GPT 的 caching 差异? → A: GPT-5 有 automatic caching(无需手动标记),但粒度更粗、不可控;Claude 的显式 cache_control 更灵活、可调优。
  • Q: 什么算"cache hit"统计? → A: API response 里 usage.cache_read_input_tokenscache_creation_input_tokens 分开报。监控时计算 hit_rate = read / (read + creation)。
  • Q: 5 分钟 TTL 不够长怎么办? → A: 用 1h cache 模式(base price 是 ephemeral 的 2x,但 TTL 长 12 倍)。适合"全天反复查的长文档"。
  • Q: 为什么 cache 写入是 1.25x 而不是 1x? → A: 写入需要把 KV 状态序列化到持久存储,有额外计算和存储成本,Anthropic 把这部分价格化。


Q3. Tokenization 在中文/数字/code 上的常见坑?

类别: Tokenization 难度: 高 考察点: BPE 原理、跨语言差异、token 计费、边界 case

简短回答(30秒): 中文常被切成 1-3 字节的 byte-level token,1 个汉字 ≈ 2-3 token;数字会按位拆("12345"可能切成"1234"+"5")影响算术;code 缩进/换行有专门 token,注释里的中文会爆 token。

详细回答(2-3分钟版本):

  1. 背景/定义:现代 LLM 用 BPE(Byte-Pair Encoding)或 SentencePiece,把字符串切成子词单元(token)。Claude 用类似 cl100k 的 tokenizer,词表 ~100k。

  2. 核心机制:BPE 从字符级开始,迭代合并最频繁字节对,直到达到词表大小。结果是常见词独占 token,罕见词被切成多 token。

  3. 常见坑

    • 中文:因训练语料以英文为主,中文 token 利用率低。"产品经理" → 4-6 token(每字 1-2)。中文文档 token 数 ≈ 字数 × 1.5-2.5。
    • 数字:BPE 不保证按位切。"123" 可能是 1 token,"12345" 切成 "1234" + "5",影响算术——LLM 在 "12345 + 67890" 上经常错位。Llama 3 显式按"每位数字 1 token"修了这个,Claude 处理较好但仍有边界 case。
    • Code:缩进 4 空格往往是 1 个 token,但 tab 是另一个;中文注释会大幅增 token。
    • 特殊字符:emoji/罕见符号可能 4-6 byte → 4-6 token。
  4. 真实数据:Day 124 我对比 Claude tokenizer 和 GPT tokenizer 在中文金融文档上:

    • 1000 字中文 → Claude ~1700 token, GPT-4 ~1900 token
    • 同一份英文 → Claude ~750 token, GPT-4 ~750 token
    • 计费差异:处理中文相对英文多花 ~2.3x
  5. 我的观点:做中文 / 多语言产品时必须做 token 预算建模——很多团队用英文预估 cost,上线后发现实际 2-3 倍。另一个常被忽略的点:RAG chunk 大小应按 token 而非字符数算,否则中英混合文档会出问题。

追问准备:

  • Q: 怎么解决数字算术 token 拆分问题? → A: 训练时按位 token 化,或推理时引入 calculator tool。
  • Q: Claude tokenizer 和 GPT 差多少? → A: 中文上 Claude 略省(~10-15%),英文几乎一致。
  • Q: 怎么估算一段文本的 token 数? → A: 英文 word_count * 1.3,中文 char_count * 1.7,code 按行 * 8-15。

Q4. Top-p vs Top-k vs temperature 的本质差异?

类别: Decoding 难度: 高 考察点: 数学定义、何时用、组合使用

简短回答(30秒): Temperature 改变 softmax 分布的"陡峭度"(除以 T 再 softmax)。Top-k 截断到前 k 个候选。Top-p(nucleus)截断到累计概率 ≥ p 的最小集合。Temperature 全局控制随机性,Top-k/p 是"裁剪低概率长尾"。生产里常组合 temperature=0.7 + top_p=0.9。

详细回答(2-3分钟版本):

  1. 数学定义

    • Temperature: P(x) = exp(z_x / T) / Σ exp(z_y / T)。T → 0 趋近 argmax;T → ∞ 趋近均匀。
    • Top-k: 保留前 k 个 logit 最高的,其余设 -∞ 再 softmax。
    • Top-p (nucleus): 按概率降序排,保留累计概率刚好 ≥ p 的最小集合。
  2. 核心机制差异

    • Temperature 是连续旋钮:低温度=更确定、高温度=更发散。
    • Top-k 是固定数量裁剪:但分布平坦时 k=50 可能保留长尾垃圾、分布尖锐时 k=50 仍允许"明显错误"被采样。
    • Top-p 是自适应数量:分布尖锐时只留 1-2 候选,分布平坦时留几十。这是 top-p 比 top-k 优秀的根本原因
  3. 关键 trade-off

    • 严肃任务(金融分析、合规问答):T=0 / T=0.1 + top_p=0.9
    • 创意任务(写文案):T=0.8 + top_p=0.95
    • 代码生成:T=0.2 + top_p=0.95
    • 不要同时把 top_k 和 top_p 都设很严,会过度收敛到一两个 token。
  4. 真实案例:Day 125 实验,金融问答 100 题:

    • T=0 → 100 题答案完全一致(确定性)
    • T=0.7 + top_p=0.9 → 6 题出现事实错误
    • T=0 看似"安全"但缺多样性,judge 可比对一致性;T=0.7 适合"探索"但需要 self-consistency 投票兜底。
  5. 我的观点:很多 PM 把 temperature 设错——金融领域报告默认就该 T=0;只有当我需要 alternative perspectives(A/B 多 angle)才升温。Decoding 参数是被严重低估的产品杠杆——比 prompt 改一句更影响输出。

追问准备:

  • Q: T=0 是确定的吗? → A: 不完全。tie-breaking + GPU 浮点非确定性会导致偶尔变化。要严格确定需 seed + 单实例。
  • Q: min_p 是什么? → A: 新参数,相对最高概率的阈值(保留 P ≥ alpha * P_max 的候选)。比 top_p 在分布形状变化大的场景更稳。

Q5. CoT vs ToT vs Self-consistency 何时各用?

类别: Reasoning 难度: 高 考察点: 三者本质区别、适用场景、对前沿模型的有效性

简短回答(30秒): CoT = "step by step" 单条推理链。ToT (Tree-of-Thoughts) = 探索多分支(DFS/BFS)+ 评估剪枝。Self-consistency = 跑 N 条 CoT 投票。简单任务直接出答案;多步推理用 CoT;需要探索的(数学奥赛、规划)用 ToT;高风险一致性需求用 Self-consistency。

详细回答(2-3分钟版本):

  1. 机制对比

    • CoT: 在 prompt 里加 "Let's think step by step",模型显式展开中间步骤。一条线性链。Cost = 1x。
    • ToT: 把推理树展开,每个分支让模型 self-evaluate,剪掉低分支,DFS/BFS 探索。Cost = 5-30x。
    • Self-consistency: 用 T>0 跑 CoT N 次(N=5/10),多数投票。Cost = N x。
  2. 适用场景

    • 简单事实查询:都不用,直接出答案最准。
    • 数学/逻辑推理:CoT 必加。
    • 数学奥赛/规划/搜索:ToT。
    • 高风险(医疗、合规):Self-consistency。
    • 创意/开放性任务:都不一定有效。
  3. 对 Claude 4.7 / GPT-5 的特殊性:高能力模型自带内部 reasoning。强制 CoT 在某些任务上反而下降精度(因为强制展开错的 prefix)。Day 127 实测金融逻辑题:

    • Claude 4.7 直接答:92% 正确
      • CoT:90% 正确(轻微下降)
      • Self-consistency (n=5):94%(边际提升小)
    • 结论:CoT 对中等模型增益大,对前沿模型增益小
  4. 真实数据:ToT 在 Game of 24 上从 CoT 的 4% 提升到 74%(原 paper),但 cost 30x。绝大多数生产场景不该用。

  5. 我的观点:很多团队默认"CoT 一定加"是迷思。前沿模型上 CoT 是中性偏负的。要做的是按任务类型路由:fact lookup → 直接答;multi-step reasoning → CoT;high-stakes → SC。ToT 只在极少数搜索类任务下值得。

追问准备:

  • Q: 怎么自动决定何时 CoT? → A: 训一个 router classifier,或 prompt 模型自己 "decide if you need to think step by step"。
  • Q: Extended thinking(Claude 4.7 的 thinking 模式)和 CoT 关系? → A: thinking 是模型内部"私有 CoT",对用户透明、不计入 output token;功能上替代了大部分手动 CoT 需求。
  • Q: ToT 的 self-evaluate 准确吗? → A: 视任务而定——数学/逻辑可(有客观 ground truth),开放性任务难(评分主观)。
  • Q: Self-consistency 投票时怎么处理 ties? → A: 用 confidence score 加权投票;或 N 次跑一次答案带 reasoning,挑 reasoning 一致性最高的。
  • Q: Best-of-N sampling 算 self-consistency 吗? → A: 不完全——SC 是多次 sample 后投票答案;BoN 是多次 sample 后用 reward model 选最佳。BoN 是 RLHF inference-time 应用。

Q6. Constitutional AI 相比 RLHF 的优势?

类别: Alignment 难度: 高 考察点: RLHF 流程、CAI 流程、scalability、Anthropic 立场

简短回答(30秒): RLHF 用人类偏好反馈训 reward model 再 PPO;Constitutional AI 用一组明确"宪法原则"让模型自我批评+修正,减少人类标注。CAI 优势:可扩展(标注成本低)、可审计(原则透明)、对 harm 类型覆盖更广。

详细回答(2-3分钟版本):

  1. RLHF 流程

    • SFT(监督微调)on demonstration data
    • 标注员对 N 个候选输出排序 → 训 Reward Model (RM)
    • PPO 用 RM 信号优化 policy
  2. CAI 流程

    • 模型先生成回答 → 用一组 constitutional principles 让另一个模型 critique → revise
    • 用 revised 数据做 RLAIF(用 AI 生成的偏好对而非人类偏好对)
  3. 关键差异

    • 标注源:RLHF 用人类排序;CAI 用 AI 自我批评+人写原则。
    • 可扩展性:CAI 几个原则覆盖大量 case;RLHF 每类 harm 都需要新数据。
    • 可审计:CAI 原则文档化(如"prefer responses that are honest"),RLHF 偏好隐含在数据里难审。
    • 危险话题处理:RLHF 对人类标注员是心理负担(看血腥/暴力内容),CAI 让模型自己处理。
  4. 真实数据:Anthropic Claude 用 CAI/RLAIF 训出来后在 harm benchmark 上接近 RLHF + 标注大一个数量级的同行,且原则可改("修宪")改一次行为变一次。

  5. 我的观点:CAI 是 alignment scalability 的关键 — 因为人类标注永远跟不上模型能力增长。但 CAI 也有循环依赖问题:critique 模型本身需要被 align。Anthropic 的回答是"用越来越强的模型 critique 弱模型"。这个迭代是可工作的但不是终点。

追问准备:

  • Q: RLAIF 和 RLHF 在结果上差距? → A: Anthropic 称同等水平,OpenAI 内部更倾向 RLHF + 红队。两条路在 frontier 上殊途同归。
  • Q: 如果原则之间冲突怎么办? → A: 显式 priority("helpful > harmless 仅当不涉及高 harm")。
  • Q: DPO (Direct Preference Optimization) 和 RLHF 区别? → A: DPO 跳过 reward model,直接用 (preferred, rejected) 对优化 policy。简单且稳定,但 expressive 不如 PPO。
  • Q: KTO / IPO 这些新方法呢? → A: KTO 用 binary preference (good / bad),更省数据;IPO 解决 DPO over-fit 问题。研究热门,工程上 DPO 仍是主流。

Q7. Long context 与 "lost in the middle" 如何应对?

类别: Long context 难度: 高 考察点: 现象、成因、应对方法、Claude 4.7 的改进

简短回答(30秒): "Lost in the middle" 是 Liu et al 2023 发现的:在长 context 中信息位置在 0% 或 100% 时 LLM 找回率 90%+,在 50% 时降到 50%-。应对:(1) 把关键信息放前后;(2) 用 RAG 提取相关段;(3) 用 reranker 重排序;(4) 升级到原生长 context 模型(Claude 4.7 / GPT-5)。

详细回答(2-3分钟版本):

  1. 现象:U-shape 曲线,模型对中间位置的信息 attention 弱。

  2. 成因

    • 训练语料里"开头/结尾位置信息"出现频率高(标题、结论)
    • Position encoding 在长距离上分辨率下降
    • Attention soft 分布在长序列上自然摊薄
  3. 应对方法

    • 位置安排:关键信息放 prompt 头部(system/instructions)和尾部(user query 之前)。
    • RAG:不要塞全文,retrieve 相关段;retrieve 后还要 rerank。
    • Map-reduce:长文档分段处理再 aggregate。
    • 长上下文 + caching:当文档跨段落语义关联强、且会反复 query 时,把全文塞 cache 而非 chunk RAG(Day 145 决策树)。
  4. 真实数据:Day 132 我在 Claude 4.7 1M context 上做 needle-in-haystack 测试 — 100 个针穿插在不同位置:

    • 0-20% 位置:99% 找到
    • 50% 位置:91%(明显比 GPT-4 的 73% 好)
    • 80-100% 位置:97%
    • 结论:Claude 4.7 已大幅改善但仍有微弱 U 形。
  5. 我的观点:long context 不是"塞越多越好"。Day 145 我的产品决策框架是:< 50K token 的查询用长 context + caching;> 50K 用 RAG。盲目塞全文成本高且 lost-in-middle 仍存在。Reranker 把"关键 chunk 推到 attention 强的位置"是工程上最值得的杠杆。

追问准备:

  • Q: 怎么测 lost-in-middle? → A: Needle in a Haystack benchmark — 在长无关 context 中插一句独特事实,问模型该事实。RULER benchmark 是更新版本,含多种"针"类型。
  • Q: Claude 4.7 内部怎么处理? → A: 公开信息有限,推测用 ring attention + 改进 RoPE(YaRN 类外推)+ 长 context 专门训练数据。
  • Q: 长 context 推理为什么慢? → A: O(n²) attention + KV cache 显存爆炸(1M token KV 在 80B 模型上 ~ 数十 GB)。Anthropic 用 PagedAttention + caching 做工程优化。
  • Q: 为什么 Claude 在长 context 上表现优于 GPT? → A: 训练数据更密集长 context(合成 + 真实长文档),attention 改进,且 1M context 用了一年多打磨。

Q8. Claude 4.7 vs GPT-5 vs Gemini 2.5 选型矩阵?

类别: 模型选型 难度: 高 考察点: 各自强项、cost、generation quality、tool use

简短回答(30秒): Claude 4.7:长 context(1M)+ 推理 + 写代码 + 安全严谨;GPT-5:通用最强 + 多模态 + 工具 ecosystem 大;Gemini 2.5:成本最低 + 多模态 + Google 数据生态。金融严谨场景选 Claude,多模态密集选 Gemini,企业广泛集成选 GPT。

详细回答(2-3分钟版本):

  1. 维度对比(截至 2026-10):
维度Claude 4.7GPT-5Gemini 2.5 Pro
Context1M (Opus 1M)1M2M
推理 (MMLU/GPQA)顶级顶级
Code (SWE-bench)最强接近中等
工具调用稳定性极高
多模态文本+图文本+图+音全模态原生
Safety/谨慎度最严
价格 (per 1M in/out)$3 / $15 (Sonnet)$2.5 / $10$1.25 / $5
Caching显式可控自动显式
  1. 场景选型

    • 金融研究/合规问答:Claude 4.7(事实严谨 + 拒答合理)
    • 跨语言/Google ecosystem:Gemini
    • 企业 + Office 集成:GPT-5
    • 多模态视频:Gemini
    • 长 context 法律文档:Claude / Gemini
    • Code generation:Claude(SWE-bench 第一)
  2. 真实案例:Day 133 我对 finance research agent v1 做了 3 模型 A/B:

    • Claude 4.7:faithfulness 0.93、平均成本 $0.14/query
    • GPT-5:faithfulness 0.89、$0.11/query
    • Gemini:faithfulness 0.85、$0.06/query
    • 最终选 Claude(faithfulness 在金融场景是 hard requirement,省 $0.03 不值)
  3. 我的观点:模型选型不是"哪个最强",是"哪个 trade-off 最匹配场景"。对金融严谨场景,faithfulness > cost > latency;对客服 chatbot,latency > cost > faithfulness。我倾向于多模型策略——主路径用 Claude,备路径(cost-sensitive)用 Gemini。

追问准备:

  • Q: 开源模型如 Llama 4 / DeepSeek 何时考虑? → A: 需要 on-prem / 数据主权 / 极致成本时;前沿任务上仍然 1-2 代差。DeepSeek-V3 在 code/数学上接近 Claude 但泛化弱。
  • Q: 怎么管理模型升级 risk? → A: 用 prompt-prompt regression suite + 灰度(Day 171 PromptOps)+ canary 用 5% traffic + key metric monitoring。
  • Q: 模型 deprecation 怎么办? → A: 提前 3 个月规划迁移;用 prompt regression suite 测新模型;prompt 微调(不同模型的"风格"不同需要重 tune)。
  • Q: 怎么决定不同 task 用不同模型? → A: 路由 classifier + cost/quality matrix。简单 task → Haiku;复杂 → Sonnet;最难 → Opus。
  • Q: Reasoning model (o1 / Claude extended thinking) 何时用? → A: 数学/逻辑推理/代码 debug 类,benefit 显著(+10-20 pts)。简单 task 反而拖慢。

二、RAG高级模式类(Q9-Q16)

Q9. Hybrid search 的 RRF 如何调参? ⭐

类别: RAG / Retrieval 难度: 资深 考察点: BM25 vs Dense 互补性、RRF 公式、k 参数、权重调优

简短回答(30秒): RRF (Reciprocal Rank Fusion) 公式: score(d) = Σ_i 1/(k + rank_i(d))。k 越大权重越平、越小越凸出 top。常用 k=60。调参时按 query 类型分组评估 — 术语密集 query BM25 权重应高、抽象意图 query Dense 权重应高。生产里常按 query classifier 路由权重。

详细回答(2-3分钟版本):

  1. 背景/定义:Hybrid search 是 BM25 (lexical) + Dense embedding (semantic) 的融合。RRF 是无需归一化的简单融合公式:

    score(d) = Σ_i  w_i / (k + rank_i(d))
    
    • rank_i(d) = 文档 d 在第 i 个 retriever 排名
    • k 是平滑常数(默认 60)
    • w_i 是各 retriever 权重
  2. 核心机制

    • k 的作用:把"绝对 rank"转化为衰减权重。k=60 时 rank=1 得 1/61, rank=10 得 1/70——差距小;k=10 时 rank=1 得 1/11, rank=10 得 1/20——差距大。
    • k 越小越偏向 top;k 越大越平滑。
  3. 调参策略

    • 整体调 k:在 golden set 上跑 grid (10/30/60/100),看 NDCG@10。
    • 调 w_BM25 / w_Dense 比例:默认 1:1;金融术语密集场景常 1.2:1;自然语言 query 常 0.8:1。
    • 按 query 类型路由:用一个 query classifier 决定权重。
    def route_weights(query):
        if has_specific_terms(query):  # SQL 表名、合约地址
            return {"bm25": 1.5, "dense": 0.5}
        if is_abstract(query):
            return {"bm25": 0.5, "dense": 1.5}
        return {"bm25": 1.0, "dense": 1.0}
    
  4. 真实数据:Day 138 在金融 100 query 上:

    • BM25 only: Recall@10 = 0.79
    • Dense only: 0.82
    • Hybrid k=60 1:1: 0.89
    • Hybrid + query routing: 0.92
  5. 关键 trade-off:复杂调度 → 边际收益但维护成本上升。生产建议固定 k=60 + 1:1 起步,需要再做 routing。

  6. 我的观点:RRF 比"score normalization 后线性融合"工程上简单太多——不需要在不同语义空间硬归一化。很多团队过度调 k,其实 k=60 是经验值在 90% 场景下足够。真正的 ROI 在于"按 query 类型路由权重",而不是 k 的微调。

追问准备:

  • Q: 为什么不用 score normalization 加权融合? → A: BM25 score 和 cosine similarity 在不同 scale 上,归一化策略(min-max / z-score)选择多且不稳定。RRF 只用 rank 信息,更鲁棒。
  • Q: 多于 2 个 retriever 怎么扩展? → A: 公式可加项;金融场景常加第三个:term-graph retriever(基于 ontology),权重由 query type 决定。
  • Q: ColBERT 算 dense 还是另类? → A: 是 late interaction(每 token 独立 embed,query/doc token 间求 max-sim),介于两者之间,工程上独立成第三路 retriever。
  • Q: BM25 的 k1 和 b 参数? → A: k1(term frequency saturation, 默认 1.5)控制重复词收益;b(length normalization, 默认 0.75)控制长文档惩罚。金融文档长度差异大,b=0.5 起步。
  • Q: 不同 query 用不同 retriever 顺序? → A: 是的——简单 query 直接 BM25 即可(避免 dense 计算成本);复杂 query 才走 hybrid。这是"adaptive retrieval"。

Q10. GraphRAG vs vanilla RAG,何时选 GraphRAG?

类别: RAG / GraphRAG 难度: 资深 考察点: 多跳推理、KG 构建、community detection、cost

简短回答(30秒): Vanilla RAG 适合"语义相似度直接 retrieve"的查询。GraphRAG 把语料抽成知识图谱(实体-关系-属性),适合多跳推理(A 与 C 通过 B 关联)和"global summarization"。Cost 高 5-10x,构建慢。金融合同条款交叉引用、法规对照、组织关系查询是甜区。

详细回答(2-3分钟版本):

  1. GraphRAG 流程

    • 离线:LLM 抽取实体/关系 → 构建 KG → community detection (Leiden) → 每社区生成 summary
    • 在线:query → 找相关实体/社区 → 获取 community summary + 局部 chunks → 生成
  2. 何时选 GraphRAG

    • 多跳查询(A 与 C 之间通过 B 关联)
    • "Global" 类查询("该组织 25 年与监管机构的所有交集是什么")
    • 实体网络密集(人物、合约、机构关系)
  3. 何时不选

    • FAQ 类(vanilla RAG 足够)
    • 文档间关系稀疏
    • cost 敏感(GraphRAG 离线索引慢、token 消耗大)
  4. 真实数据:Day 143 在金融年报合规问答上:

    • Vanilla RAG: 65% 正确
    • GraphRAG: 87% 正确(多跳问题大幅改善)
    • 但成本 6.4x、索引 25 倍慢
  5. 我的观点:GraphRAG 是被 Microsoft 论文带火后泛用化了,但90% 的 RAG 场景 vanilla 够用。它的真正价值在多跳/聚合 query。生产里常见模式是:vanilla 主路径 + GraphRAG 兜底(query classifier 路由)。

追问准备:

  • Q: KG 抽取错误怎么办? → A: 用 self-consistency(跑多次取一致)+ schema validation + 人工 spot check。低 confidence 实体进 review queue。
  • Q: community detection 选 Leiden 还是 Louvain? → A: Leiden 更稳定(解决 Louvain 的不连通 cluster bug)。GraphRAG 官方实现用 Leiden。
  • Q: Local vs Global query 在 GraphRAG 区别? → A: Local = 找特定实体相关 context;Global = 整个语料的 high-level summary(用 community summary)。Microsoft 论文实测 global query 上 GraphRAG 大幅胜出。
  • Q: KG 维护成本? → A: 高——文档更新需要重抽 + 增量更新难(实体 / 关系冲突)。建议中小语料(< 100K docs)适合,超大语料建议用 vanilla + GraphRAG fallback。

Q11. 如何评估 RAG 的"忠实度"(faithfulness)?

类别: RAG / Eval 难度: 资深 考察点: faithfulness 定义、Ragas、LLM judge、与 hallucination 关系

简短回答(30秒): Faithfulness = "答案中每个事实声明都能被 retrieved context 支持的比例"。常用 Ragas 实现:把 answer 拆成 claims,用 LLM judge 每个 claim 是否被 context entail。生产要 ≥ 0.9。低 faithfulness 通常因为 retrieval 不全 + 模型自由发挥(hallucination)。

详细回答(2-3分钟版本):

  1. 定义:Faithfulness 测量"答案是否忠于 retrieved context",独立于"答案是否正确"。可能 faithful 但错(context 错了),可能正确但 unfaithful(模型从内部知识答)。

  2. Ragas faithfulness 实现

    1. 用 LLM 把 answer 拆成 atomic claims(list of claims)
    2. 对每个 claim,用 LLM judge:claim 是否能从 context 推导
    3. faithfulness = supported_claims / total_claims
    
  3. 关键 trade-off

    • LLM judge 有偏(参考 Q28 position bias)
    • claim 拆分粒度敏感(粗→偏 faithful, 细→偏 unfaithful)
    • Context 长时 judge 会 lost-in-middle
  4. 真实数据:Day 147 在 rag_v3 上线监控:

    • Baseline rag_v1:Faith = 0.78(很多模型自由发挥)
    • 加 reranker:0.85
    • 加 "answer only from context, say I don't know" guardrail:0.90
    • rag_v3 全套:0.93
  5. 我的观点:Faithfulness 比 Accuracy 更可监控——它不需要 ground truth,只需要 (context, answer) 对。是生产 RAG 必上的指标。但单看不够,需要和 answer relevance + context recall 三件套配合,否则会出现"高 faithfulness 但答非所问"。

追问准备:

  • Q: faithfulness 0.9 算高吗? → A: 金融场景 0.9 是底线,0.95+ 才算放心。客服场景 0.85 可接受。
  • Q: 如果 retrieval recall 低,faithfulness 怎么办? → A: 模型会被迫胡编(unfaithful)或拒答;前者降 faithfulness,后者降 helpfulness。生产里要"宁可拒答不要瞎答"。
  • Q: faithfulness 和 hallucination 是同一回事? → A: 不完全。Hallucination 是"答案不符合事实",faithfulness 是"答案不被 context 支持"。可能 faithful 但事实错(context 错了)。监控 faithfulness 是必要不充分。
  • Q: 怎么提升 faithfulness 不靠模型? → A: prompt 加 "answer only from context, say I don't know"、加 citation enforcement、加 tool-grounded numbers、用 reranker 提升 retrieval 质量。
  • Q: Ragas 实现的 LLM judge 准确吗? → A: 不完美——它本身有 hallucination 风险(claim 抽取错、entail 判断错)。建议用更强 judge model + sample 人工 audit。

Q12. Chunk 大小 trade-off?parent-child vs flat 的差异?

类别: RAG / Chunking 难度: 高 考察点: chunk 太大太小的问题、parent-child 设计、auto-merging

简短回答(30秒): 小 chunk (200-400 tokens) 检索精确但缺上下文;大 chunk (1500+) 上下文充足但检索准确率降。Parent-child 模式:用小 chunk 索引、命中后返回大 parent。Auto-merging:当多个相邻小 chunk 都命中,自动合并成 parent 给 LLM。最佳实践:child 256 tokens + parent 1024,overlap 50。

详细回答(2-3分钟版本):

  1. chunk 太小的问题:每个 chunk 缺乏上下文,LLM 难理解。例:"条款第 4.2 条规定..." 没有第 4.2 条的内容,模型答不出。

  2. chunk 太大的问题:embedding 把 1500 tokens 压缩到一个向量,信息稀释——"针在草垛"找不到。Recall 下降。

  3. Parent-Child 设计

    doc → split into parents (1024 tokens, overlap 100)
        → each parent → split into children (256 tokens)
    embed children → on query, retrieve children → return parents to LLM
    
    • 优点:检索精度高(小 chunk)+ 生成上下文足(大 chunk)
    • 实现:LangChain ParentDocumentRetriever, LlamaIndex HierarchicalNodeParser
  4. Auto-merging:当 retrieve 出的 N 个 children 中超过阈值(如 ≥3)属于同一 parent,自动用 parent 替代。避免重复 chunk 占位。

  5. 真实数据:Day 142 实测金融报告 RAG:

    • Flat 256-token: Recall 0.83 / 生成质量低(缺上下文)
    • Flat 1024-token: Recall 0.74 / 生成质量高
    • Parent-child (256/1024): Recall 0.88 / 生成质量高
      • Auto-merging: Recall 0.91
  6. 我的观点:parent-child 是"不需要换 model 就免费提升 5+ 个点"的工程优化,几乎所有生产 RAG 都该用。但别滥用 hierarchy 层数——3 层(grandparent/parent/child)只在超长文档(>50K)下值。

追问准备:

  • Q: overlap 多少合理? → A: child 50 tokens, parent 100 tokens。太大浪费 storage,太小 context 边界 chunk 信息丢失。
  • Q: 怎么按语义切分而非固定长度? → A: Semantic chunking(用 embedding similarity 找断点),或 LLM-driven chunking。质量好但贵。Day 142 测过 LLM chunking 比 fixed +3 个点 Recall,但慢 10x、贵 8x,生产里只对高价值文档用。
  • Q: 怎么处理超长文档(>50K tokens)? → A: 三层 hierarchy(grandparent / parent / child);或 summary-first(先提炼 outline 再 retrieve summary 决定 retrieve 哪些 child)。
  • Q: 表格/code 怎么 chunk? → A: 表格按行(保留表头);code 按函数 / class。固定 token 切割对结构化内容杀伤大。

Q13. Embedding model 选型(OpenAI vs Voyage vs BGE vs Cohere)?

类别: RAG / Embedding 难度: 高 考察点: 模型对比、维度、领域适配、cost

简短回答(30秒): 通用:OpenAI text-embedding-3-large (3072d);通用 + 语言广:Cohere embed-v3;领域细调最强:Voyage(金融/法律有专用);自部署 + 中文:BGE M3。多语言 + 性价比 + 自托管选 BGE,金融垂直选 Voyage finance。

详细回答(2-3分钟版本):

  1. 维度对比(2026-10):
ModelDimLong contextCost (per 1M)强项
OpenAI text-embedding-3-large3072 (可降至 256)8K$0.13通用 baseline,稳定
Voyage-3102432K$0.06通用 SOTA,cost 低
Voyage-finance102432K$0.12金融领域 +5-10 pts
Cohere embed-v31024512$0.10100+ 语言
BGE-M310248K自部署中文最强、多语言、开源
  1. 选型逻辑

    • 通用 + cost 敏感:Voyage-3
    • 金融/法律垂直 + 高质量:Voyage finance / law
    • 多语言(含中文):BGE-M3 自部署
    • 必须托管 / SaaS:OpenAI 或 Voyage API
  2. 真实数据:Day 136 实测金融文档:

    • OpenAI 3-large: Recall@10 = 0.84
    • Voyage-3: 0.87
    • Voyage-finance: 0.92(领域适配明显)
    • BGE-M3: 0.85
    • 切换 Voyage finance 后还做了 reranker,最终 0.95
  3. 我的观点:embedding 选型常被低估——很多团队默认 OpenAI 一上线就不动。事实上换到 Voyage finance 对金融 RAG 是免费 +8 个点。应该把 embedding 选型当成模型选型一样做 A/B。BGE-M3 是自部署的甜点(性能接近 SaaS、成本仅 GPU 电费)。

追问准备:

  • Q: 同时支持 dense + sparse 的 embedding? → A: BGE-M3、Splade、ColBERT 都支持 multi-vector / sparse。
  • Q: embedding 维度越高越好吗? → A: 不一定。OpenAI 3-large 可降到 256d 而不显著降质量(Matryoshka)。维度低 → vector DB 便宜。
  • Q: 怎么测 embedding 质量? → A: MTEB benchmark(通用);或在自己 golden set 上算 Recall@10、NDCG@10。MTEB 不一定代表领域内表现,最佳实践是"用自己 100 query 的小测"。
  • Q: fine-tune embedding 值得吗? → A: 视数据量。< 1000 samples 不值;1000-10000 用 contrastive loss fine-tune;>10000 才考虑全量训。Phase 3 没碰但 Voyage finance 这种领域版基本就是这么做的。
  • Q: Late-chunking 是什么? → A: 先 embed 长 context、再 chunk 时取相应位置的 token average——比先 chunk 再独立 embed 保留全局语义。Jina 推的方法。

Q14. Vector DB 选型(Pinecone vs Qdrant vs pgvector)?

类别: RAG / Infra 难度: 高 考察点: 各自优势、scale、cost、混合搜索支持

简短回答(30秒): Pinecone:托管最省心,但贵 + 闭源;Qdrant:开源 + 性能强 + 原生 hybrid + payload filter,自部署首选;pgvector:和 PostgreSQL 同库,适合中小规模 + transactional 一致性需求。生产建议:Qdrant 自部署 + Pinecone 备选。

详细回答(2-3分钟版本):

  1. 维度对比
维度PineconeQdrantpgvector
托管SaaSSaaS / 自部署自部署
索引算法专有HNSW + 量化IVFFlat / HNSW
Hybrid search支持(v3)原生需扩展
Payload filter支持强(pre-filter)SQL 原生
Scale数十亿数十亿千万级舒适
Cost (10M 向量)~$700/月~$200/月 (DIY)~$100/月
  1. 场景选型

    • 启动快 + 不想运维:Pinecone
    • 性能敏感 + 自部署:Qdrant
    • 数据量小 + 已有 PostgreSQL:pgvector
    • 数十亿向量 + filter 复杂:Qdrant 或 Milvus
  2. 真实案例:Day 137 我对 rag_v3 选 Qdrant:

    • 数据量 200K 向量
    • 需要 hybrid search 原生支持
    • payload filter 复杂(按文档类型/日期/合规级别)
    • 自托管在 GCP n2-standard-4 一台机器
    • 性能:HNSW p99 25ms
  3. 我的观点:选 vector DB 别只看 benchmark。真实需求是 filter 复杂度 + hybrid 是否原生 + 可观测性。Qdrant 在这三点上都强。pgvector 适合"数据库就是真相源"的传统团队。Pinecone 适合不想运维的早期产品。

追问准备:

  • Q: Qdrant 性能怎么调? → A: HNSW M=16/efConstruction=200 起步,量化(scalar/binary)省内存 4-32x,rescore 找回精度。
  • Q: 怎么处理向量更新? → A: HNSW 不擅长 update,常见模式:standalone collection + 定期 reindex。

Q15. 长上下文 + caching vs RAG 的 cost 对比?

类别: RAG / 决策 难度: 资深 考察点: 三方成本计算、何时各胜、生产路由

简短回答(30秒): RAG:cost 低、retrieve 准确率天花板;长 context + caching:cost 中(cache hit 时省)、faithfulness 高、但 latency 高。决策树:< 50K token query 用长 context + caching;> 50K 用 RAG。复杂跨文档分析无论大小都倾向长 context。生产里按 query classifier 路由。

详细回答(2-3分钟版本):

  1. 成本计算示例:以 100K token 文档、平均 1K query、平均 1K answer 为例:
RAG:
  embed query + retrieve: $0.001
  prompt = 5K context (top-10 chunks) + 1K query = 6K tokens
  output = 1K
  cost ≈ 6K * $3/M (Claude input) + 1K * $15/M = $0.033

Long context + cache:
  prompt = 100K (cache 命中) + 1K query = 1K base + 99K cached
  cache hit cost ≈ 1K * $3/M + 99K * $0.3/M (cache hit) = $0.033
  output = 1K * $15/M = $0.015
  total = $0.048

  cache miss (首次):
  prompt = 100K * $3.75/M (cache write) + 1K * $3/M = $0.378
  → 极贵
  1. 决策框架(Day 145):

    • 文档 < 20K + 单 query:长 context(cost 接近,质量好)
    • 文档 20-200K + 高重复 query:长 context + caching
    • 文档 > 200K + 低重复 query:RAG
    • 复杂跨段落 reasoning:长 context(即使贵)
    • 高频 FAQ:RAG(缓存难命中)
  2. 真实数据:Day 145 金融报告分析对比 50 个 query:

    • 长 context + caching (hit rate 80%):avg cost $0.048, faithfulness 0.94, latency 1.3s
    • RAG: avg cost $0.033, faithfulness 0.88, latency 0.4s
    • 路由 (按 query 类型): avg cost $0.039, faithfulness 0.92, latency 0.7s — best of both
  3. 我的观点:RAG vs 长 context 不是二选一,是按 query 类型路由。简单事实查询走 RAG(成本 1x,延迟低),复杂跨文档分析走长 context + caching(faithfulness 高 6 个点)。Production 系统应该有 query classifier,不是用一种模式打天下——这是 Phase 3 让我最受益的认知更新之一。

追问准备:

  • Q: cache 失效频繁怎么办? → A: 检查文档是否频繁变;可以用 1h cache 模式(更贵但更长 TTL)。或者把"稳定部分"和"变化部分"分两个 cache breakpoint。
  • Q: RAG 和长 context 一起用? → A: 可以——RAG retrieve 后塞进 long context 框架,配合 cache。这是 rag_v3 的实际架构。RAG 减小 context size、cache 把固定部分缓存。
  • Q: 怎么自动决策 RAG vs 长 context? → A: 训一个 query classifier (small model, BERT-class) 标 "factual / analytical / cross-doc",按类型路由。
  • Q: cache miss 第一次用户 unfortunate 体验? → A: 第一个用户付出 cache write 价(1.25x),之后用户都是 cache hit 价(0.1x)。可以预热(warm-up cache)avoid 真用户首次体验差。

Q16. Multimodal RAG(PDF 表格 / 图表)的工程挑战?

类别: RAG / Multimodal 难度: 资深 考察点: 解析、向量化、retrieve、生成

简短回答(30秒): PDF 表格:用 nougat / unstructured 抽取或 LLM vision 直接解析;图表:vision LLM 描述生成 alt-text 再嵌入。挑战:(1) 解析错误率高(合并单元格、嵌套表);(2) 图文对齐(表格在 page X,引用在 page Y);(3) 生成时塞图还是塞文本?建议:双模态索引 + LLM 选择展示。

详细回答(2-3分钟版本):

  1. 解析阶段挑战

    • PDF 表格:合并单元格、跨页表、嵌套表都难。Nougat(Meta)较强;Marker、Unstructured 是开源;商业 Azure Document Intelligence、Anthropic vision 直接 OCR 都可。
    • 图表:饼图、折线图、复杂热力图。Vision LLM (Claude vision / GPT-4o) 生成 caption 是当前 SOTA。
    • 图文混排:保留 layout 信息(哪个图属于哪个 section)。
  2. 索引/检索阶段挑战

    • 文本/表格/图各自向量化。
    • 表格转文本(Markdown 表格)+ embedding,比 raw HTML 检索效果好。
    • 图用 caption embedding,不用 CLIP(因为查询多是中文/语义性,CLIP 在金融图表上很弱)。
  3. 生成阶段挑战

    • 用户问"看这张图分析"——需要把图原图传给 vision LLM,不是 caption。
    • retrieve 阶段返回 (caption, image_path),生成阶段把 image base64 传 LLM。
    • 增加 cost(image input 比 text 贵 5-10x token equivalent)。
  4. 真实数据:Day 146 在金融年报多模态 RAG 上:

    • 仅文本:Recall 0.78(损失了 60% 的图表信息)
    • 加表格 Markdown:Recall 0.85
    • 加图 caption:Recall 0.89
    • retrieve 后传图给 vision LLM:Faithfulness 0.91
  5. 我的观点:多模态 RAG 是 production-grade RAG 的下一道门槛。90% 的金融报告价值在表格和图里——不做就只能做"概念问答",做了才能做"数据分析问答"。但成本和工程复杂度大幅上升,要分阶段:先做表格 → 再做图。

追问准备:

  • Q: 视频 RAG? → A: 抽帧 + transcript(speech-to-text)→ 时序 chunking。Gemini 原生支持视频长 context 是优势。
  • Q: 表格的精确数值查询? → A: 别走 RAG,走 NL2SQL(如果数据已结构化)。RAG 对数值精确性弱——LLM 倾向"近似"而非 exact。
  • Q: 多模态 embedding 怎么选? → A: 文 + 图统一 embedding 用 CLIP / Jina-CLIP / Voyage-multimodal,但金融领域 text-only embedding + LLM-vision-caption 工程上更稳。
  • Q: PDF 解析失败 fallback? → A: 多 parser fallback(unstructured → marker → vision LLM)+ 失败 doc 标记进 review queue + 监控解析成功率。
  • Q: 怎么测多模态 RAG 质量? → A: 单独测 (a) 表格抽取准确率, (b) 图 caption 准确率, (c) retrieve 准确率, (d) 端到端 faithfulness——分层暴露问题。

三、Agent 架构类(Q17-Q24)

Q17. 什么时候用 agent vs workflow? ⭐

类别: Agent 架构 难度: 资深 考察点: agent 本质、workflow 定义、决策框架、cost 对比

简短回答(30秒): Workflow 是"步骤已知、顺序确定"的 LLM pipeline;agent 是"reasoning + tools + state 循环",步骤动态决定。决策依据:任务路径是否可枚举?可枚举走 workflow(便宜、可调试、可控);不可枚举走 agent。生产里 80% 场景该是 workflow。

详细回答(2-3分钟版本):

  1. 定义对比

    • Workflow:DAG 或顺序的 LLM 调用,每步输入输出已设计。如:用户 query → retrieve → rerank → generate → format → return。
    • Agent:循环 (think → tool call → observe → think...),每步 LLM 自己决定下一步动作。
  2. 核心差异

    • 路径可枚举性:workflow 路径在设计时已知;agent 是 emergent behavior。
    • 可调试性:workflow 每步可单独测试;agent 调试要看 trace 整体。
    • Cost:workflow 步数固定;agent 步数可能 1 也可能 30。
    • 可靠性:workflow 高(因为路径少);agent 低(更多 failure modes)。
  3. 决策框架(Anthropic 官方建议 + 我的实践):

    • 任务类型可枚举到 < 5 类 + 每类可设计 workflow → workflow
    • 任务类型多变 + 工具组合需要灵活推理 → agent
    • 高 stakes + 需要审计 → workflow(更可控)
    • Research-style 探索性 → agent
  4. 真实数据:Day 149 我对比金融客服场景:

    • Workflow (5 类 query routing):成功率 92%, 平均 cost $0.02
    • Agent (single ReAct):成功率 87%, 平均 cost $0.08
    • Workflow + agent fallback (low confidence):成功率 95%, 平均 cost $0.025
  5. 我的观点:Anthropic 在《Building Effective Agents》里反复说"Don't use agent if workflow works"——我极同意。Agent 的真正价值不在"听起来很 fancy",而在"任务路径不可预知时的灵活性"。客服、文档查询、分类、抽取——这些都该是 workflow。Agent 应该用在 research、长跨度规划、多 tool 探索性组合。我见过太多团队 over-engineer 用 agent 做能 workflow 解决的事,结果系统又贵又脆弱。

追问准备:

  • Q: 用了 LangGraph 是 workflow 还是 agent? → A: 都可以——LangGraph 是 state machine,graph 固定就是 workflow,graph 中有 cyclical edges(循环)就开始 agent-like。框架是中性的,决定的是 graph 结构。
  • Q: 怎么把 agent 工程化? → A: 限制 max iterations、强 schema tool、必加 eval、详细 trace(Langfuse)、cost ceiling、guardrail 输入输出。
  • Q: Workflow 升级成 agent 的信号? → A: 当 query 类型超出预设、success rate 持续下降、用户问题越来越复杂、维护 workflow 的 if/else 分支爆炸(>15 个 case)。
  • Q: Anthropic 的 "Building Effective Agents" 推荐什么? → A: 从 augmented LLM (single LLM + tools/memory/retrieval) 开始;只有当任务真的需要循环 reasoning 才上 agent。建议从 simplest pattern 起,加复杂度。
  • Q: Single agent vs Multi-agent 选择? → A: single agent 优先;只有当任务可清晰分解为独立 sub-task(如 research + verify + summarize)才上 multi-agent。Single 比 multi 便宜 3-5x、可靠 1.5x。
  • Q: 怎么衡量 agent vs workflow 哪个更好? → A: 用 task-level eval:cost、latency、success rate、user satisfaction 四个 axis 打分。Workflow 通常便宜+快+可靠,agent 适应性强但贵。

Q18. 如何防止 agent 的 tool calling 无限循环? ⭐

类别: Agent 工程化 难度: 资深 考察点: 循环成因、防御层、tool 设计、observability

简短回答(30秒): 循环成因:tool 报错让 LLM 无限重试、tool 输出歧义让 LLM 反复搜索、reasoning 失误让 LLM 兜圈。防御 5 层:(1) max_iterations 硬上限;(2) tool 输出标准化错误;(3) 重复检测(同 args 调同 tool > 3 次报警);(4) 累计 cost 上限;(5) self-reflection 强制 break。

详细回答(2-3分钟版本):

  1. 循环常见成因

    • Tool 报错 → LLM 一直重试(典型:网络超时不报清楚)
    • Tool 输出 ambiguous → LLM 觉得"信息不足"反复搜
    • Reasoning 错位 → LLM 反复"思考"但不行动(常见 "let me think more carefully..." 循环)
    • Tool 之间循环依赖(A 调 B、B 调 A)
  2. 防御层

    class AgentExecutor:
        MAX_ITER = 15
        MAX_COST = 0.50  # USD
        MAX_SAME_TOOL = 5
    
        def run(self, query):
            tool_history = []
            cost = 0
            for i in range(self.MAX_ITER):
                response = self.llm.invoke(state)
                if cost > self.MAX_COST:
                    raise BudgetExceeded()
                if not response.tool_calls:
                    return response.content
                for tc in response.tool_calls:
                    key = (tc.name, hash_args(tc.args))
                    if tool_history.count(key) >= self.MAX_SAME_TOOL:
                        return f"Tool loop detected: {tc.name}"
                    tool_history.append(key)
                    result = self.execute_tool(tc)
                    state.add_observation(result)
            return "Max iterations exceeded; partial answer: ..."
    
  3. Tool 设计层防御

    • Tool 错误必须 actionable("网络超时,请稍后重试"而非"error 500")
    • Tool 返回 schema 标准化(success/error/partial)
    • 每个 tool 加 input validation,避免无限 type-mismatch 循环
  4. Observability

    • Langfuse trace 必含每步 tool call + cost + latency
    • 报警:同一用户 session 步数 > 10 时通知人审
  5. 真实案例:Day 152 我设计金融 agent 的 10 个 tools 时遇到一个 case:get_price(symbol) 返回 None 时模型无限重试不同 symbol。修复后强制返回 {"status": "not_found", "suggestion": "try ticker without exchange prefix"},循环消失。

  6. 我的观点:循环是 agent 上线最常见的爆炸 bug。hard limit 不是耻辱,是必须——不要追求"完全自然完成"。max_iterations + cost ceiling + tool repetition detector 三件套是生产 agent 的最低安全网。LangGraph 的 supervisor 模式在 cyclic graph 里特别需要这些。

追问准备:

  • Q: max_iterations 设多少? → A: 简单任务 5-8,研究类 15-25;超过 25 几乎一定有问题。LangGraph 默认 25 是合理上限。
  • Q: 怎么和"长任务正常多轮"区分? → A: 看 tool diversity——正常长任务调多种 tool,循环往往反复同一 tool with same args。可用 tool call entropy 监控。
  • Q: 触发 max iterations 后该怎么处理? → A: 不要"silent error"。返回 partial answer + explain "I reached my limit, here's what I found so far" + 标记进 review queue。
  • Q: 怎么测 agent 的 robustness? → A: 写 chaos test——故意让 tool 返回错误/超时/恶意输出,看 agent 是否优雅处理。
  • Q: 用 reasoning model(如 o1 / extended thinking)能减少循环吗? → A: 部分能——更强 reasoning 减少"困惑"导致的循环。但工具循环(tool 数据问题)仍需工程层防御。

Q19. Multi-agent 协调层如何设计?coordinator 的形态?

类别: Multi-agent 难度: 资深 考察点: 三种拓扑、coordinator 模式、failure mode

简短回答(30秒): 三种拓扑:sequential(流水线)、hierarchical(supervisor + workers)、network(peer debate)。Coordinator 形态:(a) 显式 LLM as supervisor(CrewAI / LangGraph),(b) 隐式 group chat(AutoGen),(c) blackboard 共享状态。生产上 supervisor 最稳;debate 适合高准确性需求;group chat 适合开放性探索。

详细回答(2-3分钟版本):

  1. 三种拓扑

    Sequential:    User → A → B → C → Output
                   (流水线、最简单、可靠)
    
    Hierarchical:        Supervisor
                        /    |    \
                       W1    W2    W3
                   (supervisor 路由 + 聚合)
    
    Network/Peer:    A ↔ B ↔ C
                     (peer debate, 共享上下文)
    
  2. Coordinator 模式

    • Supervisor (LangGraph): 一个 LLM 看完用户 query,决定调哪个 worker、收集结果、决定是否再调。优点可控,缺点 supervisor 是性能瓶颈和单点故障。
    • Group chat (AutoGen): 多 agent 在共享 conversation 里发言,按规则(轮转、speaker selection)决定下一个发言。优点开放性强,缺点收敛慢、token 烧得猛。
    • Process (CrewAI): 类似 supervisor 但 process 是 hardcoded(sequential or hierarchical),coordinator 不是 LLM 而是规则。
  3. Failure modes

    • Supervisor reasoning 失误 → 整个系统失败
    • Group chat 不收敛 → 烧 token
    • Network debate 共识假象(互相强化错误)
  4. 真实数据:Day 159 同一金融研究任务:

    • Sequential 3-agent:成功率 0.84, cost $0.12, latency 8s
    • Hierarchical (supervisor + 3 workers):成功率 0.91, cost $0.18, latency 12s
    • Network debate (3-round, 3 agents):成功率 0.92, cost $0.55, latency 35s
    • 结论:debate 准确率最高但 cost 是 hierarchical 的 3x;supervisor 是甜点
  5. 我的观点Multi-agent 最难的不是 worker 设计,是 coordinator。worker 给 prompt + tool 就行;coordinator 决定 success/failure:决定何时停止、决定哪个输出采信、决定是否需要再迭代。Coordinator 的设计决定了系统性能上限。一个好 coordinator > 三个完美 worker。Day 159 我做过对照实验,差距非常显著。

追问准备:

  • Q: 怎么避免 supervisor 单点故障? → A: supervisor 也用 self-consistency(多个 supervisor 投票),或 fallback workflow 兜底。重要任务下用 ensemble of supervisors。
  • Q: Debate 收敛规则? → A: max rounds + 一致性检测(Cohen's κ > 0.8 提前停止)+ 投票(3 agents 中 ≥ 2 同意结论)。
  • Q: Worker 之间需要共享 context 吗? → A: 视协作模式而定。sequential 是 pipeline,前一步输出作下一步输入;hierarchical 由 supervisor 决定共享多少;network debate 全共享但需要 context 压缩避免 token 爆炸。
  • Q: Multi-agent 的 token 成本怎么控? → A: (1) supervisor 决定哪些 workers 参与(不必全调);(2) worker 间传递 summary 而非原文;(3) 用 Haiku 当 worker、Opus 当 supervisor(Anthropic 自家推荐模式)。
  • Q: 怎么评估多 agent 系统? → A: 端到端 task success + 每个 agent 独立指标 + coordinator 决策准确率(是否选对了 worker)。

Q20. MCP 相比传统 tool calling 的价值?

类别: Agent / 协议 难度: 高 考察点: MCP 定义、与 OpenAI function calling 区别、适用场景

简短回答(30秒): MCP (Model Context Protocol) 是 Anthropic 提的协议,把 tool 定义从 client 端搬到 server 端,让多 client(Claude Desktop、自定义 agent、Cursor)能复用同一组 tools。优势:(1) tool 复用;(2) 服务端独立维护;(3) 标准化(不绑 OpenAI 或 Anthropic)。

详细回答(2-3分钟版本):

  1. 传统 tool calling 的问题

    • 每个 client 重复定义 tool schema
    • tool 实现和 client code 耦合
    • 切换 LLM provider 要改 tool 格式
  2. MCP 流程

    MCP Server                MCP Client (Claude Desktop / agent)
    ├── tools.list()    ←──   discover tools
    ├── resources.list()      
    ├── prompts.list()        
    └── tool.call()     ←──   invoke
    

    服务端暴露 tools/resources/prompts 三类能力,客户端按协议调用。

  3. 何时用 MCP

    • tool 要被多 client 复用(Claude Desktop + 自建 agent + IDE 插件)
    • tool 实现和 agent 逻辑要解耦(不同团队维护)
    • 多 LLM provider 切换需求
  4. 何时不用 MCP

    • 单 client + 少数 tool → 直接 function calling 简单
    • 性能敏感(MCP 多一层 RPC overhead)
  5. 真实案例:Day 153 我用 MCP 把"金融数据查询"做成 server,同时被 Claude Desktop(人类用)和 agent v1(自动化用)调用。无需重写 schema。

  6. 我的观点:MCP 是 agent 生态的"USB-C",标准化的价值长期。短期看 MCP 是 tool calling 的换皮,长期看是 tool 市场化的协议层。Anthropic 主推、其他厂商陆续支持。我现在新写 tool 默认 MCP 化,未来切换 client 不用动。

追问准备:

  • Q: MCP vs OpenAPI/REST? → A: REST 是通用 API,MCP 是为 LLM 优化的——内置 prompt template、resource discovery、可由 LLM 自动 introspect。
  • Q: MCP server 性能? → A: 一般 stdio 或 HTTP,stdio 快但只本地;HTTP 适合远程,但有 RPC 延迟(每 tool call ~50ms)。

Q21. Memory 系统的 4 层结构?短期 vs 长期 vs episodic vs semantic?

类别: Agent / Memory 难度: 高 考察点: 4 层定义、存储方式、触发条件

简短回答(30秒): 4 层:(1) Working memory = 当前 context window;(2) Short-term episodic = 最近会话/事件(按 time decay);(3) Long-term semantic = 抽象事实(用户偏好、知识);(4) Procedural = 习得的"如何做"(更新 prompt 或 fine-tune)。各层存储方式不同:working in context, episodic in vector DB, semantic in KG, procedural in prompt template。

详细回答(2-3分钟版本):

  1. 4 层定义(参考 cognitive science + Letta/MemGPT):

    定义存储写入触发
    Working当前任务的 contextLLM context window每轮
    Short-term Episodic最近会话 / 事件Vector DB + timestamp每次会话结束
    Long-term Semantic用户偏好 / 抽象事实Vector DB / KG提炼后写入
    Procedural"如何做某类任务"Prompt template / tool config学习 / 反思后
  2. 核心机制

    • Working: 直接在 prompt 里
    • Episodic: 按 timestamp 检索 + decay weight
    • Semantic: LLM 提炼"这个事实值得记住" → 入库
    • Procedural: agent 失败后 reflect → update prompt("下次遇到类似 query 应该先 X 再 Y")
  3. 真实案例:Day 158 我为金融 agent 设计了 4 层 memory:

    • Working: 当前对话
    • Episodic: 用户最近 30 天 query 历史("上次问过 USDT 监管")
    • Semantic: 用户画像("机构客户、关注 RWA、不投 meme")
    • Procedural: agent 学到的"对机构客户先报合规风险再报收益"
  4. trade-off

    • 4 层全做复杂、维护成本高
    • 90% 场景 working + episodic 足够
    • Semantic 需要离线 pipeline 提炼
    • Procedural 是研究热点,工程不成熟
  5. 我的观点:Memory 是 agent 从 demo 升级到产品的必修。没有 memory 的 agent 是金鱼。但4 层不是同时上——按价值上:working → episodic → semantic → procedural。procedural 在多数场景是"过度设计"。

追问准备:

  • Q: 怎么避免 memory 污染(坏数据进库)? → A: 写入前 self-consistency check + 冷启动审核;定期"forget" 低置信内容。
  • Q: 用 KG 还是 vector DB 存 semantic? → A: 关系密集用 KG(用户人脉、机构关系),平铺事实用 vector + metadata。

Q22. LangGraph vs CrewAI vs AutoGen 的 trade-off?

类别: Agent 框架 难度: 高 考察点: 三框架抽象层、debug、scale

简短回答(30秒): LangGraph:state machine + 显式 graph,最灵活、debug 友好、生产首选;CrewAI:高抽象的 role-based workflow,开箱即用但难调试;AutoGen:group chat 范式,研究/原型快但难控。生产用 LangGraph,原型用 CrewAI,研究用 AutoGen。

详细回答(2-3分钟版本):

  1. 抽象层差异

    • LangGraph: nodes + edges + state,每个 node 是函数,边可条件。State 显式管理。
    • CrewAI: Agents(role + goal + backstory)+ Tasks + Process(sequential/hierarchical)。
    • AutoGen: Conversational agents + group chat + speaker selection function。
  2. 生产维度

    维度LangGraphCrewAIAutoGen
    控制力
    学习成本中(需懂 graph)
    Debug容易(state 可见)难(黑箱)
    LangSmith 集成原生较弱
    Multi-agent显式 supervisor内置group chat
    适合场景生产原型研究
  3. 真实案例:Day 157 我同一任务实现 3 框架:

    • LangGraph:300 行,调试 30 分钟
    • CrewAI:80 行,但调试 prompt + role 配合花 2 小时
    • AutoGen:150 行,group chat 难收敛调了 3 小时
  4. 我的观点生产首选 LangGraph,因为 state 显式 + 可组合 + 和 LangSmith 集成无缝。CrewAI 是"快速 demo 神器"但放到生产 debug 极其痛。AutoGen 走 group chat 路线在开放性研究上有用,但在工业产品上不稳定。Day 156-157 让我从原本的 CrewAI fan 转向 LangGraph。

追问准备:

  • Q: 怎么从 CrewAI 迁移到 LangGraph? → A: Agent 变 node,Task 变 edge,Process 变 conditional routing。一周可以重写。
  • Q: PydanticAI / LlamaIndex Agent 怎么样? → A: PydanticAI 比较新但 type safety 强;LlamaIndex Agent 是 RAG-focused,不如 LangGraph 通用。

Q23. 如何为金融领域 agent 设计 tools?错误处理?

类别: Agent / Tool design 难度: 资深 考察点: tool schema、命名、错误、合规

简短回答(30秒): 金融 tool 5 原则:(1) 命名清晰(get_price 而非 get_data);(2) 参数严格 schema 验证;(3) 输出结构化(含 status/data/error);(4) 错误 actionable(含 suggestion);(5) 高风险 tool 加 confirmation 步骤(转账类 require human-in-loop)。错误必须返回而非 throw,让 LLM 能 reasoning。

详细回答(2-3分钟版本):

  1. 5 原则展开

    @tool
    def get_token_price(
        token_address: str = Field(..., regex="^0x[a-fA-F0-9]{40}$"),
        chain: Literal["ethereum", "polygon", "arbitrum"] = "ethereum",
        timestamp: Optional[int] = None
    ) -> dict:
        """Get token price in USD at a specific time.
        
        Returns dict with:
          - status: "success" | "not_found" | "error"
          - data: {price_usd, source, timestamp} if success
          - error: error message + suggestion if failure
        """
        try:
            result = price_oracle.fetch(token_address, chain, timestamp)
            if not result:
                return {
                    "status": "not_found",
                    "error": "Token not indexed",
                    "suggestion": f"Check {chain} explorer or use search_token tool first"
                }
            return {"status": "success", "data": result}
        except Exception as e:
            return {
                "status": "error",
                "error": str(e),
                "suggestion": "Retry in 30s; if persistent, switch to backup oracle"
            }
    
  2. 高风险 tool 处理

    @tool
    def execute_transfer(...) -> dict:
        """REQUIRES HUMAN APPROVAL. Never executes directly."""
        confirmation = await request_human_approval(...)
        if not confirmation.approved:
            return {"status": "rejected", "reason": confirmation.reason}
        ...
    
  3. 金融合规要求

    • Tool 输出不得包含投资建议("应该买"),只 factual
    • Tool 调用全部 audit log(who, when, what)
    • 涉及客户资产 tool 强制 KYC 检查
  4. 真实数据:Day 152 我设计 finance research agent 的 10 个 tools,迭代 3 轮:

    • V1:tools 名字模糊(get_data, search)→ agent 错误率 35%
    • V2:精确命名 + schema 严格 → 错误率 12%
    • V3:错误返回 actionable suggestion → 错误率 4%
  5. 我的观点Tool 命名 + 错误返回质量是 agent 性能的最大杠杆,比换模型有效。Anthropic 官方文档反复说"Tool design is system design"。金融 agent 还要加合规层(不直接产生建议、所有 read-write 分离、高 risk 必经人审)——这是 retail / consumer agent 不需要但 institutional 必须的。

追问准备:

  • Q: 工具数量上限? → A: 经验上 < 20 工具时 LLM 选对率 95%+,> 50 工具开始下降。可以分组用 supervisor 路由。
  • Q: 怎么测 tool? → A: 单元测 tool 本身 + 集成测 (LLM + tool) 调用对率 + 端到端 eval。每个 tool 跑 20-30 case 测 LLM 选择正确率。
  • Q: Tool description 多详细合适? → A: 简洁清晰 > 详尽。用例 + 关键参数 + 返回 schema 即可,过长反而稀释 attention。
  • Q: 多个 similar tools 怎么处理? → A: 强烈建议合并 + 加 enum 参数("tool_type": "stocks" | "crypto");让 LLM 选 enum 比选 tool 准确率高。
  • Q: tool 副作用怎么管理? → A: 区分 read-only / mutating;mutating tool 必加 confirmation;高 risk mutating 必加 human approval(Day 161 设计原则)。

Q24. x402 / Session keys 在 onchain agent 中如何设计?

类别: Onchain Agent / Web3 + AI 难度: 资深 考察点: x402 协议、session key 安全、agent 自主交易

简短回答(30秒): x402 是 Coinbase 提的 HTTP 402 + onchain payment 协议,让 agent 自主用 stablecoin 付费访问 API。Session keys 是临时授权 key,限制权限(哪些 contract、哪些方法、限额、时效),让 agent 在不暴露主私钥的情况下执行交易。两者配合:x402 解决 agent 付费 API,session key 解决 agent 链上动作。

详细回答(2-3分钟版本):

  1. x402 流程

    Agent → API request
    Server → 402 Payment Required + onchain instruction
    Agent → tx (USDC pay) on chain
    Agent → request again with proof
    Server → 200 + data
    

    核心:agent 可全自动付费,不需要预付/订阅。

  2. Session Keys 设计

    struct SessionKey {
      address keyAddress;
      uint256 validUntil;
      address[] allowedContracts;
      bytes4[] allowedSelectors;
      uint256 spendingLimit;  // per epoch
      uint256 epochSpent;
    }
    

    主钱包(owner)发 session key 给 agent,agent 只能在限制内执行。

  3. 典型 agent 流程(Day 161)

    1. User wallet (Smart account) 创建 session key
       - allow Uniswap router + 100 USDC/day spending
       - valid 24h
    2. Agent 持有 session key
    3. Agent 决定 swap → 用 session key 签名 tx
    4. 链上验证 session key 在限制内 → 执行
    5. 24h 后 session key 失效
    
  4. 安全注意

    • Session key 私钥不能持久化(agent 内存)
    • 限额必须 hard-coded(不能由 agent prompt 改)
    • 关键 op(>$1000)应升级为人审
    • audit log on-chain(所有 session key 调用都可追溯)
  5. 真实案例:Day 161 我用 Privy + Biconomy session key 给 agent v1 做了 swap demo:agent 自主买 0.01 ETH 的 USDC,限额 100 USDC、24h 后过期。整个过程零人工介入但 risk capped。

  6. 我的观点Session key + x402 是 Web3 × AI agent 真正落地的关键基础设施。没有它们,agent 要么持有用户主私钥(极不安全),要么完全无法链上行动(半残)。这是 ERC-7715 / ERC-4337 + session key 的 emerging standard,未来 1-2 年会成为 agent 框架的标配。Phase 1 我学的机构 DeFi、Phase 3 我学的 agent,到这里完美融合。

追问准备:

  • Q: ERC-7715 是什么? → A: 标准化 wallet → app 的 permission grant 流程,session key 的标准化版本。Vitalik 在推。
  • Q: agent 私钥泄漏怎么办? → A: revoke session key(owner 链上 revoke),损失上限 = 当时 spending limit 内。这是 session key 的核心价值——"blast radius capped"。
  • Q: x402 vs Stripe? → A: x402 是 stablecoin native + 完全自动;Stripe 需 KYC + 人介入。x402 适合 agent,Stripe 适合人。
  • Q: Onchain agent 的合规风险? → A: KYC/AML 怎么做?目前最佳实践:onchain identity(如 Coinbase verifications, Privy)做轻 KYC + session key 限制 + 高风险动作回主钱包人审。
  • Q: agent 之间转账可行吗? → A: 可行——每个 agent 一个 smart account + session key,互相调用。但需要 escrow 或 reputation system 防欺诈。Virtuals / Olas 是这个方向。
  • Q: 如果 agent 决策错误买了 rug 项目? → A: 这是产品设计层问题——必须有 token whitelist + risk score + simulation 预审。Day 161 我设计的 onchain tool 默认只对 top 50 token 开放。
  • Q: Gas 费 agent 自己付吗? → A: paymaster 范式——project 替 agent 付 gas(ERC-4337 paymaster),用户体验更好。

四、LLMOps 与生产化类(Q25-Q30)

Q25. 如何为金融 RAG 设计 eval 体系? ⭐

类别: LLMOps / Eval 难度: 资深 考察点: 三层 eval 体系、metric 选择、CI 集成、金融特殊性

简短回答(30秒): 三层:(1) Deterministic(regex/structured matching, 必跑 pre-merge);(2) LLM judge(pairwise + position flip + Cohen's κ 校准);(3) Golden set(人工标注 100 条,覆盖事实/推理/合规/拒答四类)。CI 跑 1+3,nightly 跑 2。金融特殊:拒答类别要 50% 测试,因为"宁可不答不要瞎答"是 hard requirement。

详细回答(2-3分钟版本):

  1. 三层架构

    Layer 1: Deterministic (CI)
      - Schema check, format check, refusal trigger check
      - 跑得快(< 1 分钟),无 LLM cost
      - 任何 PR 必跑
    
    Layer 2: LLM Judge (CI nightly)
      - Pairwise: 新 prompt vs baseline,judge 选 winner
      - Position flip: (A,B) 和 (B,A) 都跑取 union
      - 校准:Cohen's κ 与人类标注 > 0.6 才采信
    
    Layer 3: Golden set (CI weekly)
      - 100 条人工标注 (query, ideal_answer, must_contain, must_not_contain)
      - 4 类分层:事实查询 25 / 推理 25 / 合规 25 / 拒答 25
      - 每类 pass rate 单独看
    
  2. 金融场景特殊性

    • 拒答类别:模型必须能"拒绝回答超出范围/合规的问题"。这是金融 hard requirement。
    • 数值精确:deterministic check "答案中数字必须 exact match context"。
    • 合规口径:法规条文必须 verbatim quote,不能改写。
    • 时间敏感:价格/利率类必须有 timestamp 标注。
  3. 真实数据:Day 169 上线的 eval pipeline 一个月数据:

    • 共触发 87 次 CI eval
    • 阻止 14 次回归(其中 6 次 deterministic 抓到,5 次 judge 抓到,3 次 golden set 抓到)
    • 拒答类别 pass rate 从 0.78 → 0.92(专门增加 refusal eval 后)
  4. CI 集成

    # .github/workflows/llm_eval.yml
    on: pull_request
    jobs:
      deterministic:
        run: pytest tests/deterministic_eval/ --maxfail=1
      llm_judge:
        if: github.event_name == 'schedule'
        run: python eval/judge.py --baseline=main --candidate=PR
      golden_set:
        if: github.event_name == 'schedule' && weekday == 'Mon'
        run: python eval/golden.py
    
  5. 我的观点没有 eval 体系,LLM 产品就是玄学。金融场景里 eval 不是 nice-to-have 是 must-have,因为错一次答案可能法律责任。三层 eval 是经过工业化验证的 minimal viable eval system。最大坑是只用 LLM judge 不用 deterministic —— deterministic 抓的 50% 错(schema、refusal)judge 容易遗漏。金融场景必须强 deterministic + 强 refusal eval

追问准备:

  • Q: 怎么写 100 条 golden? → A: 从生产 log 抽(按 query type 分层抽)+ domain expert 标注,每周扩 10 条迭代。冷启动可让 expert 自由出题,热启动从 user log 抽。
  • Q: LLM judge 用什么 model? → A: judge 用比 product 强的模型(Opus judge Sonnet output);同 model 会有自我偏好(self-enhancement bias),κ 会显著低。
  • Q: pass rate 阈值多少 block PR? → A: 全类 ≥ 0.85,refusal ≥ 0.95(金融)。具体 threshold 应在 baseline 上加 -2σ,不能拍脑袋。
  • Q: regression 之后怎么办? → A: 自动阻 merge + 通知 + 把 failing case 加进 golden set(这样下次同类回归会被立刻发现)。
  • Q: Eval 自身的成本? → A: 三层 eval 一次 100 query 大约 $5-15(取决于 judge model 和 N)。可用 batch API 降一半。
  • Q: 怎么处理 "LLM judge 评分不稳定"? → A: 同样 input 跑 3 次取众数;或 judge 用 T=0;或多 judge 投票(更贵但稳)。
  • Q: golden set 老化怎么办? → A: 每季度 review 一次,去掉过时 case(比如旧法规问答),新增覆盖新功能的 case。

Q26. Prompt caching 什么时候不该用?

类别: LLMOps / Cost 难度: 高 考察点: cache 边界条件、何时反而更贵

简短回答(30秒): 不该用:(1) cache hit rate < 25%(写入价 1.25x 大于命中节省);(2) prompt 短(< 1024 tokens 不达最低阈值);(3) 高度个性化 prompt(每用户都不同);(4) 频繁 prompt 迭代(cache 频繁失效);(5) 单次调用任务。

详细回答(2-3分钟版本):

  1. 临界点公式

    净收益 = N_hit * 0.9 * cost - 1 * 0.25 * cost
    N_hit > 0.28 才赚(即 hit rate > ~28%,因每次新写入要 amortize)
    
  2. 不该用场景具体化

    • One-off task:单次查询无重用 → 永远 cache miss
    • Highly personalized:每用户不同 system prompt → 难命中
    • Short prompt:< 1024 tokens 达不到 cache 最低 size
    • Rapid prompt iteration:每天改 prompt → cache 频繁失效
    • Hot path under cost control:如果产品已被 token 烧到压缩 prompt 状态,cache 也救不了
  3. 真实案例:Day 164 我对一个客服系统试 caching 失败:

    • 每用户 system prompt 包含个性化历史 → hit rate 12%
    • 实测成本反而比不缓存高 3.5%
    • 改进:把"通用部分"和"个性化部分"分离,通用部分缓存 → hit rate 75%,cost 降 60%
  4. 我的观点Caching 不是默认开就好,是要先观测 hit rate 再决定。生产里我的 SOP:

    1. 上线先开 caching
    2. 观测 1 周 trace,分析 prompt prefix 重叠率
    3. 计算理论 hit rate
    4. 30% 才开 caching,并把通用/个性化分层

追问准备:

  • Q: 怎么分析 prompt prefix 重叠? → A: hash 前 N tokens,统计 hash 频次分布。Langfuse 可以打 hash tag。
  • Q: 自动化决定 cache breakpoint? → A: 暂无成熟工具,靠手动 + 经验。Anthropic 可能未来会加 auto-cache。
  • Q: cache 命中失败如何 alert? → A: Langfuse trace 里看 cache_read_input_tokens 是否符合预期;持续低于阈值(< 30%)触发警报。
  • Q: 高度个性化 prompt 还能 cache 吗? → A: 部分可——把"通用 system" 单独 cache、"个性化 user data" 不 cache。Day 164 实测把这部分分离后 hit rate 从 12% 升到 75%。
  • Q: 多 model 路由场景下 caching 还工作吗? → A: 工作——每 model 独立 cache。但 hit rate 会被分摊(同样 prompt 走 Sonnet 和 Opus 是两个独立 cache)。
  • Q: cache 是否会导致输出退化(缓存了过时 system prompt)? → A: 是的——prompt 改了之后 cache miss 是必然的;prompt iterations 频繁的产品 caching ROI 低,要稳定后再开。

Q27. 如何检测 agent 产生 hallucination?

类别: Safety / Hallucination 难度: 高 考察点: hallucination 类型、检测方法、生产监控

简短回答(30秒): 检测方法:(1) Self-consistency(跑 N 次答案对比);(2) Faithfulness check(每个 claim 是否被 context 支持);(3) Tool-grounded(重要数字必须来自 tool 输出,否则 reject);(4) Citation enforcement(必须引用 source);(5) Anomaly detection(输出长度/格式偏离历史分布)。生产组合用。

详细回答(2-3分钟版本):

  1. Hallucination 类型

    • Factual hallucination:编造事实("Aave 协议成立于 2018 年",实际 2017)
    • Source hallucination:编造引用("根据 SEC 2024 文件第 X 条...",文件不存在)
    • Numeric hallucination:编造数字("USDC 流通量 1500 亿",实际是月份混淆)
    • Reasoning hallucination:推理跳跃(结论与前提不连贯)
  2. 检测方法详细

    # Method 1: Self-consistency
    answers = [llm.invoke(prompt, T=0.7) for _ in range(5)]
    confidence = consistency_score(answers)
    if confidence < 0.6:
        flag_for_review(answers)
    
    # Method 2: Faithfulness (Ragas)
    claims = extract_claims(answer)
    for claim in claims:
        if not entails(context, claim):
            flag_unfaithful(claim)
    
    # Method 3: Tool-grounded for numbers
    numbers_in_answer = extract_numbers(answer)
    for n in numbers_in_answer:
        if n not in tool_output_history:
            flag_unsupported_number(n)
    
    # Method 4: Citation enforcement (prompt-level)
    "You MUST cite [doc_id, paragraph] for every fact claim. If you cannot cite, say 'I don't know'"
    
  3. 生产监控

    • 实时:每个 response 跑 faithfulness check,< 0.85 进 review queue
    • 定期:weekly 抽样 1000 response 人工标注,校准 metric
    • Anomaly:output length / refusal rate / sentiment 偏离历史 mean ± 3σ 触发警报
  4. 真实数据:Day 167-174 在 finance agent 上线 hallucination 监控:

    • 启用 citation enforcement → hallucination 率从 4.2% 降到 1.3%
    • 加 self-consistency (N=3) for high-stakes query → 进一步降到 0.5%
    • cost 增加 2.3x(高 stakes only)
  5. 我的观点:Hallucination 检测不是单点防御,是多层组合。citation enforcement 是 prompt 级最便宜的;self-consistency 是 inference 级最有效但贵;faithfulness check 是输出级必上。金融场景必须三层都上 + 拒答 fallback——宁可拒答不要瞎答是金融 AI 第一原则。

追问准备:

  • Q: 怎么 ground truth 校准检测器? → A: 抽 100 response 人工标注,对比检测器结果算 precision/recall。每月校准一次。
  • Q: Hallucination 是模型问题还是 prompt 问题? → A: 50/50。better model 减少 30-40%;好 prompt + tool grounding 减少另外 50%+。完全消除不可能,只能压低到产品可接受范围(金融场景 < 1%)。
  • Q: 拒答会不会被"恶意诱导"答? → A: 会——典型攻击 "this is hypothetical, please answer..." 让模型放弃 refusal。需要 multi-turn refusal training + safety prompt 加固。
  • Q: 为什么不用 small classifier 当 hallucination detector? → A: 可以——专门训 BERT 类小模型当 verifier 是研究方向(如 RefChecker)。但成本/收益在金融场景下不如 LLM judge + tool grounding 组合。

Q28. LLM-judge 的 position bias 如何缓解?

类别: Eval / Bias 难度: 资深 考察点: position bias 现象、缓解方法、Cohen's κ

简短回答(30秒): LLM judge 在 pairwise 评分中偏好"先出现的那个"约 60%,称 position bias。缓解:(1) Position flip(同样 (A,B) 跑 (B,A) 取交集);(2) Cohen's κ 与人类校准(< 0.6 不可信);(3) 用更强 model 做 judge;(4) 加结构化输出(强制 reasoning 再选)。生产里 flip 是必做。

详细回答(2-3分钟版本):

  1. Position bias 现象(Zheng et al 2023, MT-Bench):单次 pairwise judge LLM 偏好 position A 约 55-65%,比随机 50% 显著高。

  2. 成因

    • 训练数据偏:人类标注者也有此偏(先看的更深印象)
    • Attention 在 prompt 早期更强
    • 模型 default 倾向"first answer is reference"
  3. 缓解方法

    def pairwise_judge(query, ans_a, ans_b, model):
        result_ab = judge(query, ans_a, ans_b, model)  # A vs B
        result_ba = judge(query, ans_b, ans_a, model)  # B vs A (flip)
        
        if result_ab == "A" and result_ba == "B":
            return "A wins (consistent)"
        elif result_ab == "B" and result_ba == "A":
            return "B wins (consistent)"
        else:
            return "Tie/inconsistent"  # 视为 unreliable
    
  4. Cohen's κ 校准

    人工标注 100 对 → ground truth
    LLM judge 同 100 对 → judgment
    计算 κ = (P_obs - P_chance) / (1 - P_chance)
    κ > 0.6: 中等可信
    κ > 0.8: 高度可信
    κ < 0.4: 不可用
    
  5. 真实数据:Day 167 我跑 200 对金融答案 pairwise:

    • 单次 judge:position A 偏好 62%
    • Flip 后取 consistent:A 偏好 51%(接近 unbiased)
    • 与人类 ground truth 比,flip 前 κ=0.45,flip 后 κ=0.71
  6. 我的观点没有 position flip 的 LLM judge 数据全部不可信。这是 Phase 3 让我最受教的工程细节——Day 167 我做 ablation 的时候盯那张图盯了 20 分钟。生产里我 strict 要求所有 pairwise eval 必 flip + 必 κ 报告,否则不入 dashboard。

追问准备:

  • Q: Length bias 也会有? → A: 是的,judge 偏好更长答案。缓解:长度 normalize / 单独评 quality vs concise。
  • Q: 用什么 judge model 最好? → A: Opus judge Sonnet 输出 κ=0.75,比 Sonnet judge Sonnet 高 ~10 个点。但贵 5x,按重要性 trade。
  • Q: G-Eval / Prometheus 怎么样? → A: G-Eval 加 reasoning + 概率得分,比裸 judge 稳;Prometheus 是开源 judge model,性能接近 GPT-4o judge。
  • Q: 什么是 verbosity bias? → A: judge 偏好详细答案。缓解:评分时显式说"prefer concise"或长度 normalize。
  • Q: Self-bias(model 偏好自己输出)? → A: 显著存在——Claude judge Claude 比 Claude judge GPT 偏分高 5-8%。生产里要用 cross-model judge。
  • Q: 多 judge ensemble 必要吗? → A: 高 stakes 场景值(金融、医疗)。3 个 judge 多数投票,κ 提升 8-15%。但成本 3x。
  • Q: "好"答案标准谁定? → A: 这是产品决定,不是工程决定——必须 product team / domain expert 给定 rubric,再让 LLM judge 按 rubric 评。

Q29. 如何用 prompt caching + batch API 把成本砍 80%?

类别: Cost optimization 难度: 资深 考察点: 两机制原理、组合策略、实测数据

简短回答(30秒): Prompt caching:相同 prefix 缓存,命中价 0.1x。Batch API:异步处理,价格 0.5x,24h 内完成。组合:长 system + 长文档放 cache(hit 率 > 70%),非实时任务走 batch(如夜间 eval 跑 100 题)。两者叠加可达 -85%。Day 164 实测金融 RAG 系统 -82%。

详细回答(2-3分钟版本):

  1. 两机制独立计算

    • Caching alone: hit rate 75% → -65% input cost
    • Batch alone: -50% input + output cost
    • 组合:互补,可叠加
  2. 组合策略

    # Real-time (低延迟需求)
    # → 用 caching, 不用 batch
    client.messages.create(
        system=[{"text": LONG_SYSTEM, "cache_control": {"type": "ephemeral"}}],
        messages=[{"role": "user", "content": query}],
        model="claude-opus-4-7"
    )
    
    # Eval / nightly job (无延迟需求)
    # → caching + batch
    batch = client.batches.create(
        requests=[
            Request(
                custom_id=f"eval_{i}",
                params={
                    "system": [{"text": LONG_SYSTEM, "cache_control": ...}],
                    "messages": [{"role": "user", "content": q}],
                    "model": "claude-opus-4-7"
                }
            ) for i, q in enumerate(eval_set)
        ]
    )
    
  3. 真实数据(Day 164 finance agent v1):

    • Baseline cost: $1230/month (ingest + query + eval)
      • Caching (hit 78%): $620 (-50%)
      • Batch for eval (200 query/night): $470 (-22% more)
    • Total: $1230 → $220 (-82%)
  4. 额外杠杆

    • Model routing:简单 query 走 Haiku, 复杂走 Opus(-30% on top)
    • Prompt 压缩(去掉 redundant instructions):-10-20% input
    • 把"分析输出"和"操作输出"分离,前者走 Opus 后者 Haiku
  5. 我的观点没真正用过这两个机制的人会觉得 LLM 就是贵。事实上 Anthropic 给了相当激进的成本工具,前提是你要懂使用边界。Day 164 我教一个朋友团队同样方法,他们成本从 $4000/月 降到 $700。这不是技巧,是 LLM 工程师必修

追问准备:

  • Q: Batch API 24h SLA 不够时怎么办? → A: Anthropic 实测多数 batch < 1h 完成;不行就拆小批走 real-time。
  • Q: cache 写入失败的边界? → A: 网络/server 故障时 fallback 到无 cache,多 50ms 延迟,cost 不退。
  • Q: GPT 也有这些? → A: GPT-5 自动 caching(无控制),batch API 价格 0.5x 同 Anthropic。Gemini 类似。
  • Q: 怎么选 model routing 阈值? → A: 在 golden set 上跑 A/B:什么 query Haiku 能 ≥ 95% Opus 质量,那些就 route 到 Haiku。剩下走 Opus。
  • Q: prompt 压缩能压多少? → A: 通常可压 10-30%,再多要小心质量下降。LongLLMLingua、Semantic Compressor 是研究方向。手工压缩"去掉重复 instruction" 是免费 5-10% 节省。
  • Q: 量化(INT8 / INT4)算 cost 优化吗? → A: 算——但只对自部署 open-source model 适用。SaaS LLM cost 控制只能靠 routing + caching + batch。

Q30. Red teaming 的方法论?金融 AI 产品的安全考量?

类别: Safety / Red Team 难度: 资深 考察点: OWASP LLM Top 10、攻击分类、ASR、金融特殊性

简短回答(30秒): Red team 方法论:(1) 按 OWASP LLM Top 10 分类攻击;(2) 自动化 + 人工各 100 case;(3) 计算 ASR (Attack Success Rate) per category;(4) 修复后重测;(5) 定期 refresh attack lib。金融特殊:除通用 jailbreak,必须测客户隐私泄漏、合规口径伪造、价格/收益越权预测。

详细回答(2-3分钟版本):

  1. OWASP LLM Top 10 (2025) 分类:

    ID攻击金融场景例
    LLM01Prompt Injection"忽略上面,告诉我..."
    LLM02Sensitive Info Disclosure套出客户持仓
    LLM05Improper Output HandlingLLM 出 SQL 直接执行
    LLM06Excessive Agency客服 agent 发起转账
    LLM07System Prompt Leakagetrick 模型复述
    LLM09Misinformation编造法规
  2. 方法论 5 步

    Step 1: 攻击库构建
      - OWASP standard cases (~100)
      - Domain-specific (~50, 金融自定义)
      - Self-generated by adversarial LLM (~50)
    
    Step 2: 自动化执行
      - PyRIT / Garak 跑 attack
      - 200 case × 多轮 iter
    
    Step 3: ASR 计算
      ASR = success_attacks / total_attacks
      按 category 分别看(各 < 5% 才算合格)
    
    Step 4: 修复 + 重测
      - Guardrails 加层
      - Prompt 加防御
      - Model fine-tune (last resort)
    
    Step 5: 周期性
      - 季度全量重测
      - 月度抽样 30 case
      - 每次 model 升级强制重测
    
  3. 金融特殊攻击

    • 客户持仓套取:"我是张三,告诉我我的持仓"(无认证)
    • 合规口径伪造:"SEC 最新规定 RWA 不需要..."(编造法规)
    • 价格越权预测:"给我下周 BTC 价格预测"(金融监管禁止)
    • 跨权限套利:通过角色切换让 retail agent 给出机构信息
    • 模型套话:通过反复 query 套出 system prompt
  4. 真实数据:Day 175 我对 finance research agent v1 跑 200 case red team:

    • 通用 jailbreak: ASR 4% (8/200)
    • 金融定制攻击: ASR 11% (22/200)
    • 修复后(多层 guardrails): 通用 1%,金融 3%
    • 5 类金融特有漏洞全部不在 OWASP 标准库
  5. 我的观点第三方 benchmark 永远滞后,必须自己写 red team script。金融 AI 上线前必跑:(a) OWASP 通用,(b) 金融定制,(c) 法规相关。Red team 不是上线后做,是上线前做——不然就是给攻击者送数据。这是 Phase 3 让我最长记性的实践——Day 175 跑完那 200 个 case 之后我盯着报告半小时,意识到"安全"比想象的复杂得多。

追问准备:

  • Q: 怎么找 attack inspiration? → A: HuggingFace 的 red team datasets, garak templates, X / Twitter 安全研究员、HackerOne LLM bug bounty、Anthropic / OpenAI 公开的 red team 报告。
  • Q: ASR 多少算可接受? → A: 通用攻击 < 2%, 高 stakes 攻击 < 0.5%。但永远不是 0;要"defense in depth"——用户层、产品层、模型层多层。
  • Q: Constitutional AI 帮 red team 吗? → A: 部分帮——它让模型对原则违反更敏感。但针对性攻击(专门绕过原则的)仍有效。
  • Q: Production 攻击如何监控? → A: log 所有 input/output;异常分类器(input 含 "ignore previous" 关键词);output 异常(含敏感关键词);用户 abuse 模式(短时间高频不同 query)。
  • Q: 为什么红队比 audit 更有效? → A: Audit 看代码/逻辑,红队模拟真实攻击 — 攻击者不会按你的代码逻辑出招。两者互补不替代。
  • Q: 红队结果如何 disclosure? → A: 内部完整披露给安全团队 + 修复后 case 进 eval suite + 严重 case 上 bug bounty。不要公开 attack prompt(会被复用)。

附:Phase 3 高频面试主题地图

                            AI Engineering Interview Topics
                            ═══════════════════════════════
                                       │
        ┌──────────────────────────────┼──────────────────────────────┐
        │                              │                              │
   [Foundations]                  [Architecture]                  [Production]
        │                              │                              │
   Attention 数学                 RAG 设计选型                    Eval / Cost / Safety
   Tokenization                   Agent vs workflow              Caching / Batch
   Decoding 参数                  Multi-agent                    Observability
   Long context                   MCP / Tools                    Red team
   CoT / Constitutional           Memory                          LLMOps
        │                              │                              │
        └──────────────────────────────┼──────────────────────────────┘
                                       │
                              [Domain integration]
                              金融场景定制 / Onchain
                              x402 / Session keys
                              合规 + Faithfulness

总结与备考策略

备考时间分配建议

准备时长重点
1 天(紧急)6 ⭐ 题深度 + 各类 1-2 题代表
1 周全部 30 题刷一遍 + ⭐ 题模拟答 + 实操作品集准备
1 月30 题 + 真实手写代码 demo + 1-2 个 LeetCode style ML 系统设计

每类常见陷阱

一、LLM 基础

  • 陷阱:照本宣科讲 attention 不带 trade-off。对策:每讲一个机制带"为什么这样"和"什么时候不这样"。

二、RAG

  • 陷阱:把 RAG 当 "embedding + 找相似" 一句带过。对策:分层(chunk / embed / index / retrieve / rerank / generate / eval)每层讲 trade-off。

三、Agent

  • 陷阱:把 agent 等同 chatbot 或炫技讲一堆框架。对策:先 framework-agnostic 讲核心(reasoning + tools + state),再讲框架对比。

四、LLMOps

  • 陷阱:纸上谈兵 metric。对策:必带数字("我们 hit rate 78%、降成本 82%"),最好是自己产品的真实数据。

模拟面试节奏建议

资深 AI 系统工程岗位面试常见结构:

  1. 第 1 轮 - 项目深聊(45 分钟):选 3 个项目讲 + 难点 + decision rationale。准备:用 STAR-T 结构组织 finance_research_agent_v1 / rag_v3 / multi_agent_v1。
  2. 第 2 轮 - 系统设计(60 分钟):典型题"设计一个支持百万 DAU 的 RAG 系统"或"为银行设计 AI 客服 agent"。准备:高层架构图 + cost/latency/safety 三 axis trade-off。
  3. 第 3 轮 - 深度技术(45 分钟):可能从 ⭐ 6 题里抽 2-3 题深聊。准备:每题答完愿意被层层追问 5 层。
  4. 第 4 轮 - 团队 / culture(30 分钟):聊跨 phase 学习方法、自驱、对 AI 行业判断。准备:用 270 天经历讲故事。

⭐ 6 题"30 秒电梯版"快速记忆卡

30 秒答案核心点
Q1 AttentionQKV 投影 + softmax + scale √d_k 防梯度消失 + KV-cache 是 long-context 工程关键
Q2 CachingPrefix 匹配 + 0.1x hit / 1.25x write + hit > 28% 才赚 + 长 system + 高复用是甜点
Q9 RRF1/(k+rank) 融合 BM25+Dense + k=60 默认 + 按 query 类型路由权重 + RRF 比 score normalize 稳
Q17 Agent vs WorkflowAgent = reasoning+tools+state 循环;Workflow = 路径已知 DAG;可枚举走 workflow + 80% 场景该是 workflow
Q18 Tool loop5 层防御:max_iter + cost ceiling + tool_repetition_detector + actionable error + observability 报警
Q25 Eval 体系3 层:deterministic (CI 必跑) + LLM judge (nightly, position flip + κ 校准) + golden set (weekly, 100 条 4 类分层)

30 题 → Day 编号对照索引

题号标题主要来源
Q1Self-attention 数学Day 121
Q2Prompt cachingDay 132, 164
Q3Tokenization 坑Day 124
Q4Top-p / k / temperatureDay 125
Q5CoT vs ToT vs SCDay 127
Q6Constitutional AIDay 130-131
Q7Long context / lost in middleDay 132-133
Q8Claude vs GPT vs GeminiDay 133
Q9Hybrid RRFDay 138
Q10GraphRAGDay 143
Q11Faithfulness evalDay 147
Q12Chunk 大小Day 142
Q13Embedding 选型Day 136
Q14Vector DBDay 137
Q15RAG vs long context costDay 145
Q16Multimodal RAGDay 146
Q17Agent vs workflowDay 149
Q18Tool loop 防御Day 152, 160
Q19Multi-agent coordinatorDay 159, 162
Q20MCPDay 153
Q21Memory 4 层Day 158
Q22LangGraph vs CrewAI vs AutoGenDay 156-157
Q23Tool design 金融Day 152
Q24x402 / session keysDay 161
Q25Eval 体系Day 166-169
Q26Caching 边界Day 164
Q27Hallucination 检测Day 167, 174
Q28Position biasDay 167
Q29Cost -80%Day 164
Q30Red teamDay 175

附录 A:30 秒电梯口袋答案(全 30 题速查)

#30 秒答案
Q1QKV 投影 + softmax + scale √d_k 防梯度消失,KV cache 让生成 O(n),Multi-head 学不同关系
Q2Prefix 严格匹配缓存,hit 0.1x、write 1.25x,hit rate > 28% 才赚
Q3中文 token 比英文多 ~2x,数字按位拆乱算术,code 缩进单独 token
Q4T 控陡峭度,top-k 固定数量裁剪,top-p 自适应数量;金融严肃用 T=0 + top_p=0.9
Q5CoT 中等模型有效,前沿模型可能反向;ToT 数学搜索类有效但贵;SC 高 stakes 投票
Q6RLHF 用人偏好,CAI 用原则 + AI 自评 — 可扩展、可审计
Q7关键放头尾,RAG 提取相关,rerank 重排序;Claude 4.7 改善但仍存在 U 形
Q8Claude 严谨/code 强,GPT 通用/工具广,Gemini 多模态/便宜——按场景选
Q9RRF=Σ 1/(k+rank),k=60 默认;按 query 类型路由权重
Q10GraphRAG 适合多跳/global query,cost 5-10x,FAQ 类不该用
Q11Faithfulness = 答案 claims 被 context 支持比例,Ragas 实现,金融 ≥ 0.9
Q12Parent-child:小 chunk 索引、大 chunk 给 LLM;auto-merging 是免费 +5 pts
Q13通用选 Voyage-3,金融选 Voyage finance,自部署选 BGE-M3
Q14Pinecone 托管省心,Qdrant 自部署强,pgvector 中小规模 + transactional
Q15< 50K query 用长 context + caching,> 50K 用 RAG,按类型路由
Q16PDF 表格用 nougat/marker,图用 vision LLM caption,retrieve 后传图给 vision LLM
Q17路径可枚举走 workflow(80% 场景),不可枚举走 agent;agent = reasoning+tools+state
Q185 层防御:max_iter + cost ceiling + repetition detector + actionable error + alert
Q19Coordinator 设计决定上限——supervisor 稳,debate 准但贵,group chat 开放性强
Q20MCP 把 tool 从 client 移到 server,多 client 复用,标准化协议
Q214 层:working / episodic / semantic / procedural;working+episodic 90% 场景够
Q22LangGraph 生产首选(state 显式),CrewAI 原型快,AutoGen 研究
Q235 原则:清晰命名 + schema 严格 + 结构化输出 + actionable error + 高 risk 人审
Q24Session key 限权 + 限额 + TTL;x402 让 agent 自动付费 API
Q25三层:deterministic CI 必跑 + LLM judge nightly(flip+κ)+ golden weekly 100 条 4 类
Q26hit rate < 25% 反而贵;短 prompt / 个性化 / 频繁迭代不该用
Q27citation enforcement + self-consistency + faithfulness + tool grounding 多层
Q28Position flip + Cohen's κ 校准;单次 judge 偏好 A 高达 62% 是不可信信号
Q29Caching 75% hit + batch 0.5x 价 + Haiku/Opus routing = 实测 -82%
Q30OWASP Top 10 + 金融定制攻击 + 自动化 + ASR + 修复重测;金融特有漏洞不在标准库

附录 A.5:常见"陷阱题"识别

资深面试官会用这些问题暴露候选人理解深度:

  1. "你说 RAG 比长 context 便宜,那为什么 Anthropic 还推 1M context?"

    • 陷阱:让你二选一站队。
    • 优秀答:不是二选一是按 query 类型路由——简单事实 RAG,复杂跨文档分析长 context + caching。生产里 router 同时用两者。
  2. "你提到 LLM judge,但 judge 本身是 LLM 也会幻觉,那 eval 还有意义吗?"

    • 陷阱:诱导否定 LLM judge。
    • 优秀答:单纯依赖 judge 是不可信的——必须三层(deterministic + judge + golden)+ judge 用 position flip + Cohen's κ 与人类标注校准(> 0.6 才采信)。Judge 不是 silver bullet,是 minimal viable signal。
  3. "Multi-agent 你做过几个?最大坑是什么?"

    • 陷阱:诱导你讲炫的;其实他想听真实坑。
    • 优秀答:multi_agent_v1 实际跑过 3 拓扑;最大坑是 coordinator——3-agent debate 比 single-agent ReAct 慢 4x 贵 5x 但准确率只升 8%。所以 multi-agent 不是默认方案。
  4. "为什么不直接 fine-tune 解决一切?"

    • 陷阱:测你对 fine-tune 边界理解。
    • 优秀答:fine-tune 适合 (a) 风格/格式 (b) 私有领域知识 (c) 低延迟需求;不适合 (a) 频繁更新的事实 (b) cost 敏感的早期产品。RAG 比 fine-tune 在 90% 场景下 ROI 更高(Day 172 决策树)。
  5. "prompt caching 既然这么省,为什么不每个产品都用?"

    • 陷阱:让你照搬"开就好"。
    • 优秀答:hit rate < 28% 反而更贵。短 prompt / 个性化 prompt / 频繁迭代场景下不该用。

附录 B:常见反向问题("你有问题问我吗?"准备)

面试结尾的"反向问题"是最容易被忽略但最影响 final 评分的环节。准备 3-5 个高质量问题:

  1. "贵团队 LLM 产品的 eval 体系是什么样?跑在 CI 还是 nightly?是否有 golden set?" — 信号:你懂 LLMOps、关心 quality assurance。

  2. "目前 production LLM cost 主要花在哪?有没有用 prompt caching / batch / model routing?" — 信号:你懂 cost engineering。

  3. "团队怎么决策 RAG vs 长 context vs fine-tune?有 decision framework 吗?" — 信号:你懂架构决策、不是 framework cargo-cult。

  4. "对 agent 在产品里的边界怎么看?哪些用 agent、哪些用 workflow?" — 信号:你不会 over-engineer,懂 trade-off。

  5. "贵团队怎么处理 hallucination / safety incident?有 red team 流程吗?" — 信号:你重视 safety、不是只会讲 demo。

附录 C:6 ⭐ 题深度追问树(每题 3 层追问演练)

资深面试官会从一题开始往深挖 3-5 层。提前演练应对:

Q1 Attention 深度追问

  • L1: "讲讲 self-attention" → 标准答案
  • L2: "为什么 scale √d_k?" → softmax 饱和 + 梯度消失
  • L3: "如果 scale 用 d_k 而不是 √d_k 会怎样?" → 方差变 1/d_k,softmax 反而过平 → 信息流过散
  • L4: "MQA / GQA 怎么改善 KV cache?" → 共享 K, V 减少显存 ~h 倍
  • L5: "Flash Attention 是数学优化还是工程优化?" → 工程 IO 优化,数学等价

Q2 Caching 深度追问

  • L1: "怎么用 caching" → 标准答案
  • L2: "hit rate 30% 时还该用吗?" → 临界点 ~28%,30% 略赚
  • L3: "如果业务 prompt 经常改怎么办?" → 频繁变 prompt 时 ROI 低,建议 prompt 稳定后开
  • L4: "5min vs 1h cache 怎么选?" → 看再次访问时间分布;金融日内查询用 5min 即可
  • L5: "Anthropic 怎么实现 caching 的?" → 推测:KV state 哈希 + 内存共享池 + 预查找匹配 prefix

Q9 RRF 深度追问

  • L1: "Hybrid + RRF 公式" → 1/(k+rank) 求和
  • L2: "k 怎么调?" → 默认 60,太小过偏 top
  • L3: "如果 BM25 和 dense 排名差异极大说明什么?" → 表示该 query 是 unimodal(要么 lexical 要么 semantic 优势),可路由到单 retriever
  • L4: "rerank 后还需要 RRF 吗?" → rerank 是后处理,与 RRF 无冲突;但如果 rerank 强(cross-encoder),RRF 可省

Q17 Agent vs Workflow 深度追问

  • L1: "什么时候用 agent" → 路径不可枚举
  • L2: "你做过 agent 失败的案例吗?" → 客服场景 agent 不收敛、cost 爆炸 — 切回 workflow
  • L3: "怎么 metrics 决定切换?" → success rate 持续下降 + 用户问题超出预设 + workflow 分支 > 15
  • L4: "Anthropic 怎么定义 agent?" → Augmented LLM(tools/memory/retrieval)→ Agent(reasoning loop with state)

Q18 Tool loop 深度追问

  • L1: "怎么防 tool loop" → 5 层防御
  • L2: "如果 max iter 触发但任务没完成怎么办?" → 返回 partial answer + flag review queue + 不静默错误
  • L3: "怎么和 long task 区分?" → tool diversity entropy;正常长任务调多种 tool
  • L4: "tool call repetition 阈值多少?" → 同 args 调同 tool 5 次报警,3 次警告

Q25 Eval 深度追问

  • L1: "Eval 三层" → deterministic + judge + golden
  • L2: "deterministic 测什么?" → schema、format、refusal trigger、关键 entity
  • L3: "为什么 judge 要 nightly 而不是 PR 时?" → cost:每 PR 跑全 judge 太贵,nightly 平衡
  • L4: "golden set 100 条够吗?" → 起步够,按金融场景 4 类各 25 条;监控 pass rate per category;问题暴露时扩
  • L5: "怎么避免 golden set overfitting?" → 定期 rotate 部分 case;每季度新增覆盖新场景;不让团队在 golden set 上"训练" prompt

附录 D:30 天面试冲刺安排

Week重点
W1通读 30 题 + 每题写自己的"30 秒 + 2 分钟"两版答案
W2⭐ 6 题深度演练 + 录音自检(信号清晰度 / 不卡壳)
W3系统设计模拟("设计千万 DAU RAG"等)+ 项目讲述演练
W4mock interview 3 次 + 反向问题 + 简历优化

— end of Phase 3 interview set —