首页/新闻资讯/正文详情

MemOS GeneralTextMemory 通用明文记忆:基于向量语义检索的智能记忆模块实战指南

发布时间:2026/9/24 5:10:46 来源:云帆数科 栏目:资讯中心
MemOS GeneralTextMemory 通用明文记忆:基于向量语义检索的智能记忆模块实战指南
人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-plugin【免费下载链接】MemOSSelf-evolving memory OS for LLM AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings and DeepSeek Harness support.项目地址https://gitcode.com/gh_mirrors/memos/MemOS点击查看免费下载GeneralTextMemory 是 MemOS 中一个灵活的、基于向量的明文记忆模块用于存储、搜索和管理非结构化知识。如果说 NaiveTextMemory 是关键词匹配那么 GeneralTextMemory 就是理解意思的智能索引——它适用于会话代理、个人助理和任何需要语义记忆检索的系统。读完本文你将掌握其记忆数据结构、配置初始化方式、全部核心 API、文件持久化机制以及如何将其与互联网检索、MultiModal Reader 等能力组合使用。记忆结构在 MemOS 的文本记忆体系中每条记忆都被统一表达为一个TextualMemoryItem。它由三个字段构成字段类型描述idstrUUID如果省略则自动生成memorystr记忆内容主体必填metadataTextualMemoryMetadata元数据用于搜索/过滤从源码看item.py 中TextualMemoryItem基于 PydanticBaseModel实现id字段通过default_factorylambda: str(uuid.uuid4())自动生成 UUID且带field_validator强制校验 ID 必须是合法 UUIDmemory为必填字段metadata缺省时自动创建空的TextualMemoryMetadata。所有值都会经过 Pydantic 校验无效值将直接抛出异常。元数据域TextualMemoryMetadataTextualMemoryMetadata是记忆的索引卡用于支撑搜索与过滤。文档定义的核心字段如下字段类型描述typeprocedure,fact,event,opinion记忆类型memory_timestr (YYYY-MM-DD)记忆所指的日期/时间sourceconversation,retrieved,web,file记忆源confidencefloat (0-100)确定性/可信度评分entitieslist[str]主要实体/概念tagslist[str]主题标签visibilityprivate,public,session访问范围updated_atstr最近更新时间戳ISO 8601需要说明的是在实际源码 item.py 中TextualMemoryMetadata还扩展了文档表中未列出的丰富字段包括user_id/session_id标记记忆归属的用户与会话支撑多用户系统与对话上下文追踪status记忆状态activated/resolving/archived/deleted默认activatedversion记忆版本号更新时递增与history字段ArchivedTextualMemory列表配合实现记忆的历史归档与回滚key记忆的键或标题extract()提取时会自动填充info/internal_info任意附加键值对与系统内部算法元数据模型配置为extraallow允许携带任意自定义扩展字段。所有字段都经过 Pydantic 校验无效值将引发错误。搜索机制向量语义搜索 vs 关键词匹配与前文提到的 NaiveTextMemory 使用关键词匹配算法不同GeneralTextMemory使用向量语义搜索。从实现上看两者的检索路径差异明显NaiveTextMemory 直接在内存字典中做子串/关键词扫描而 GeneralTextMemory 每次search()都会调用self._embed_one_sentence(query)将查询文本转为向量再交给向量数据库做相似度检索见 general.py。与 NaiveTextMemory 的算法特点对比特性关键词匹配向量语义搜索理解语义❌ 不理解同义词✅ 理解相似概念资源占用✅ 极低⚠️ 需要嵌入模型和向量数据库执行速度✅ 快速O(n)⚠️ 较慢索引构建 查询适用规模 1K 条记忆10K - 100K 条记忆可预测性✅ 结果直观⚠️ 黑盒模型一句话总结选型思路如果你的记忆量小千条以内、检索要求可解释选 Naive如果记忆量大、需要理解意思的语义召回选 General。官方文档 记忆模块总览 也将 GeneralTextMemory 定位为记住聊天内容或大量文档并能根据语义搜索的通用文本记忆方案。配置与初始化GeneralTextMemory的构造函数签名如下GeneralTextMemory(config: GeneralTextMemoryConfig)GeneralTextMemoryConfig在 memory.py 中定义继承自BaseTextMemoryConfig除继承的memory_filename默认textual_memory.json与cube_id外包含三个必填配置项配置项类型说明extractor_llmLLMConfigFactory记忆提取器 LLM 配置支持 Ollama / OpenAI / Azure 等vector_dbVectorDBConfigFactory向量数据库配置支持 Qdrant / MilvusembedderEmbedderConfigFactory嵌入模型配置支持 Ollama / Ark 等从构造函数源码general.py可以看到初始化时通过三个工厂将配置转为实际实例LLMFactory.from_config(config.extractor_llm)→ 提取器 LLMVecDBFactory.from_config(config.vector_db)→ 向量数据库默认 QdrantEmbedderFactory.from_config(config.embedder)→ 嵌入模型。其中向量数据库的底层配置 QdrantVecDBConfig 支持host/port/path/url/api_key等参数当不提供任何远程地址时会自动回退到本地路径MEMOS_DIR/qdrant嵌入式模式。这意味着你可以零配置启动也可以对接 Qdrant Cloud。推荐使用工厂方式初始化这样无需关心具体后端差异import os from memos.configs.memory import MemoryConfigFactory from memos.memories.factory import MemoryFactory config MemoryConfigFactory( backendgeneral_text, config{ extractor_llm: { ... }, vector_db: { ... }, embedder: { ... }, }, ) m MemoryFactory.from_config(config)这条调用链背后的逻辑是MemoryConfigFactory在backendgeneral_text时会将config字段实例化为GeneralTextMemoryConfig见 memory.py随后MemoryFactory.from_config()依据backend_to_class映射找到GeneralTextMemory类并实例化见 factory.py。核心方法GeneralTextMemory实现了 BaseTextMemory 定义的全部抽象方法API 总结如下方法描述extract(messages)从消息列表中提取记忆基于 LLMadd(memories)添加一个或多个记忆条目或字典search(query, top_k)使用向量相似度检索 top-k 记忆get(memory_id)通过 ID 获取单个记忆get_by_ids(ids)通过 ID 获取多个记忆get_all()返回所有记忆update(memory_id, new)通过 ID 更新一个记忆delete(ids)通过 ID 删除记忆delete_all()删除所有记忆dump(dir)将所有记忆序列化到目录中的 JSON 文件load(dir)从存储的文件中加载记忆下面结合源码说明几个关键方法的内部流程extractLLM 提取。将消息列表拼成role:content字符串替换进SIMPLE_STRUCT_MEM_READER_PROMPT模板调用extractor_llm.generate()让 LLM 返回 JSON再解析为TextualMemoryItem列表并自动填充sourceconversation、tags与updated_atgeneral.py。该过程带tenacity重试装饰器LLM 输出不是合法 JSON 时最多重试 3 次。add添加。先把每个条目统一转为TextualMemoryItem用embedder.embed()批量生成向量再包装成VecDBItemidpayloaditem.model_dump()vector交给vector_db.add()general.py。search语义检索。将查询语句嵌入为向量调用vector_db.search(query_vector, top_k)按score降序排序后把 payload 还原为TextualMemoryItem返回general.py。delete_all清空。实现为删除集合后重新创建保证后续 add 依然可用general.py。文件存储当调用dump(dir)时系统会将记忆保存到dir/config.memory_filename其中memory_filename默认值为textual_memory.json可在GeneralTextMemoryConfig中覆盖。该文件包含所有记忆条目的 JSON 列表每条含id/vector/payload可以使用load(dir)重新加载。源码实现中general.pydump()先vector_db.get_all()取回全部VecDBItem转成 dict 后以ensure_asciiFalse、缩进 4 格的格式写入os.path.join(dir, config.memory_filename)目录不存在会自动创建load()则读取该文件用VecDBItem.from_dict()还原并批量写回向量库general.py。文件不存在时只记录 warning 并安全返回不会中断程序。示例用法完整的最小可运行示例来自文档并补充注释import os from memos.configs.memory import MemoryConfigFactory from memos.memories.factory import MemoryFactory config MemoryConfigFactory( backendgeneral_text, config{ extractor_llm: { ... }, # 例如 {backend: ollama, config: {model_name_or_path: qwen2.5}} vector_db: { ... }, # 例如 {backend: qdrant, config: {collection_name: my_memories}} embedder: { ... }, # 例如 {backend: ollama, config: {model_name_or_path: bge-m3}} }, ) m MemoryFactory.from_config(config) # 提取并添加记忆LLM 自动从对话中抽取结构化记忆 memories m.extract([ {role: user, content: I love tomatoes.}, {role: assistant, content: Great! Tomatoes are delicious.}, ]) m.add(memories) # 通过 id 手动创建并添加一个记忆 memory_id xxx m.add( [ { id: memory_id, memory: User is Chinese., ... } ] ) # 检索记忆语义相似度而非关键词匹配 results m.search(Tell me more about the user, top_k2) # 更新记忆 m.update(memory_id, {memory: User is Canadian., ...}) # 删除记忆 m.delete([memory_id]) # 将所有记忆序列化到目录中的 JSON 文件 / 从存储的文件中加载记忆 m.dump(tmp/mem) m.load(tmp/mem)几点实战注意手动传入id时必须为合法 UUID 字符串否则TextualMemoryItem的校验器会抛错search的top_k控制返回条数结果按相似度分数从高到低排序集成测试覆盖了上述全部方法见 test_general.py可作为 API 用法的权威参照。扩展与进阶互联网检索GeneralTextMemory可以与互联网检索结合使用从网页提取内容并添加到记忆库。其思路是先通过互联网检索模块抓取网页文本再用extract或手动构造TextualMemoryItem的方式入库从而让 Agent 的长期记忆包含实时网络知识。完整示例可参考 TreeTextMemory 文档从互联网检索记忆可选。MultiModal Reader如果需要处理图片、URL、文件等多模态内容可以使用MultiModalStructMemReader它能够将多模态输入解析为结构化文本后再写入记忆库弥补GeneralTextMemory本身只接受纯文本输入的局限。完整示例见 TreeTextMemory 文档使用 MultiModalStructMemReader高级。开发者注意事项使用 Qdrant或兼容向量数据库进行快速相似度搜索vector_db配置支持 Qdrant本地嵌入式、独立服务、Cloud 三种模式后端枚举见 vec_db.py嵌入和提取模型均可配置支持 Ollama / OpenAI / Azure / Ark 等后端分别通过LLMConfigFactory与EmbedderConfigFactory注入测试验证/tests中的集成测试覆盖了所有方法。单元测试 test_general.py 通过 mock 三个工厂LLM / VecDB / Embedder验证了初始化与全方法调用链配置层的校验测试见 test_memory.py。小结GeneralTextMemory是 MemOS 在轻量关键词记忆Naive与复杂图结构记忆Tree之间提供的折中方案它保留简单的列表式数据模型却通过嵌入模型 向量数据库获得了真正的语义检索能力。对于会话代理、个人助理、知识管理系统等记聊天、搜文档、按语义召回的场景它是开箱即用的最佳起点。赞分享人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-plugin【免费下载链接】MemOSSelf-evolving memory OS for LLM AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings and DeepSeek Harness support.项目地址https://gitcode.com/gh_mirrors/memos/MemOS点击查看免费下载相关推荐MemOS 第一篇记忆实战用 GeneralTextMemory 完成文本记忆的提取、向量化与语义检索MemOS 第一篇记忆实战用 GeneralTextMemory 完成文本记忆的提取、向量化与语义检索 本篇是 MemOS 开源仓库快速入门系列的核心一讲从人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-pluginMemOS GeneralTextMemory 通用文本记忆模块详解基于向量检索的非结构化知识存储与语义召回MemOS GeneralTextMemory 通用文本记忆模块详解基于向量检索的非结构化知识存储与语义召回 GeneralTextMemory gener人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-pluginMemOS TreeTextMemory 树形明文记忆实战基于 Neo4j 的结构化记忆抽取、检索与备份恢复MemOS TreeTextMemory 树形明文记忆实战基于 Neo4j 的结构化记忆抽取、检索与备份恢复 树形明文记忆TreeTextMemory是人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-plugin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

