考察点
这道题出自小红书 AI 产品实习面,明显偏向有技术功底的候选人。它把两个工程味很重的问题打包问:上下文管理考的是你知不知道 token 是稀缺资源、多轮检索会把窗口撑爆;输出约束考的是你能不能把「让模型别乱说话」落到具体机制上,而不是一句「优化 prompt」。产品经理答这题不需要写代码,但要能讲清楚每层的取舍——压缩会丢信息、约束会牺牲流畅度,这些 trade-off 才是产品决策。追问会往「压缩丢了关键信息怎么办」「约束后答非所问怎么发现」「笔记内容进上下文前做什么处理」走。
参考答案
上下文管理的核心矛盾:窗口有限,检索贪婪
检索 Agent 的典型流程是多轮的:理解 query → 检索 → 读结果 → 判断要不要补检索 → 生成答案。问题在于每一轮检索都想往上下文里塞笔记全文,几轮下来窗口就满了——要么截断丢信息,要么成本爆炸、延迟飙升。所以上下文管理的第一原则是:进窗口的每一段内容都要回答「它凭什么占这个位子」。
我的做法分四层。第一层,检索结果分层进窗:初筛召回几十篇笔记,但进上下文的不是全文,而是标题、核心段落、发布时间、作者属性的摘要化卡片,每篇压到一两百 token;只有模型判断「这篇必须精读」的少数几篇才拉全文进来。第二层,历史轮次做滚动压缩:多轮对话里,早期的检索结果和推理过程在确认不再相关后,压缩成一两句结论性的备忘(「已排除 2022 年前的攻略,价格信息以笔记 X 为准」),原始内容踢出窗口。第三层,结构化提取代替原文驻留:从笔记里抽出的关键信息(店名、价格、开放时间)落成结构化的中间表,后续轮次引用表格而不是原文。第四层,给上下文设预算制度:系统提示、用户记忆、检索内容、推理过程各占多少 token 有明确配额,超了就触发压缩,这个预算要当成产品参数来运营。
压缩的代价和补救
要承认压缩必然丢信息,关键是让丢失发生在「丢了也不影响结论」的地方。补救手段有两个:一是压缩时保留「可回查指针」——被踢出去的笔记 ID 和原文在库里还有,模型发现结论站不住时可以发起二次检索把原文捞回来,上下文管理因此不是单向丢弃而是「可换页的内存」;二是对时效敏感、数字密集的内容(价格、政策)压缩时优先保留原始表述,这类信息一改写就容易出错。
输出约束:四道闸门
小红书场景下输出约束要解决的具体问题是:模型不能把笔记里的软广当事实复述、不能编造笔记里没有的信息、不能生成违反社区规范的内容。我的四道闸门按从生成前到生成后排列。
第一道,生成前的信源约束:prompt 里明确「答案中的每个事实性陈述必须来自提供的笔记,并在句末标注笔记 ID;没有信源支撑的内容要么不答,要么明确说明『现有笔记没有覆盖』」。把「不知道」设为合法答案,是防幻觉最有效的单一手段。
第二道,结构化输出:需要程序消费的部分(推荐的店名列表、价格区间)强制 JSON schema 输出,模型只能在规定的字段和枚举里填,格式错误直接重试。自由文本和结构化数据分开生成,别指望一个输出既好看又能被程序稳定解析。
第三道,生成后的自动校验:答案里的实体和数字回查是否出现在引用笔记里,对不上则拦截重生成;社区规范词库和敏感类目(医美、金融)走独立的安全过滤层,这层不依赖模型自觉,是确定性规则。
第四道,展示层的降权设计:AI 答案明确标注「由 AI 根据 X 篇笔记整理」,引用笔记以卡片形式挂出,用户一键可溯源。这不是免责声明,是把验证能力交还给用户——约束做到 99%,剩下 1% 靠透明兜底。
产品经理在这件事里的位置
这两件事看起来工程味重,但处处是产品决策:上下文预算是成本和体验的权衡,压缩策略决定答案的完整性,「宁可不答」的阈值定高了用户觉得笨、定低了幻觉冒头。PM 要干的是把这些参数和业务指标挂上钩,用 badcase 回流驱动调整,而不是甩给算法同学一句「把效果做好」。
可能的追问
- 压缩把关键信息弄丢了,答案错了怎么发现? 答:两条线监控。离线用评测集回归,每次压缩策略变更都跑一遍看准确率;线上看「答案与引用笔记的一致性校验不通过率」和用户负反馈率,突增就先回滚策略再排查。
- 模型回答「现有笔记没有覆盖」太多,用户觉得没用怎么办? 答:先看不答的 query 分布——如果是笔记生态本来就缺的内容品类,这是供给问题,反馈给内容运营;如果是检索没召回到,优化检索。「不答率」本身是分层归因的入口,不能笼统压指标。
- 笔记正文进上下文前做什么预处理? 答:去噪(表情、话题标签、引流话术剥离)、提取发布时间地点等元数据、按段落语义切块。笔记是强口语、强格式噪音的语料,清洗质量对最终答案的影响不亚于模型本身。