检索通常不是返回整本手册,而是返回若干片段。片段如何切分,决定了检索器能够找到什么,也决定了模型看到答案时是否拥有完整条件。
以答案单元为分段目标
理想片段应围绕一个相对完整的主题,能独立回答一类问题,同时保留必要的标题和限定条件。按固定字符数硬切可以作为起点,但容易把条款、表格和代码块从中间截断。
更好的做法是优先按标题、段落、列表或语义边界切分,再设置最大长度。片段之间保留少量重叠,可以避免跨边界信息丢失,但重叠过多会造成重复召回并浪费上下文。
常见问题的粒度也会影响分段。如果用户问的是单个报销条件,片段不应包含整章财务制度;如果答案需要完整操作流程,过短片段又会漏掉前后步骤。没有对所有资料都完美的统一尺寸,需要用真实问题测试。
Embedding 表示语义位置
Embedding 模型把问题和知识片段转换成向量。语义相近的文本在向量空间中通常更接近,检索系统据此找到候选片段。这使得用户不必使用与文档完全相同的关键词。
Embedding 不是摘要,也不是事实验证。专有名词、编号、短代码和精确数字有时更适合关键词检索。实际系统常组合向量检索与全文检索,兼顾语义和精确匹配。
索引要与模型和版本绑定
更换 embedding 模型后,旧向量通常不能直接与新查询向量混用,需要重新建立索引。记录模型名称、维度、分段策略和构建时间,确保问题可以复现。
文档更新时只重建受影响内容,并确认旧片段已经删除。否则搜索结果可能同时出现已废止条款和当前条款。
用检索结果检查分段
为每份关键资料准备几个应该命中的问题,查看前几条候选是否包含完整答案。若片段相关但缺少条件,调整分段;若正确内容被大量相似模板挤掉,清理重复;若编号查询失败,增加关键词或混合检索。
分段和索引不是一次性预处理,而是需要与问题集共同迭代的设计。只有检索器能稳定拿到完整答案单元,生成模型才有机会给出可靠回答。