LongMemEval索引扩展5大技巧:摘要、关键词与用户事实如何提升记忆召回率
模型评测AI 评测人工智能大模型【免费下载链接】LongMemEvalBenchmarking Chat Assistants on Long-Term Interactive Memory (ICLR 2025)项目地址https://gitcode.com/gh_mirrors/lo/LongMemEval点击查看免费下载LongMemEval 是 ICLR 2025 发布的长期交互记忆基准用于测试聊天助手的长期记忆能力。本文将带你掌握它的索引扩展Index Expansion机制——会话摘要、关键词抽取、用户事实提取、轮级扩展与时间感知剪枝这 5 大技巧并说明如何用一条命令把它们接入检索流程显著提升记忆召回率。1️⃣ 为什么需要索引扩展记忆召回的大海捞针难题LongMemEval 包含 500 道高质量问题覆盖信息抽取、多会话推理、知识更新、时间推理和拒答 5 种核心能力。其中longmemeval_m.json的历史记录包含约 500 个会话——真正的证据会话往往埋在海量填充会话之中正如官方数据集示例图所示直接用 BM25 或稠密向量在原始对话文本上检索会面临两个问题词汇鸿沟用户问我上次买的相机镜头是什么型号但会话里可能只出现了品牌缩写语义噪声一个长会话里混杂大量无关寒暄稀释了关键信息。索引扩展的思路是在构建检索索引前先用 LLM 为每个会话或轮次生成检索友好的别名——摘要、关键词、用户事实等让检索器能更精准地命中证据位置。所有扩展代码位于 src/index_expansion/ 目录。2️⃣ 五大技巧总览一张表看懂全部方案技巧粒度作用生成脚本会话摘要session-summsession生成聚焦用户诉求的短摘要batch_expansion_session_summ.py会话关键词session-keyphrasesession生成分号分隔的关键词列表batch_expansion_session_keyphrases.py用户事实session-userfactsession抽取个人信息、事件与偏好batch_expansion_session_userfact.py轮级扩展turn-keyphrase / turn-userfactturn同上但定位到单轮对话batch_expansion_turn_keyphrases.py、batch_expansion_turn_userfact.py时间感知剪枝Temporal Pruningsession按时间范围缩小检索空间temp_query_search_pruning.py3️⃣ 技巧一会话摘要session-summ——给长对话瘦身摘要脚本用一个简单提示词让 LLM 把整个会话压缩为一段短摘要提示词中有两个关键设计要求as concisely as possible in a short paragraph输出上限仅 500 token明确强调focus more on what the user mentioned or asked for——因为长期记忆评测中证据大多藏在用户话语里。摘要作为索引 key 时长会话的噪声被大幅压缩。如果 join 策略带split后缀如split-separate摘要还会被 sent_tokenize 拆句每句话各自成为一个检索单元进一步提高命中粒度。4️⃣ 技巧二关键词扩展session-keyphrase——实体命中更精准关键词脚本让 LLM 为会话生成以分号分隔的 keyphrase 列表输出上限仅 100 token加载时用;切分成独立词条。它的价值在于实体与专有名词的归一化对话里零散提到的Sony A7R IV24-70mm f/2.8 lens等型号会被集中提炼成显式关键词弥补 BM25 等词法检索器的词汇匹配短板。轮级版本 batch_expansion_turn_keyphrases.py 则对每一轮对话单独抽取关键词适合把证据定位到具体轮次。5️⃣ 技巧三用户事实提取session-userfact——结构化记住你是谁这是针对用户信息类问题最有效的一招。其系统提示词要求抽取所有与用户相关的个人信息、生活事件、经历和偏好且必须保留具体数字、地点、日期等细节每条事实写成一句独立陈述json 列表并消除指代代词替换为真实实体若会话无个人信息则输出空列表避免污染索引。脚本内置了zero-shot 与 ICL上下文学习两种模式ICL 模式携带了精心构造的 few-shot 示例覆盖有事实与无事实两类情形抽取质量更稳定。这样自由对话被转换成了结构化的事实陈述如The user bought a $100 gift card for their brothers graduation in May.检索我五月给兄弟买了什么这类问题时召回率显著提升。6️⃣ 技巧四三种合并方式——separate / merge / replace扩展结果如何融入原始语料由 join 模式决定核心逻辑在 index_expansion_utils.py 的resolve_expansion函数中模式行为适用场景separate扩展内容作为独立的 (key, value) 条目加入索引与原条目共同指向同一会话保留原文同时新增检索入口最稳妥merge扩展内容拼接在原文前形成新 key希望两者一起参与打分replace用扩展内容替换原文索引空间有限、噪声严重时三种模式还可与split组合如split-separate先按句/词切分扩展内容再逐条作为独立条目。7️⃣ 技巧五时间感知查询剪枝——用时间范围缩小包围圈针对 temporal-reasoning 类问题LongMemEval 提供了一条先扩展、后剪枝的组合拳离线扩展用 batch_expansion_session_temp_event.py 从每个会话抽取带日期的用户事件输出为{date: YYYY/MM/DD, event: ...}结构无法推断时间的事件会被丢弃查询时推断temp_query_search_pruning.py 先让 LLM 根据问题和提问日期推断相关时间范围无时间参照的问题直接判为 N/A 跳过剪枝排序将事件日期落在时间范围内前后各放宽 2 天的会话移到排序列表最前面其余移到最后从而在不删除信息的前提下提升 Recallk 与 nDCG。脚本还会自动输出剪枝前后的 recall_all5/10 与 ndcg_any5/10 对比指标效果一目了然。8️⃣ 上手实践一条命令接入索引扩展索引扩展与检索的整合入口是 src/retrieval/run_retrieval.sh完整参数说明见 README.md 的 Index Expansion 小节。第一步下载官方预生成的扩展结果缓存文件解压到index_expansion_logs/目录官方已提供无需自己跑 LLM 批量生成。第二步运行带索引扩展的检索cd src/retrieval bash run_retrieval.sh longmemeval_s.json flat-bm25 session session-userfact merge index_expansion_logs/xxx.session-userfact.ICL.json关键参数速查参数可选值RETRIEVERflat-bm25、flat-contriever、flat-stella、flat-gteGRANULARITYturn或sessionEXPANSION_TYPEsession-summ、session-keyphrase、session-userfact、turn-keyphrase、turn-userfactJOIN_MODEseparate、merge、replace可加split-前缀CACHE与 EXPANSION_TYPE 对应的缓存文件路径第三步查看检索指标python3 src/evaluation/print_retrieval_metrics.py retrieval_logs/你的日志文件注意检索评测会自动跳过 30 个 abstention 实例它们指向不存在的事件无标准答案位置。第四步可选拿到检索结果后可用 src/generation/run_generation.sh 进行检索增强问答走完整的检索 → 生成闭环。9️⃣ 总结按问题类型选对扩展技巧会话冗长、噪声多→ 用session-summ摘要瘦身问题含实体、型号、专有名词→ 用session-keyphrase关键词扩展问用户个人信息、生活事件→ 用session-userfact收益最大需要精确定位证据轮次→ 切到turn粒度配合轮级扩展⏰问题带时间参照上周/上个月→ 叠加时间感知剪枝。索引扩展的本质是在索引侧做一次低成本的信息重构让检索器看到更适合被匹配的表达。结合 src/retrieval/run_retrieval.py 中灵活的 join 模式你可以快速实验不同组合找到适合自己记忆系统的最佳召回方案。赞分享模型评测AI 评测人工智能大模型【免费下载链接】LongMemEvalBenchmarking Chat Assistants on Long-Term Interactive Memory (ICLR 2025)项目地址https://gitcode.com/gh_mirrors/lo/LongMemEval点击查看免费下载相关推荐All-in-RAG索引优化技巧清单如何提升Milvus向量检索的速度与召回率All in RAG索引优化技巧清单如何提升Milvus向量检索的速度与召回率 本文是 All in RAG 索引优化技巧清单面向 RAG 新手与普通用户示例工程教程人工智能大模型RAG开发你的第一个Jumpcut插件扩展剪贴板功能的完整指南开发你的第一个Jumpcut插件扩展剪贴板功能的完整指南 Jumpcut是一款专为macOS设计的极简剪贴板管理工具它能帮助用户轻松管理和快速访问剪贴板历史终极OpenCombine调试指南3个LLDB类型摘要技巧提升开发效率终极OpenCombine调试指南3个LLDB类型摘要技巧提升开发效率 OpenCombine作为Apple Combine框架的开源实现让开发者能够在多平创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考