跳到主要内容

778 篇博文 含有标签「llm」

查看所有标签

AI 知识库中的溯源债务:当 RAG 系统开始检索自身的输出

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的 RAG 系统很可能正在把自己的输出编入索引。只是你还不知道而已。

一切往往从一件看似无害的事开始:有人把一份季度总结文档添加到了知识库。而这份总结,正是由查询该知识库的同一个 LLM 生成的。六个月后,开发者又加入了 AI 生成的版本说明,随后是自动生成的支持 FAQ,再然后是合成的入职指南。这些文档没有任何一份被标注为 AI 生成。对于检索系统而言,它们与人工撰写的一手资料看起来别无二致。于是,当你的模型检索上下文来回答问题时,其中相当一部分上下文是之前某次模型运行所输出的压缩版、甚至可能已经失真的结果——而你的准确率指标依然绿灯常亮。

这就是溯源债务:在检索语料库中,AI 生成的内容在没有来源标记的情况下不断累积,形成一个反馈循环——每一代模型的输出,都成为下一代模型的原始素材。

安静放弃模式:AI 参与度指标为何在说谎

· 阅读需 11 分钟
Tian Pan
Software Engineer

有一种特定的失效模式正在悄悄破坏 AI 产品的数据指标,却没有人察觉。你的仪表盘显示建议接受率为 34%、DAU 强劲、功能参与度持续增长。仪表盘没有显示的是:60% 被接受的建议随后被立即重写,参与度最高的用户正是那些点击 AI 输出、全选,然后自己重新输入的人;这个功能对下游任务完成率零可测影响。

这就是"安静放弃"模式:用户系统性地绕过 AI 功能,同时产生活跃用户的全部表面指标。他们不会禁用该功能——他们只是忽略其输出。在你的分析系统中,他们与最佳 AI 用户看起来完全相同。

配额饥饿:当你的 AI 功能相互消耗速率限制时

· 阅读需 12 分钟
Tian Pan
Software Engineer

凌晨 2 点,一个定时报告生成任务向共享的 API 密钥并行发出五十个 LLM 请求。等到早上 9 点的产品演示开始时,每一个实时对话补全都在悄无声息地超时。错误仪表板一片绿色,日志里没有 429 错误。模型确实在返回响应——只是慢了十秒,而这个功能的 SLA 是两秒。

这就是配额饥饿。它不像故障,它看起来只是"今天 AI 有点慢"。

RAG 评估失效悖论:为什么更新知识库会破坏你的基准测试

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 RAG 评估套件在忠实度(faithfulness)方面达到了 0.89。你向知识库添加了 5,000 个新的支持文档。你重新运行相同的评估,忠实度降到了 0.79。你的团队提交了一个模型退化(model regression)工单。

其实没有任何退化。你的评估只是变成了一个谎言。

这就是 RAG 评估失效悖论:在你更新知识库的那一刻,你针对旧索引构建的评估集就会悄无声息地停止衡量其设计的初衷。大多数团队在几个月后才会发现这一点——在为幻影般的退化消耗了大量的工程周期之后——如果他们真的能发现的话。

RAG 数据契约问题:摄取管道如何悄然破坏检索质量

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 RAG 系统存在一个不会抛出异常的 Bug。它不会拉高错误率,不会在延迟仪表盘上留下痕迹。相反,它会悄悄地给出听起来自信、合理却错误的答案——而没有人在数周内察觉。

这就是 RAG 中的数据契约问题:你的摄取管道是下游所有环节的事实来源,但它没有 Schema 校验、没有新鲜度保障,也没有在外部世界的形态悄然改变时发出告警。每当上游数据源新增字段、分块参数发生偏移,或者嵌入模型被更新,检索质量就会无声地退化。

80% 的企业级 RAG 项目在生产环境中会遭遇严重故障,而其中最隐蔽的那些故障从不宣告自身的存在。

速率限制是设计约束,不是错误代码

· 阅读需 10 分钟
Tian Pan
Software Engineer

我认识的一个团队构建了一个带有智能体循环的金融助手。第一周,API 费用是 127 美元。第十一周,费用飙升至 47,000 美元——同样的系统,同样的功能,范围上没有任何有意的变化。智能体触及了速率限制,重试逻辑忠实地进行了重试,循环没有熔断器,成本在悄无声息中不断累积,直到有人注意到他们设置得太高的计费告警。

这不是一个 bug 的故事,而是一个架构的故事。团队的思维模型将速率限制视为需要被动处理的错误。他们构建的系统完全反映了这种模型。那 47,000 美元的那一周,正是系统按设计运行的结果。

你的拒绝日志其实是伪装的产品需求清单

