资讯动态

LightMem开发者指南:用工厂模式扩展自定义存储引擎与检索策略

发布时间:2026/10/13 14:53:31 来源:尧图企业网站定制
【免费下载链接】LightMem[ICLR 2026] LightMem: Lightweight and Efficient Memory-Augmented Generation项目地址https://gitcode.com/gh_mirrors/li/LightMem点击查看免费下载LightMem 是一个轻量级、高效的记忆增强生成Memory-Augmented Generation框架ICLR 2026 录用为 LLM 与 AI Agent 提供记忆存储、检索与更新能力。它的核心设计亮点是采用**工厂模式Factory Pattern**将存储引擎与检索策略模块化你只需通过配置即可在 OpenAI、Ollama、vLLM 等后端间切换也能按统一规范扩展自己的向量存储引擎如 Chroma、Milvus或检索算法如 TF-IDF。本文带你读懂 LightMem 工厂架构并给出扩展自定义存储引擎与检索策略的完整路径。 为什么 LightMem 需要工厂模式长对话场景下模型上下文越积越长成本与延迟急剧上升。LightMem 的思路是把历史消息压缩、分段成结构化的记忆单元存进向量库或倒排索引回答时再按检索策略召回相关记忆。问题来了向量库有 Qdrant、Chroma、Milvus 等好几家LLM 后端有云端 API 也有本地 Ollama / vLLM。如果每个组件都用if/else硬编码代码很快会失控。LightMem 的解法就是工厂模式配置层src/lightmem/configs/用 Pydantic 定义每种组件的配置模型model_name决定用哪个实现工厂层src/lightmem/factory/每个工厂类维护一张model_name → 模块.类的映射表通过importlib动态导入并实例化入口层LightMemory根据retrieve_strategy、index_strategy等开关按需初始化组件。 工厂全景图一张目录地图LightMem 的所有可插拔组件都集中在两个目录结构一一对应组件工厂实现目录配置目录已内置实现记忆管理器LLM 后端memory_manager/memory_manager/openai、deepseek、ollama、transformers、vllm、vllm_offline向量检索器存储引擎embeddingretriever/embeddingretriever/qdrant上下文检索器contextretriever/contextretriever/BM25文本嵌入器text_embedder/text_embedder/huggingface、openai预压缩器pre_compressor/pre_compressor/llmlingua-2、entropy_compress其中向量检索器工厂 EmbeddingRetrieverFactory 就是扩展自定义存储引擎的注册表class EmbeddingRetrieverFactory: _MODEL_MAPPING: Dict[str, str] { qdrant: lightmem.factory.retriever.embeddingretriever.qdrant.Qdrant, }⚙️ 工作原理从名字到实例的三步跳转以 ContextRetrieverFactory.from_config() 为例每个工厂的实例化逻辑完全一致只有三步查表拿配置里的model_name如BM25去_MODEL_MAPPING找目标类的完整路径动态导入用rsplit(., 1)拆出模块路径与类名import_module()getattr()拿到类实例化若配置里带了configs字典则以configconfigs构造否则直接无参实例化。与之配合的配置侧同样自描述。例如 ContextRetrieverConfig 维护了一份_model_list [BM25]在model_name不在列表内时直接抛出ValueError帮你把错误拦在启动阶段。而 EmbeddingRetrieverConfig 更进一步校验通过后会自动把configs字典转成对应的具体配置类如 QdrantConfig后者还内置了host/port、url/api_key、path 三选一的连接校验。 四步接入自定义存储引擎假设你想把 Qdrant 换成 Chroma。按 LightMem 的规范只需四处改动第 1 步实现组件类。参照 Qdrant 的接口风格新类接收config参数实现insert()、search()等方法即可。第 2 步定义配置类。在configs/retriever/embeddingretriever/下新建一个 Pydantic 配置模型字段、默认值、连接校验照 QdrantConfig 写。第 3 步注册映射。在两处各加一行# 工厂侧factory/retriever/embeddingretriever/factory.py _MODEL_MAPPING { qdrant: lightmem.factory.retriever.embeddingretriever.qdrant.Qdrant, chroma: your.package.chroma.ChamraStore, # 新增 } # 配置侧configs/retriever/embeddingretriever/base.py _model_list { qdrant: ...qdrant.QdrantConfig, chroma: ...chroma.ChamraConfig, # 新增 }第 4 步用配置启用。无需改任何业务代码from lightmem.configs.base import BaseMemoryConfigs config BaseMemoryConfigs( retrieve_strategyembedding, embedding_retriever{ model_name: chroma, configs: {collection_name: my_mem, embedding_model_dims: 1536}, }, )retrieve_strategy支持embedding/context/hybrid三档见 BaseMemoryConfigsLightMemory 初始化时会据此按需创建检索器hybrid模式下同时启动上下文检索器与向量检索器lightmem.py未选中的组件完全不加载。 自定义检索策略怎么配除了换存储引擎LightMem 还提供正交的两个开关index_strategy建索引用embedding/context/hybrid决定是否建向量索引、倒排索引或两者都建base.pyretrieve_strategy检索用同上三选一决定查询走哪条路。扩展新检索算法如 TF-IDF的路径与向量库相同在 ContextRetrieverFactory._MODEL_MAPPING 注册实现类 → 在 ContextRetrieverConfig._model_list 登记名字 → 配置中指定context_retriever{model_name: tfidf}。 提示仓库内还有 MCP Servermcp/server.py与实验脚本experiments/locomo/可结合 LoCoMo、LongMemEval 数据集验证你的新策略效果。 常见扩展点速查想扩展什么改哪里参照实现新的向量存储引擎EmbeddingRetrieverFactory EmbeddingRetrieverConfigqdrant.py新的检索算法ContextRetrieverFactory ContextRetrieverConfigbm25.py新的 LLM 后端MemoryManagerFactoryollama.py新的嵌入模型TextEmbedderFactoryhuggingface.py新的压缩算法PreCompressorFactoryllmlingua_2.py 小结LightMem 的工厂模式把用什么后端收敛成了一行配置配置层负责校验与自描述工厂层负责动态加载入口层按策略懒加载。理解了_MODEL_MAPPING工厂侧与_model_list配置侧这两张注册表你就可以用自己的向量库、检索算法或 LLM 后端无痛替换 LightMem 的任意组件构建专属的记忆增强应用。完整架构说明README.md记忆核心实现src/lightmem/memory/lightmem.py组件配置基类src/lightmem/configs/base.py运行实验experiments/赞分享【免费下载链接】LightMem[ICLR 2026] LightMem: Lightweight and Efficient Memory-Augmented Generation项目地址https://gitcode.com/gh_mirrors/li/LightMem点击查看免费下载相关推荐终极QuestDB扩展开发指南自定义函数与存储引擎实现详解终极QuestDB扩展开发指南自定义函数与存储引擎实现详解 QuestDB是一款高性能开源时序数据库专为处理大规模时间序列数据设计。本文将详细介绍如何为Qu数据库时序数据库实时分析MaterialFX数据绑定实战轻松实现响应式JavaFX界面MaterialFX数据绑定实战轻松实现响应式JavaFX界面 MaterialFX是一个专为JavaFX打造的Material Design组件库其强大的告别多工具切换MobaXterm中文版一站式远程管理解决方案告别多工具切换MobaXterm中文版一站式远程管理解决方案 还在为Windows远程管理Linux服务器而烦恼吗每次都要在PuTTY、WinSCP、Xmi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