Dify需显式配置时间衰减机制才能使新API文档优先返回:先标准化ISO 8601格式的updated_at字段,再通过UI或API启用指数衰减,最后在混合检索中声明time_weight参数参与融合排序。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用户提问“上周发布的API变更文档在哪”,系统却返回三个月前的旧版说明——这是因为Dify默认未启用时间衰减机制,所有文档在检索中权重平等,新内容无法自然浮出。必须显式配置时间字段并注入动态衰减逻辑,才能让近期文档在相似度计算中获得优势。
确认并标准化时间元数据字段
进入Dify知识库管理后台,打开目标知识库的“文档列表”,随机点击任一文档查看原始元数据。若未看到created_at、updated_at或publish_time等标准时间字段,则需批量补全——【缺少时间字段将导致后续所有权重配置失效】。
使用Dify提供的批量元数据编辑功能:勾选全部待处理文档→点击“编辑元数据”→在弹出面板中新增字段名“updated_at”,值格式必须为ISO 8601(如2026-10-15T09:23:41+08:00),不可用“2026/10/15”或“10-15-2026”等非标准格式。
这一步操作起来很简单,直接把文件拖进去就行。
配置时间衰减权重函数
方法一:通过Dify UI界面配置(适合快速验证)
进入知识库→“高级设置”→“权重策略”→开启“时间衰减”开关→设置半衰期为7天→选择衰减类型为“指数衰减”。此时系统将自动对距今超过7天的文档施加0.5倍权重,14天后为0.25倍,依此类推。
方法二:通过API注入自定义权重表达式(适合精细控制)
调用Dify文档更新API时,在meta字段中嵌入weight_calc表达式:"meta": {"updated_at": "2026-10-15T09:23:41+08:00", "weight_calc": "exp(-0.1 * (now - updated_at).days)"}。
该表达式以自然指数方式衰减,每10天权重下降约63%,比线性衰减更符合信息时效性规律。
注意:weight_calc仅在Dify v0.12.3及以上版本支持,旧版本需升级或改用方法一。
混合检索中融合时间权重
第一步:确保已启用混合检索模式
进入“检索设置”→将检索类型设为“混合检索”→确认keyword_weight与semantic_weight之和为1.0。
第二步:在向量检索分支注入时间因子
在混合检索配置JSON中添加time_weight参数:
"retrieval_mode": "hybrid",<br>"weights": {<br> "keyword": 0.3,<br> "semantic": 0.6,<br> "time": 0.1<br>},<br>"time_decay": "exponential",<br>"half_life_days": 7。
第三步:验证时间权重是否生效
构造两个语义高度相似但发布时间相差15天的文档片段,执行相同查询。若新文档在top-3中出现且旧文档被压至第5位之后,说明时间权重已成功参与融合排序。
这一步不能跳过,【time权重必须显式声明才参与混合打分,否则仅影响向量分支内部排序】。

















