召回分析
按 Agent、按查询查看哪些记忆被召回、被展示、被真正用上。
召回分析展示召回找到了什么、展示了什么,以及 Agent 实际采用了什么。用它们可以找出噪声较大的记忆、本该出现却从未出现的记忆,以及需要关注的运行时。
在哪里查看
- **Loremem 云服务:**概览页面展示召回分析、渠道概览和最近查询。
- **自托管:**召回页面(
/recall)展示同样的分析,并可以按天数和来源(渠道)筛选。
两者默认都统计最近 14 天。
四个核心数字
| 数字 | 统计内容 | 应当关注什么 |
|---|---|---|
| 合并(Merged) | 统计时段内所有召回中参与排序的候选 | 候选池的规模。展示(Shown)的记忆始终是合并(Merged)的子集。 |
| 展示(Shown) | 注入到上下文中的候选 | 每次查询展示的数量不超过条数上限(默认 3 条)。把它与查询数对照来看。 |
| 查询(Queries) | 统计时段内的召回次数 | 每个由召回处理的提示词计为一次 |
| 采用(Used) | Agent 带着查询标识打开过的已展示记忆 | 应大于零,并随真实工作而增长。它永远不会超过展示数,因为只有被展示的记忆才会计为已采用。 |
没有通用的目标值。健康的状态大致是:大多数查询展示的记忆少于条数上限,展示的记忆中有稳定比例被采用,并且下文的区分度为明显的正值。应当纵向比较同一渠道在不同时段的表现,也可以横向比较不同渠道。
渠道表
渠道就是运行时,例如 Claude Code 或 Codex。渠道概览为每个渠道显示一行。
| 列 | 含义 |
|---|---|
| 展示 | 统计时段内展示给该运行时的记忆数 |
| 采用 | 该运行时的 Agent 打开过的已展示记忆数 |
| 新增记忆、更新记忆、删除记忆 | 统计时段内通过该运行时做出的变更。一个会话很多却从不新增或更新记忆的运行时,可能没有保存经验。 |
| 采用 p25 | 已采用记忆中,四分之一的分数落在该数值以下 |
| 未用 p75 | 已展示但未被采用的记忆中,四分之三的分数落在该数值以下 |
| 区分度 | 采用 p25 减去未用 p75 |
用大白话解释:把该渠道 Agent 采用过的记忆分数从低到高排列,处于四分之一位置的分数就是“采用 p25”。对已展示但未被采用的记忆做同样的排列,处于四分之三位置的分数就是“未用 p75”。两者之差就是区分度。
- 区分度为正:即使是较弱的那部分已采用记忆,分数也明显高于大多数被忽略的记忆。召回把 Agent 真正需要的内容排在了前面。
- 区分度接近零或为负:分数无法区分有用的记忆和被忽略的记忆。应先减少噪声,而不是把它当作降低阈值的理由。
说明
只有当渠道积累了一定数量的已采用和已展示记忆后,这三个分数才比较可靠。Lore 只有在至少有 3 条已采用候选和 5 条已展示候选时,才把样本视为可用于分析。区分度是相对指标:应比较不同渠道,并观察其随时间的变化,而不是追求某个固定数值。
最近查询
“最近查询”表列出最近的召回记录,包括查询文本、渠道、耗时、展示数和采用数,以及发生的时间。点击查询文本即可打开该查询的详情。表格支持翻页,可以查看更早的记录。
查询详情
查询详情展示本次请求和它的标识,以及召回流水线的各个阶段。选择某个阶段,即可只看该阶段产生的候选。
| 阶段 | 包含的内容 |
|---|---|
| 查询(Query) | 本次召回请求的输入和汇总结果 |
| 精确(Exact) | 路径、术语和查询词的精确匹配 |
| 术语(Glossary) | 通过术语语义相似度找到的候选 |
| 语义(Semantic) | 通过记忆视图向量(gist 和 question)找到的候选 |
| 词法(Lexical) | 通过全文检索和文本匹配找到的候选 |
| 合并(Merged) | 所有阶段合并后的最终排序 |
| 展示(Shown) | 通过展示筛选的已排序候选 |
每个候选行包含以下列:
| 列 | 含义 |
|---|---|
| 条目(Entry) | 记忆的 URI |
| 视图(View) | 如果候选是通过视图匹配到的,显示命中的视图 |
| 初始分(Pre) | 找到该候选的那个阶段给出的分数 |
| 最终分(Final) | 所有阶段合并并加上加分后的分数,即用于排序和展示的分数 |
| 排名(Rank) | 候选在合并排序中的位置 |
| 展示位(Displayed) | 候选是否占用了一个展示位 |
| 状态(Status) | 已使用(展示并被打开)、已展示(注入但未被打开),或未展示(已排序但未注入) |
| 线索(Cues) | 匹配到的词 |
根据结果采取行动
| 看到的现象 | 通常意味着 | 应该怎么做 |
|---|---|---|
| 展示高、采用低 | 召回展示了 Agent 忽略的记忆,即噪声较大 | 提高 recall.display.min_display_score,或调低 recall.display.max_display_items。让触发条件更具体,使记忆只匹配到更少的无关提示词。 |
| 需要的记忆从未展示 | 它的触发条件和术语与工作的描述方式不一致 | 把触发条件改写为一个具体的情境,把提示词中的词加入术语,然后重新运行该查询。 |
| 需要的记忆被扣留,分数刚好低于阈值 | 它接近展示门槛 | 先改善记忆本身。只有当正确的记忆持续刚好低于阈值时,才降低最低分。 |
| 某个渠道展示很多,却没有任何采用 | 该渠道的 Agent 没有带着标识打开记忆 | 检查运行时在打开节点时是否传入了 session_id 和 query_id。 |
| 区分度接近零或为负 | 分数无法区分被采用和被忽略的记忆 | 先减少噪声,然后再次检查。 |
| 中文提示词在精确和词法阶段得分较弱 | 缺少中文分词 | 参见提升召回质量。 |
说明
每次只改一件事,然后将接下来几天的分析结果与改动前的时段进行对比。