Skip to content

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 17:18
· 4 commits to main since this release

Added

memory_search 增加 limit:默认最多返回 20 条,0 表示不限,负值按 20 处理。返回体形状不变(仍是 { record, score } 数组),"被截断"只能从条数等于 limit 推断——这条约定写进了工具描述。

动机是 Max-Null/dsh-memory#1:中文分词是「单字 + 2-gram」,常见汉字让几乎全部记录拿到正分。本机 279 条库实测宽查询命中 235 条(84%),一次返回体可达数万字符;而 20 名之后分数已趋同(ssid 这类单 token 查询前 50 名几乎同分)。

Changed

  • 默认返回变少(0.17.0 之前是全量)。要看全量传 limit: 0;memory_list 不受影响。
  • 工具描述补两点:条数上限与"条数等于 limit 时可能还有更多"的约定;以及"多词窄查询比单个常用词排序好得多"——截断只降成本,不改召回质量。

边界

  • 截断只在工具层,engine.search() 仍是「全部正分命中」——prompt_search 依赖它的全量结果给模板排序,写进 engine 会让命中的模板静默沉底。
  • 命中记账不变:仍只记 BM25 前 5(宽查询不该把半个库记成热的)。
  • 不做 offset 分页:第 50 名之后的分数与末位同量级,翻出来是噪声;看全库走 memory_list。

设计:docs/设计/2026-10-21-memory-search-结果截断-设计方案.md。