dbx:基于Rust+Tauri的轻量级多协议数据库工具
dbx:基于Rust+Tauri的轻量级多协议数据库工具

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 5:10:40

临床数据缺失值处理:一键多重填补的原理与实操指南
临床数据缺失值处理:一键多重填补的原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 5:10:27

云端API与本地模型对比解析
云端API与本地模型对比解析

#云端 API 与本地模型的区别云端 API 和本地模型是两种不同的大语言模型(LLM)部署方式,它们在性能、成本、隐私、灵活性和使用场景等方面存在显著差异。以下从多个维度进行对比分析。1. 基本定义项目云端 API本地模型定义模型由云服务商托管&… · 2026/9/24 5:09:44

STM32开源项目:代码+原理图+仿真三位一体,含DHT11与ADC采集
STM32开源项目:代码+原理图+仿真三位一体,含DHT11与ADC采集

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 5:51:09

告别手动汇总!批量合并Word文档太省事了
告别手动汇总!批量合并Word文档太省事了

经常需要整理大量Word资料的打工人,一定要收下这款小工具! 日常汇总报告、收集作业、整理台账,手动合并又累又容易出错,格式还总乱。这款Word合并神器完美解决痛点,支持多文档一键合并,还能自由调整文件前… · 2026/9/24 5:51:03

