资讯详情

如何读懂 LycheeMem:动作感知四级语义检索流水线源码级拆解指南

📅 2026/10/15 17:23:45 | 华诺云谱 👁 阅读
如何读懂 LycheeMem:动作感知四级语义检索流水线源码级拆解指南
【免费下载链接】LycheeMemLightweight Long-Term Memory for LLM Agents.项目地址https://gitcode.com/gh_mirrors/ly/LycheeMem点击查看免费下载LycheeMem 是面向 LLM Agent 的轻量级长期记忆框架Lightweight Long-Term Memory for LLM Agents。它的检索核心不是一句向量相似度 TopK而是一条动作感知Action-aware的四级语义检索流水线先用 LLM 理解用户当下想做什么再做多通道证据召回、策略加权与跨路由融合最终把最相关的记忆证据塞进上下文。本文带你从源码层面把这条流水线完整走一遍。1. 先认识主角四级检索流水线总装图整条流水线的总装入口是 CompactSemanticEngine它通过 Mixin 组合了四个职责模块规划RetrievalPlanningMixin把 LLM 生成的 JSON 计划规范化为SearchPlan策略RetrievalStrategyPolicyMixin按问题类型产出检索参数包路由召回RouteRetrievalMixin多通道召回 窗口扩展 重排融合选优RetrievalFusionMixin / RetrievalSelectionMixinRRF 融合与覆盖度选择四级结构一句话版级别名称核心代码干什么Level 1动作感知查询规划search_coordinator.py构造 ActionState 生成 SearchPlan证据路由Level 2多通道证据召回recall.py时间过滤、证据节点 ANN、记录 ANN、原始轮次 ANNLevel 3动作感知加权 Rerankstrategy_policy.py按问题类型打角色/类型奖励、交叉编码器精排Level 4路由融合与覆盖度选优fusion.pyRRF 融合、MMR 多样性选择、episode 预算控制2. Level 1动作感知查询规划——先懂想做什么再去找普通 RAG 只带着问题出发LycheeMem 的检索先带着动作状态出发。每次请求SearchCoordinator 会做两件事① 构造 ActionState—— 在 _build_action_state 中协调器把当前子目标、试探性动作、上一个工具名及其结果、可用工具、失败信号、token 预算打包进 ActionState。这意味着检索系统知道Agent 刚调过什么工具、卡在哪一步、还缺什么条件——这是动作感知的由来。② 生成 SearchPlan—— _build_retrieval_plan 把USER_QUERY RECENT_CONTEXT ACTION_STATE一起喂给 LLM 规划器系统提示见 RETRIEVAL_PLANNING_SYSTEM产出一份结构化检索计划。计划里最关键的是evidence_routes证据路由一个复杂问题会被拆成多条独立证据需求每条路由有自己的检索目标evidence_goal、查询变体、约束和时间过滤数据模型见 EvidenceRoute。没有路由时_normalize_plan_for_query 会自动兜底生成单路由。 一句话Level 1 把问题翻译成一组带目标的检索任务并让任务看得见 Agent 的动作上下文。3. Level 2多通道证据召回——四路并进互为备份进入 search() 后_search_fielded_evidence 对每条路由执行四路召回见 _search_single_evidence_route通道 1时间过滤召回。2023 年 5 月之前的事这类问题不靠语义猜而靠结构化证据节点精确匹配。_recall_records_from_temporal_filter 扫描day:/month:粒度的时间节点按区间重叠度打分日粒度 0.42 区间 0.34 月粒度 0.28。通道 2证据节点 ANN。_recall_records_from_evidence_nodes_multi 用一次向量查询同时召回 entity / tag / entity_tag / event_frame 四类结构化节点再按类型加权event_frame 权重 0.42 最高见 _evidence_node_weight把节点扩展回它们关联的 MemoryRecord。一次 ANN 干四个通道的活注释里明确写了这是为了省掉三次重复查询。通道 3记录向量直查。_direct_record_search 直接对 MemoryRecord 的normalized_vector做 ANN。首次命中的候选得分为0.30 0.30 × 检索得分同一记录被多个查询变体再次命中还会加 0.20 基础分routes.py L278-L283——多渠道都提到它本身就是强信号。通道 4原始对话轮次。_search_raw_turns_direct 直接检索会话原文轮次得分公式见 _raw_turn_field_score基础分乘以策略系数默认 0.72assistant 轮次和 user 轮次各按策略加角色奖励。 一句话Level 2 不押注单一向量检索而是让时间、实体、记录、原文四路证据互相印证。4. Level 3动作感知加权与 Rerank——策略按问题类型换档召回完成后_resolve_retrieval_strategy 根据 LLM 判定的question_type换一档检索参数策略对象定义在 RetrievalStrategy问题类型典型场景策略倾向prior_assistant_response你上次怎么回答我轮次召回量 ×3、assistant 角色奖励 0.18、上下文窗口扩到 4 轮personalized_advice按我的情况给建议扩大证据预算、给 preference/constraint 类记录加 0.05 奖励temporal/comparison带时间、对比类问题时间窗口 2 轮、有 temporal 元数据的记录 0.04aggregate统计汇总类问题证据节点召回 ×1.55锚点上限提到 40加权动作在 _apply_strategy_candidate_boosts 与 _record_strategy_bonus 中执行时间匹配则只用来加分而绝不删候选_apply_temporal_boost——注释里点明了设计哲学时间证据不足以当门槛只配当信号。此外还有两个动作感知的关键扩展expansion.py助手回答窗口对prior_assistant_response类问题_build_assistant_answer_windows 会回溯到原始会话把当时的用户提问 助手回答整段取回同源窗口物化_materialize_source_windows_from_anchors 把语义锚点还原成原始对话证据窗口——压缩后的记忆只配当指针最终证据要回到原文。最后若启用了 reranker本地 Cross-Encoder 或 HTTP 远程_rerank_candidate_dicts 会用交叉编码器对候选池精排选池逻辑 _select_rerank_pool 特意按来源 × 通道分桶轮转防止某一路高分通道垄断重排池。5. Level 4RRF 路由融合 覆盖度选优——好钢用在刀刃上多条路由各自排好序后_fuse_route_results 接手每路由配额route_quota top_k / 路由数1~4先保证每条证据需求都有代表进入结果RRF 融合分final 0.82 × 单路由最佳分 0.18 × 归一化 RRF 分RRF 权重用经典的1/(60rank)MMR 覆盖度选择_coverage_select_scored 按0.75×相关性 − 0.25×与已选候选的最大相似度迭代挑选相似度由会话、实体、查询、轮次、文本五个信号加权计算_signature_similarity避免结果全是同一会话的复读episode 预算控制_limit_episode_candidates 限制原始对话轮次的最终占比由策略的episode_budget_ratio决定原文只有在足够强时才配占位。最终产出的SemanticSearchResult携带格式化后的上下文、溯源provenance和检索计划开启LYCHEE_SEMANTIC_TRACE后每一级的候选池、耗时、分数拆解都会写入 trace方便调试整条流水线routes.py L113-L148。6. 上手观察与源码导航想动手看效果装好服务后最直接的方式是通过 MCP 工具lychee_memory_smart_searchcompact模式发起一次检索请求示例见 README.mdAPI 侧的入口路由在 memory.py 与 chat.py。 调试小贴士设置环境变量LYCHEE_SEMANTIC_TRACE1输出逐级检索 traceLYCHEE_SEMANTIC_TIMING1输出耗时日志routes.py L512-L533在 CompactSemanticEngine 初始化时开启reranker_enabledTrue可启用 Cross-Encoder 精排想看规划器如何拆分证据路由直接读 RETRIEVAL_PLANNING_SYSTEM 提示词与 SearchPlan 结构。源码导航清单总装引擎engine.py检索协调器动作状态 规划search_coordinator.py四级流水线的分治实现src/memory/semantic/retrieval/routes / recall / strategy / expansion / selection / fusion记忆记录与数据模型models.py管道端到端示例api_pipeline_demo.py7. 总结四级流水线的设计哲学回顾一下这条动作感知四级语义检索流水线的精髓规划先行让 LLM 带着 Agent 动作状态拆解证据需求而不是裸奔一个 query多通道印证时间、证据节点、记录向量、原始轮次四路召回互相补位策略换档按问题类型动态调整召回量、角色奖励与窗口大小融合与多样性RRF 保证路由覆盖MMR 保证结果不复读episode 预算保证原文只在够强时登场。对新手而言读懂这条流水线也就读懂了 LycheeMem 相比单向量 TopK式 RAG 的核心差异记忆检索是服务 Agent 行动的而不只是回答问题的。赞分享【免费下载链接】LycheeMemLightweight Long-Term Memory for LLM Agents.项目地址https://gitcode.com/gh_mirrors/ly/LycheeMem点击查看免费下载相关推荐如何发布 Deno 版本start_release 工作流与 crates 发布流水线的源码级解析如何发布 Deno 版本start_release 工作流与 crates 发布流水线的源码级解析 本文以 Deno 仓库自带的 发布说明 https://l语言运行时WiFi信号如何看懂你的动作无线感知技术深度解析WiFi信号如何看懂你的动作无线感知技术深度解析 想象一下家里的WiFi路由器不仅能提供网络还能看懂你在做什么——当你摔倒时自动报警当你做手势时控制人工智能深度学习机器学习模型评测科研拆解MoneyPrinter四段流水线Ollama写稿、TikTok TTS配音、Pexels素材、MoviePy合成如何协作拆解MoneyPrinter四段流水线Ollama写稿、TikTok TTS配音、Pexels素材、MoviePy合成如何协作 从 2024 年初开始在中文开AI 应用媒体生成音视频视频创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