关系记忆不是越完整越好:chunk size 的隐性代价

0 阅读6分钟

这是一个非常“反直觉”的工程问题

在做祝福生成、感谢、道歉这类“关系型表达”的 RAG 系统时,很多工程师都会有一个非常自然的直觉:

 

“既然关系重要,那我就把关系写得更完整一点。”

 

于是你会看到这样的数据设计:

  • 一整段项目合作经历

  • 一整次旅行的完整叙述

  • 几百字的关系背景说明

 

然后统一切成一个 chunk,入库,embedding,检索。

 

但上线之后,效果却很奇怪:

  • 祝福变长了

  • 语气更正式了

  • 细节更多,但反而不走心

  • 模型开始说一些“看似用心,实际很空”的话

 

于是你会困惑:

 

**我明明给了模型更多“你们的关系”,

为什么它反而不太会说话了?**

 

这篇文章要讲清楚的,就是这个问题背后的机制原因,而不是一句“chunk 要小一点”这么简单的建议。

 


 

一、先说结论:关系记忆不是“上下文”,而是“触发点”

在祝福这种场景里,关系记忆的角色经常被误判

 

很多人下意识把它当成:

  • 背景知识

  • 上下文补充

  • 世界观说明

 

但在真实的生成过程中,它更像是:

 

触发表达的“锚点”。

 

一句真正走心的祝福,往往只需要一个非常具体的触发点

  • “去年北京那个项目”

  • “你聊过的马术”

  • “那次一起通宵改方案”

 

它不需要模型“理解你们的全部关系史”,

而是需要模型抓住一个可以落笔的细节

 

当你把关系信息切得过大,本质上是在做一件事:

 

**把“触发点”,

变成了“需要总结的材料”。**

 

而一旦模型进入“总结材料”的模式,走心基本就结束了。

 


 

二、chunk size 变大,会悄悄改变模型的“写作任务”

这是一个非常容易被忽略、但极其关键的点。

 

当模型看到的证据是:

 

“去年我们在北京合作一个项目,你在项目中对细节把控非常严格,决策效率很高,期间我们多次讨论方案调整,并在年底的一次饭局上聊到马术和行业趋势……”

 

它会自然地判断:

 

“我现在的任务,是概括这一段关系。”

 

而不是:

 

“我现在要写一句祝福,顺便点一下关系。”

 

这两种写作任务,在模型内部是完全不同的生成路径。

  • 前者 → 更正式、更概括、更像总结

  • 后者 → 更具体、更口语、更像聊天

 

chunk size 变大,本质上是在无意中改变模型的任务理解

 


 

三、大 chunk 会放大“安全表达”的概率

通用大模型在面对信息密度很高的输入时,有一个非常稳定的倾向:

 

回到安全、抽象、不容易出错的表达。

 

这是非常理性的行为。

 

因为当信息很多、关系复杂时,模型会倾向于:

  • 少引用具体细节(怕用错)

  • 用“高度概括”的句式

  • 使用通用祝福或评价性语言

 

于是你会看到这种输出:

 

“回顾过去一年的合作,我们一起经历了很多挑战,也收获了很多成长。新的一年祝你事业更上一层楼……”

 

逻辑没错,情绪也正面,

但这句话谁都能用

 

而问题不在于模型不够好,而在于:

 

你给它的信息,让“安全总结”成为最优策略。

 


 

四、关系记忆的切分目标,不是“完整”,而是“可被引用”

这是关系记忆切分时,最重要的一条设计原则

 

**一个 chunk,

最好只承载“一个可被引用的点”。**

 

什么叫“可被引用”?

  • 模型可以在一句话里自然提到

  • 不需要再加工

  • 不需要概括

  • 不需要合并

 

例如:

  • “去年北京项目中,你对细节的关注让我印象很深”

  • “那次饭局你聊到马术,视角很有意思”

 

这些信息可以被直接“拿来用”。

 

而下面这种 chunk,就非常不适合:

  • 多事件混合

  • 多情绪混合

  • 时间跨度很长

 

它们会迫使模型进入“综合表达”模式。

 

51.png 好 chunk vs 坏 chunk 对比示意

 


 

五、chunk size 大,还会影响向量检索本身的质量

除了生成阶段,大 chunk 还会在检索阶段制造问题。

 

当你把多个事件合并成一个向量时:

  • embedding 会变成多语义混合

  • 检索时的“相似度”不再指向具体点

  • 模型召回的是“差不多相关”,而不是“正好相关”

 

结果是:

  • 你明明想提“马术”,却检索到“项目总结”

  • 你想提“通宵改方案”,却召回“年度回顾”

 

这会进一步逼迫模型用概括性语言兜底。

 


 

六、为什么关系型 RAG 更怕 TopK × 大 chunk 的组合

如果你同时犯了两个“看似合理”的错误:

  • chunk 切得很大

  • TopK 调得很高

 

那祝福几乎一定会开始“失去人味”。

 

原因很简单:

  • 每个 chunk 都已经是“总结级”信息

  • 多个 chunk 再叠加,只能继续总结

  • 模型完全没有“点状细节”可以落笔

 

最后生成的,往往是:

 

“综合多方面的合作与交流,感谢你一直以来的支持……”

 

这不是模型偷懒,而是你给它的输入只剩下总结空间

 


 

七、一个更适合祝福的关系记忆切分策略

如果你的目标是“走心祝福”,而不是“关系概述”,我更推荐下面这种策略:

 

一条关系记忆 = 一个可说出口的细节

而不是:

  • 一段完整叙述

  • 一次关系总结

 

每个 chunk 控制在一句话左右

不是严格字数,而是:

  • 模型可以不加工就用

  • 拿来就能放进一句祝福里

 

允许信息“碎”,但不允许“混”

宁可:

  • 三条独立 chunk

也不要:

  • 一个三倍长的综合 chunk

 


 

八、关系记忆切分好不好,有一个非常实用的自检方法

你可以用一个非常朴素但有效的问题来检查你的 chunk 设计:

 

**如果我是人,

看到这条信息,

我能不能直接把它写进一句祝福?**

 

  • 如果可以 → 这是一个好 chunk

  • 如果需要先“整理一下思路” → chunk 太大了

  • 如果要“总结一下” → chunk 一定过大

 

这个问题比任何 embedding 指标都诚实。

 


 

九、回到春节祝福:为什么“少一点”反而更走心

春节祝福不是论文,不需要全面覆盖你们的关系史。

 

真正让人感到被记住的,往往只是:

  • 一个小细节

  • 一个共同瞬间

  • 一个只有你们知道的点

 

而 chunk size 的本质,是在决定:

 

**模型是在“点亮一个记忆”,

还是“回顾一段历史”。**

 

前者是走心,

后者是总结。

 


 

在关系型 RAG 的实践中,chunk 切分往往比模型选择更影响最终体验。通过LLaMA-Factory Online先把表达风格用微调稳定下来,再接入切分合理的关系记忆库,更容易判断:是切分在毁掉走心感,还是模型本身需要调整。

 


 

总结:关系记忆不是越完整越好,而是越“好用”越好

我最后用一句话收住全文:

 

**关系记忆库的目标,

不是让模型“知道得更多”,

而是让它“更容易说对一句话”。**

 

chunk size 变大之所以让祝福不走心,

不是因为模型变笨了,

而是因为你把“可说的细节”,

变成了“需要总结的材料”。