2026私有化代码托管平台选型:GitLab、Gitee、Gerrit与Gitea深度对比
2026私有化代码托管平台选型:GitLab、Gitee、Gerrit与Gitea深度对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 5:50:33

Linux 常用开发工具:linux-command 私有化部署
Linux 常用开发工具:linux-command 私有化部署

引言 背景:开发运维需要大量常用命令和工具,频繁切换在线工具不便核心价值:一站式 Linux 命令查询平台,支持私有化部署适用场景:内部知识库、开发团队工具集、运维文档中心 前置条件 系统要求 Docker 引擎 19.03网络… · 2026/9/24 5:50:02

Kubernetes 用户认证授权实战:为开发人员创建受限 Namespace 的 kubeconfig 文件
Kubernetes 用户认证授权实战:为开发人员创建受限 Namespace 的 kubeconfig 文件

教程云原生容器编排 【免费下载链接】kubernetes-handbook Kubernetes 架构与生态:从云原生到 AI 原生基础设施的构建指南 项目地址: https://gitcode.com/gh_mirrors/ku/kubernetes-handbook 点击查看 免费下载 当 Kubernetes 集群搭建完成、管理员通过… · 2026/9/24 5:49:56

参数化设计平台技术拆解:从零件级模板库到 BOM 自动生成的完整链路
参数化设计平台技术拆解:从零件级模板库到 BOM 自动生成的完整链路

一、背景:非标设计的数据问题本质 非标装备制造的设计流程有个鲜明特点:约 80% 的结构是重复的,但每个订单都被当成新项目从头走一遍。 由此带来的典型工程问题:现象数据层面的根因设计复用率低、重复建模结构知识没有可复用载体通… · 2026/9/24 5:49:56

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码