返回列表 发布新帖
查看: 440|回复: 0

Hermes Agent知识库扩张后检索性能突围之道

988

主题

0

回帖

833

积分

高级会员

积分
833
发表于 6 天前 | 查看全部 |阅读模式
过去两个月里,我把 Hermes Agent 的知识库从最初的几万条文档,扩到了百万级别(含多语种网页、产品手册、内部 FAQ 与代码片段)。这波“暴食”之后,检索性能的变化比我预期更复杂,不是一句“召回变慢/变快”能概括。这里按体验、指标和折中方案分几段说说。

先说主观体验。小库时,Hermes 给人的感觉是“指哪打哪”,关键词稍微含糊也能抓到要点;库一膨胀,答案依然常常对,但出现了两种新毛病:一是首轮候选里混入主题相近却语义偏题的“噪声精品”(看起来很相关,点进去却不是你要的);二是长尾查询被热门主题“虹吸”,比如你搜某冷门固件 Bug,前几条全是通用运维 best practices。直观上像是相关性在平均水平没崩,但方差变大了。

再看几个可量化指标(以我这边的 A/B 日志为样本):检索延迟P95 从 620ms 上探到 ~950ms,主要由向量检索 Fan-out 增大与 rerank 代价叠加造成;Top-5 命中率在热门查询几乎不变(-0.8%),但在长尾技术问答场景下降明显(-7% 左右)。更有意思的是,答案“自信度”上升了:Hermes 更倾向返回措辞肯定的结论,怀疑是候选池扩张后,重排序偏好“信息密度高”的段落,副作用是忽略了上下文限定。

影响的底层原因,我归纳成三点:其一,索引侧

其一,索引

其一,索引侧的“切片策略失真”。小库时我用的是固定窗口+重叠的段落切分,窗口在 300-500 词之间,语义还算完整;规模上来后,为了控存储与构建时间,我把窗口缩到 200 左右,并调大了重叠,结果导致很多段落语义边界被打断,单片 embedding 更“中性”,主题判别度下降,召回时更容易被热门语义簇吸附。其二,检索侧的“过度并发与欠采样并存”。为压延迟,我把向量检索的索引并发与 shard fan-out 拉高,但候选k却没同步增大(仍是k=50),这在密集簇场景下会提前“收敛”,导致长尾样本在第一层就被截断。其三,重排序的“可读性偏置”。我用的 cross-encoder 在小库训练集上调过,偏好结论清晰、句式规整的段落;库变大后,这类文风在产品白皮书、FAQ 里占比更高,于是它们在 rerank 阶段天然吃香,把含有关键限定条件但语言更口语/破碎的技术讨论压到后面。

基于这些观察,我做了几轮折中与校正,效果还算稳住:  
- 调整切片为“语义边界优先”的段落切分,先用轻量句向量做话题断点,再按 token 限制合并,窗口回到 350-450,重叠缩小到 10-15%。这一步单次索引构建时间+22%,但长尾 Top-5 回升了约 3.5%。  
- 改变检索为 two-stage:第一阶段多向量检索(ColBERT/MaxSim 思路)+ 稀疏信号(BM25/FSDM)混合,把 k1 增到 200;第二阶段再用 cross-encoder rerank 前 80。延迟P95 增量约 120ms,但长尾命中率净回升 5-6%。  
- 对重排序加“限定词加权”,在特征里显式提升版本号、错误码、设备型号、时间范围的匹配分,且在答案生成前强制回读命中的限定实体,避免“自信跑偏”。这个改动把“看起来很对但对象错了”的误击降了一个台阶。  
- 引入按主题的冷热分片。热门主题单独建更细粒度索引与更高 fan-out,长尾分片反而降低并发但扩大候选k,资源更均衡。副作用是路由逻辑复杂,但整体 CPU 花得更值。

还有两个容易被忽视的点。第一,embedding 漂移:我最早的百万级索引里混了两版模型产出的向量,新旧在同一语义下的局部密度不一致,导致 ANN 邻域结构被拉扯。解决办法是分批重嵌或做向量标准化+对齐映射,别偷懒混用。第二,去重策略:规模上来后,重复或近重复文档急剧增多,如果不在召回前去重,而是指望 rerank 才处理,既浪费算力又放大了“噪声精品”的存在感。我的做法是在索引阶段做 SimHash/MinHash 去重,召回阶段再基于向量距离与关键实体做软去重。

如果你问“值不值得把库做到百万级”,我的答案是:看闭环。若你的应用是问答型、且需要覆盖广谱长尾,规模带来的覆盖红利明显;但前提是必须同步投资在切片、混合检索和重排序特征工程上,否则用户感知就是“更慢、却不一定更准”。相反,如果场景是高度垂直、查询分布稳定,优先做高质量标注与领域适配的小而精索引,收益可能更高。

最后给出一个实践阈值:当你发现长尾 Top-5 命中率相较热门下滑超过 5%,且P95 延迟逼近 1s,大概率已经到了该上混合检索与更精细切片的节点;若仍不见起色,考虑把“生成”前置到检索里做 Q2Q 扩展/拼写归一,再把扩展后的查询回灌到 ANN+BM25。Hermes Agent 在扩张后的可用性,不在于“更大”,而在于你是否让每一层都显式对抗那三个偏置:切片失真、候选截断和可读性偏置。
回复 转播

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表