· 阅读需 10 分钟
Tian Pan
Software Engineer

每个 AI 产品团队的某个角落都有一个安全仪表板,显示着被拒绝的请求。触发了哪些过滤器,拦截了哪些越狱尝试,抓住了哪些违反政策的行为。运营团队通过它来确保防护栏(guardrails)稳固,而其他人都对其视而不见。

这是一个错误。AI 拒绝的请求是你所能接触到的最集中、最真实的用户调研信号。如果一个用户尝试了三种不同的措辞,想让你的产品去做它不愿做的事情,他是在以极其清晰的方式告诉你,他到底想要什么以及无法得到什么。将这一信号视为安全产物而非产品产物,是在浪费你所能收集到的最宝贵的反馈。

多租户 LLM 推理中的调度公平性:为什么 FIFO 是错误的默认选择

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的公司运行着一个共享的 LLM 服务集群。两个租户在使用它:一个面向客户的聊天机器人,其首令牌延迟 SLO 为 500 毫秒;以及一个批量文档丰富管道,通宵处理数千个长上下文提示。某天凌晨三点,聊天机器人团队把你叫醒,因为他们的 P95 TTFT 飙升到了 12 秒。根本原因:批处理任务比预期更早启动,用预填充工作占满了 GPU 内存,而聊天机器人的短请求在一列 8,000 个令牌的提示后面等待。你的 FIFO 调度器给了它们同等的优先级。在你手动终止批处理任务之前,聊天机器人的 SLO 已经被违反了 4,000 次。

这种故障模式很常见,理论上早已被理解,但在实践中却出人意料地普遍。大多数团队部署 vLLM 或 TGI 时使用默认的 FIFO 调度器,随着时间推移添加多个工作负载,只有在发生事故时才发现优先级反转问题。

你的评测套件是一座博物馆:生产故障应当成为明天的测试用例

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数 AI 团队只会构建一次评测套件——在上线前的冲刺阶段,他们精心设计了边界场景用例,记录预期输出,经过评审后发布。六个月后,套件仍然通过。然而,模型在实际生产流量上已经悄然退步,而评测框架却是在那些流量出现之前编写的。它仍然在评判作者提出问题的答案,而非用户真正在问的问题。

这就是"博物馆问题":一个在某个时间点策划的评测套件会不断积累文物。它证明系统能处理某人预期的场景,却无法覆盖真正让它崩溃的场景。

LLM 系统中的软约束与硬约束:为什么失配会导致真正的失败

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数 LLM 系统故障并非源于模型出错。而是源于系统误判了模型能够强制执行的约束。当你在系统提示词中写下“绝不泄露客户数据”并将其等同于“撤销数据库凭据”时,你引入了一个范畴错误。这最终会导致安全事件、可靠性故障或受损的用户体验——而你直到故障在生产环境中发生时才会察觉。

软约束与硬约束之间的区别是架构层面的,而非风格层面的。搞错这一点不会导致风格退化,而是会导致安全漏洞。

Staging 环境的谎言:为什么预生产阶段对 AI 系统失效了

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的测试环境通过了所有检查。LLM 对每个测试提示词都做出了正确响应。延迟表现良好。质量评分看起来也不错。你发布了。然后,两天后,生产环境开始在你的评估集从未涵盖的一类查询中出现幻觉,你的成本飙升了 3 倍,因为缓存是冷的,而且你的供应商推送的模型更新静默地改变了行为,而你的旧测试套件无法检测到。测试环境显示一切正常,生产环境却给出了截然不同的结果。

这并不是一个可以通过编写更多测试用例来弥补的测试差距。预发布环境对 AI 系统具有结构性的误导,而对传统软件则不然。失败模式是系统性的,解决办法不是更好的测试环境,而是一种不同的架构。

过时的文档,肯定的错误答案:AI 帮助中心里隐藏的失效模式

· 阅读需 12 分钟
Tian Pan
Software Engineer

Google Research 有一个令人不安的发现:当 RAG 系统检索到不足或过时的上下文时,幻觉率并不会保持不变——它会从 10.2% 飙升至 66.1%。增加一个陈旧的知识库并不会让你的 AI 帮助中心保持中立。它会让你的 AI 给出自信错误答案的可能性比你什么都不发布还要高出六倍。

"过时的文档,肯定的错误答案:AI 帮助中心里隐藏的失效模式"

大多数构建 AI 驱动的搜索和帮助中心的团队都专注于检索质量、嵌入模型和分块大小。几乎没有人建立流程来追踪语料库中的文档是否仍然准确。这种差距——文档债(documentation debt)——现在正表现为生产环境的可靠性问题,而不仅仅是内容问题。