神经计算机:为AI大模型构建可微分外部记忆系统的架构与实践

📅 2026/8/3 23:18:42
神经计算机:为AI大模型构建可微分外部记忆系统的架构与实践
1. 项目概述当AI学会“记笔记”与“查资料”最近Meta AI Research团队放出的“神经计算机”概念在圈子里激起了不小的水花。乍一看标题“超越Agent、世界模型”口气不小但当你真正去拆解他们论文和博客里透露的那些技术细节会发现这玩意儿确实有点意思。它不像是在造一个更聪明的“大脑”更像是在给现有的AI大模型配上一个超级外挂——一个拥有近乎无限容量、且能精准检索的“外部记忆系统”。我们平时折腾的AI Agent无论是基于ReAct、COT还是各种复杂的工作流其核心瓶颈之一就是“上下文窗口”。你把任务描述、历史对话、工具文档全塞进prompt里token数轻轻松松破万不仅推理速度慢成本高而且模型真正能“记住”并有效利用的信息非常有限。世界模型试图解决的是对物理规律的预测和理解但它更多是面向感知与规划对于海量、离散的符号知识比如你公司所有的产品文档、历史上的所有故障案例、整个互联网的某类专业知识同样束手无策。“神经计算机”瞄准的正是这个痛点。它的核心思想很直观将计算推理、决策与存储知识、记忆分离。让大语言模型LLM专注于它最擅长的“计算”——理解问题、分解任务、逻辑推理而将所有需要查询和引用的海量数据交给一个专门的、可微分这是关键的“记忆体”去管理。这个记忆体支持高效的写入、存储和基于内容的检索并且整个“写入-检索-计算”的流程是端到端可训练的。这意味着模型可以学会“如何更好地组织记忆”以及“如何根据当前任务从记忆中提取最有用的信息”。简单来说以前的AI像是一个博闻强记但记忆容量有限的学者所有知识都装在脑子里用到时得使劲回忆。而“神经计算机”架构下的AI变成了一个学者配了一个无限大、且智能归档的私人图书馆。学者LLM负责思考和分析问题需要什么资料就向图书馆员记忆检索系统下达指令图书馆员能瞬间从浩如烟海的藏书中找到最相关的几本递过来。这个“图书馆”就是那个“神经计算机”的存储部分。这对于我们这些做AI应用开发的人来说想象空间太大了。无论是构建一个能消化整个企业知识库的客服助手还是一个能持续学习用户偏好并永不遗忘的个性化推荐系统甚至是一个能参考成千上万份历史代码来编程的AI程序员这个架构都提供了一个更优雅、更可扩展的解决方案。它不追求用一个模型解决所有问题而是通过体系化的设计让模型的能力边界得以突破。接下来我们就深入这个“图书馆”的内部看看Meta的工程师们是如何设计这套借阅系统的。2. 核心架构拆解可微分记忆库与控制器要理解神经计算机不能把它看成一个黑箱。我们可以将其核心架构拆解为三个关键组件记忆矩阵Memory Matrix、读写控制器Read/Write Controller、以及推理引擎通常是LLM。这三者的协同工作构成了一个完整的“计算-存储”循环。2.1 记忆矩阵向量化的无限笔记本记忆矩阵是整个系统的基石。你可以把它想象成一个巨大的、结构化的表格或者一个超级电子表格。它的每一行代表一条独立的“记忆条目”而每一列则代表记忆的某个特征或属性维度。关键在于这里存储的不是原始文本或图像而是这些数据的向量化嵌入Embeddings。为什么是向量因为向量空间中的距离和方向为“相似性”提供了数学定义。当我们需要检索“与当前问题相关的记忆”时实际上是在计算当前查询的向量与记忆矩阵中所有向量之间的相似度比如余弦相似度。最相似的Top-K条记忆就会被认为是最相关的。这个矩阵在理论上是“无限”的因为它可以存储在外部数据库如专用的向量数据库Milvus、Pinecone或扩展性极强的KV存储中物理上不受LLM上下文长度的限制。在实践中它受限于存储硬件但相比LLM的上下文窗口从几K到几百K token其容量可轻松达到数百万甚至数十亿条记录已经是质的飞跃。注意记忆的向量化质量直接决定检索效果。如果嵌入模型不能很好地捕捉语义那么后续的检索就是“垃圾进垃圾出”。通常需要根据任务领域对嵌入模型进行微调。2.2 读写控制器学会如何记笔记与查资料这是神经计算机的“智能”所在也是“可微分”特性的核心体现。控制器本身通常是一个较小的神经网络例如一个轻量级的Transformer或MLP它接收来自推理引擎LLM的指令和当前上下文并决定两件事写什么当前的信息例如对话历史中的一个关键结论、调用工具返回的结果是否值得存入长期记忆如果值得如何将其编码向量化并写入记忆矩阵的合适位置读什么为了解决当前的问题应该从记忆矩阵中检索哪些相关的记忆它需要生成一个“查询向量”用于在记忆矩阵中进行相似性搜索。关键在于整个“生成查询向量 - 检索 - 将检索结果提供给LLM”的链路是可微分的。这意味着在训练过程中系统可以通过梯度下降来优化控制器的参数让它学会在什么时机、以什么形式保存记忆才能使未来的检索最有效。如何构造查询才能精准地召回对当前推理最有帮助的信息。避免保存冗余或无关的信息保持记忆库的“清洁”和高效。这就好比图书馆员在不断接受培训学习如何更科学地给新书分类编目写以及如何更准确地理解读者的模糊需求并找到对应书籍读。2.3 与LLM的协同工作流典型的神经计算机工作流是一个循环感知与问题接收用户输入问题LLM首先理解问题。记忆检索LLM将当前的问题上下文可能结合自身初步思考传递给读写控制器。控制器生成查询向量从记忆矩阵中检索出最相关的K条记忆。增强推理检索到的记忆以文本或结构化数据形式被插入到LLM的提示词中成为新的上下文。LLM基于“原始问题相关记忆”进行深度推理、规划或生成答案。记忆更新根据本轮交互产生的新信息例如推理的中间步骤、最终答案、工具执行的结果控制器可能会决定将部分关键信息向量化后写入记忆矩阵以备未来之需。循环往复对于复杂任务步骤2-4可能会迭代多次LLM像是一个拥有“外部草稿纸”的思想家不断查阅资料、记录灵感最终完成工作。这种架构将LLM从“记忆负担”中解放出来使其能够处理远超其上下文窗口的复杂、长周期任务并且通过持续的记忆更新实现了某种形式的“持续学习”或“经验积累”。3. 关键技术实现从理论到代码的桥梁理解了架构我们来看看如何动手实现一个简化版的神经计算机核心机制。这里我们不会复现Meta的全部实验而是聚焦于最核心的可微分检索和记忆更新策略用PyTorch框架和伪代码来展示其实现思路。3.1 可微分检索的实现传统的检索如基于Faiss的ANN搜索是不可微的它是一个离散的“索引-查找”操作梯度无法传播。为了实现端到端训练我们需要一种“软性”的、可微的检索方式。一种经典方法是使用“软注意力”机制 over 记忆矩阵。假设我们的记忆矩阵M是一个形状为[num_memories, embedding_dim]的张量。控制器根据当前状态h_t生成一个查询向量q_t。import torch import torch.nn as nn import torch.nn.functional as F class DifferentiableMemory(nn.Module): def __init__(self, memory_size, embedding_dim, key_dim): super().__init__() # 初始化可学习的记忆矩阵 self.memory nn.Parameter(torch.randn(memory_size, embedding_dim)) # 控制器网络将当前状态映射为查询向量 self.controller nn.Sequential( nn.Linear(key_dim, 128), nn.ReLU(), nn.Linear(128, embedding_dim) ) def read(self, state): 可微分读操作 state: 当前状态向量 [batch_size, key_dim] 返回读取的记忆内容加权和 [batch_size, embedding_dim] # 1. 生成查询向量 query self.controller(state) # [batch_size, embedding_dim] # 2. 计算查询与所有记忆条目的相似度可微分 # 使用点积相似度并缩放以稳定训练 similarity torch.matmul(query, self.memory.T) / (query.size(-1) ** 0.5) # [batch_size, memory_size] # 3. 应用softmax得到注意力权重可微分 attention_weights F.softmax(similarity, dim-1) # [batch_size, memory_size] # 4. 对记忆内容进行加权求和可微分 # 这里我们假设记忆内容就是记忆矩阵本身。更复杂的设计可以分开存储键和值。 retrieved torch.matmul(attention_weights, self.memory) # [batch_size, embedding_dim] return retrieved, attention_weights # 返回检索内容和权重可用于解释性在这个简化模型中read操作是完全可微的。梯度可以通过attention_weights和memory矩阵回传从而训练控制器学会生成更好的查询也同时优化记忆条目的表示如果记忆也是可学习的参数。实操心得在实际应用中记忆矩阵可能非常大数百万条对所有条目计算注意力在计算上是不可行的。一种折中方案是“两阶段检索”先用快速、不可微的近似搜索如Faiss召回一个候选子集例如1000条然后只在这个子集上应用可微分的软注意力。这样既保证了效率又保留了可微性进行精调。3.2 记忆写入与更新策略记忆不是只进不出的。我们需要策略来决定写什么、何时写以及如何管理记忆容量遗忘机制。写入策略基于显著性的写入控制器可以预测当前信息的“未来有用性”生成一个写入权重。只有权重超过阈值的信息才会被写入。基于压缩的写入将多条相关信息进行编码、压缩形成一条更抽象、信息密度更高的记忆。这需要额外的编码网络。更新机制内容寻址更新找到与待写入信息最相似的旧记忆直接更新它覆盖或插值。最少使用LRU更新为每条记忆维护一个“访问热度”当记忆库满时覆盖最不常用的记忆。基于重要性的更新每条记忆附带一个“重要性”分数优先淘汰低分记忆。下面是一个结合了LRU和内容寻址的简化写入示例class ManageableMemory(DifferentiableMemory): def __init__(self, memory_size, embedding_dim, key_dim): super().__init__(memory_size, embedding_dim, key_dim) # 增加访问计数用于LRU self.access_count torch.zeros(memory_size) # 记忆年龄未访问时间 self.age torch.zeros(memory_size) def write(self, new_info_vector, importance_score): 写入新记忆 new_info_vector: 新信息的向量 [embedding_dim] importance_score: 该信息的重要性标量 with torch.no_grad(): # 写入策略通常不需要梯度 # 1. 计算与现有记忆的相似度 similarities F.cosine_similarity(new_info_vector.unsqueeze(0), self.memory.data, dim1) most_similar_idx similarities.argmax() # 2. 决定是更新旧记忆还是写入新位置 if similarities[most_similar_idx] 0.9: # 相似度阈值 # 更新现有记忆加权平均 self.memory.data[most_similar_idx] ( 0.7 * self.memory.data[most_similar_idx] 0.3 * new_info_vector ) # 重置该记忆的“年龄” self.age[most_similar_idx] 0 else: # 寻找写入位置找到“年龄”最大最久未用的记忆位置 oldest_idx self.age.argmax() # 覆盖该位置 self.memory.data[oldest_idx] new_info_vector # 重置年龄和访问计数 self.age[oldest_idx] 0 self.access_count[oldest_idx] 0 # 3. 更新所有记忆的年龄每次写入操作后所有记忆年龄1 self.age 1这个策略尝试合并高度相似的信息以避免冗余并在需要新空间时淘汰最不活跃的记忆。在实际系统中这些阈值0.9, 0.7, 0.3和策略都可以设计为可学习的。3.3 与现有LLM的集成方案如何将我们构建的神经计算机模块与现有的ChatGPT、Claude或开源LLaMA等模型结合通常有两种模式模式一提示词工程模式无需微调LLM这是最简单快捷的方式。我们将神经计算机作为LLM的一个“外部工具”来使用。用户查询进入系统。神经计算机的检索模块可能基于独立的嵌入模型如text-embedding-ada-002从向量数据库中召回相关文档。将检索到的文档作为上下文与用户查询一起构造成新的Prompt发送给LLM。LLM生成回答。可选将本次对话的精华摘要通过写入控制器存入向量数据库。这种方式利用了LLM强大的上下文理解能力但LLM本身并没有被训练去“主动”学习如何最佳地利用这个记忆系统。整个系统的“智能”依赖于我们设计的检索和写入启发式规则。模式二微调协同模式需要训练这是更接近Meta原论文愿景的方式旨在让LLM和记忆系统协同优化。构建一个数据集其中包含需要多步推理和长期记忆的任务。设计一个统一的模型架构将LLM或其某个层作为推理引擎连接我们实现的可微分记忆模块。在训练时不仅训练记忆控制器也微调LLM的部分参数例如只微调其注意力模块的某些层或者添加适配器使LLM学会如何生成更好的查询状态h_t以及如何更有效地融合检索到的记忆。通过端到端的训练让LLM养成“遇到复杂问题先查资料”的习惯并学会判断什么信息值得保存。模式二性能潜力更大但需要大量的训练数据和计算资源。对于大多数应用团队从模式一开始逐步向模式二演进是一个更稳妥的路径。4. 对比分析与应用场景展望神经计算机并非凭空出现它是为了解决现有AI范式的痛点而生的。我们把它和当前最热的Agent、世界模型放在一起对比就能更清楚地看到它的定位和价值。4.1 与AI Agent的对比从“流程驱动”到“记忆驱动”特性维度传统AI Agent (ReAct, AutoGPT等)神经计算机增强的Agent核心机制流程与工具链。通过LLM循环进行“思考-行动-观察”严重依赖预设的工具集和Prompt工程来串联步骤。记忆增强推理。在流程中嵌入了可查询、可更新的长期记忆系统。决策不仅基于当前上下文和工具还基于历史经验。信息管理上下文窗口内。所有历史交互、工具结果都挤在有限的Prompt上下文里容易遗忘且无法积累。外部可扩展记忆。海量历史交互、知识片段存储在外部可按需检索实现真正的经验积累。长期任务处理困难。长对话或跨会话任务中早期关键信息可能被挤出上下文导致行为不一致或重复错误。优势场景。通过记忆检索可以回顾任务早期状态或跨会话信息保持连贯性和持续性。可训练性主要集中在Prompt工程和工具设计。Agent的“策略”很难通过梯度下降直接优化。端到端可优化。记忆的读写策略、查询生成都可以通过训练数据来学习使系统自我改进。开发复杂度高。需要精心设计工具描述、规划Prompt、处理异常和循环逻辑调试复杂。极高。除了Agent的复杂度还需设计记忆结构、检索策略、更新机制并可能需要联合训练。核心差异传统Agent的核心是“控制流”先做什么后做什么而神经计算机引入的核心是“数据流”用什么知识存什么经验。前者像是一个严格执行流程图的操作员后者则像是一个不断从个人笔记中汲取经验的分析师。4.2 与世界模型的对比符号知识与物理规律世界模型如Genie, Gato-2的核心目标是学习环境通常是视觉或物理仿真环境的动力学规律从而能够预测未来状态或进行规划。它处理的是连续的、低级的感知数据流并试图从中抽象出物理规律。神经计算机处理的核心是离散的、符号化的知识单元文本片段、代码块、事实三元组等。它关注的是知识的关联、存储与检索而非物理规律的建模。两者非但不是竞争关系反而是互补的。一个强大的AI系统可能需要一个世界模型用于在物理或虚拟环境中进行导航、操作和规划理解“如果我把杯子往左推它会掉下桌子”。一个神经计算机用于存储和检索关于这个世界的常识和特定知识例如“这个杯子是陶瓷的易碎”、“桌子高80厘米”。未来我们可能会看到“世界模型神经计算机”的融合体前者提供对物理世界的直觉和预测能力后者提供庞大的常识和领域知识库共同驱动更通用的智能体。4.3 潜在的应用场景与商业价值基于上述分析神经计算机架构在以下几个方向有巨大的应用潜力1. 超级个性化助理当前的数字助理如Siri、Alexa基本是“失忆”的每次对话都几乎从零开始。配备神经计算机的助理可以记住用户的长期偏好“我喝咖啡不加糖”、家庭情况“我女儿下周三有足球赛”、工作习惯“每周五下午我要写周报”并在恰当的时机主动提供信息或服务实现真正贴身的、持续进化的个性化体验。2. 企业级知识中枢与决策支持企业内有大量的非结构化数据技术文档、会议纪要、客户沟通记录、项目报告、代码库。神经计算机可以持续消化这些数据形成企业的“集体记忆”。当员工遇到技术难题、需要撰写方案、分析客户历史时系统能瞬间提供最相关的历史案例、解决方案和专家意见极大提升决策质量和效率。3. 复杂代码生成与软件维护程序员在开发新功能或修复bug时经常需要参考项目内其他模块的代码、API文档、历史提交记录和issue讨论。一个拥有项目级“神经计算机”的编程助手可以将整个代码库和历史变更作为记忆当程序员写下注释“实现一个用户登录功能”时它能自动检索出项目中已有的认证模块、相关的数据库Schema、以及过去处理类似安全问题的代码片段生成更准确、更符合项目规范的代码。4. 长周期游戏AI与剧情交互在开放世界游戏或互动叙事中NPC如果只能记住最近几句对话会显得非常呆板。为每个NPC配备一个神经计算机让它记住与玩家角色的所有互动历史、玩家的行为偏好、甚至玩家未直接告知但通过行为透露的信息比如玩家总是帮助弱者从而生成高度个性化、前后连贯的对话和剧情分支创造前所未有的沉浸感。5. 持续学习的教育机器人教育机器人或智能教学系统可以通过神经计算机记录每个学生的学习轨迹哪些知识点掌握得牢哪些容易出错喜欢什么样的讲解方式在什么时间段注意力最集中。基于这些长期记忆系统可以动态调整教学计划、练习难度和交互风格实现真正的因材施教和自适应学习。这些场景的共同点是任务复杂、信息量大、周期长且需要高度依赖历史信息和上下文。这正是神经计算机架构大显身手的地方。5. 当前挑战与实战避坑指南尽管前景诱人但将神经计算机从论文搬到生产环境路上布满荆棘。我结合一些实验和业界早期的尝试梳理出以下几个核心挑战和对应的实战建议。5.1 记忆的“污染”与“幻觉”问题这是最棘手的问题之一。记忆系统如果写入了错误或低质量的信息那么在后续检索中这些“污染”的记忆会被反复召回误导LLM产生类似“幻觉”但根源在记忆库的错误。更糟糕的是如果系统具有自动写入功能错误的输出可能又被当作“经验”存储起来形成恶性循环。避坑策略严格的质量门控设计多层的写入过滤器。例如只有置信度分数可由LLM自身或一个校验模型给出超过阈值的信息才能被写入。对于事实性知识可以尝试调用外部知识API如Wolfram Alpha进行验证后再存入。记忆来源追踪与权重为每条记忆标记来源如“来自权威文档A第X页”、“来自与用户Y的第Z轮对话”。在检索时可以根据来源可信度对记忆的权重进行调整。在生成最终答案时要求LLM引用记忆来源增加可解释性。定期记忆“清理”与去重实施后台进程定期计算记忆之间的相似度合并高度重复的记忆。对于长期未被访问且重要性低的记忆可以归档或删除。可以引入一个“纠错”机制当发现某条记忆频繁导致生成内容被用户纠正时自动降低其权重或标记为待审核。5.2 检索效率与精度的平衡在海量记忆例如上亿条中进行精确的相似度搜索计算成本极高。使用近似最近邻ANN算法虽然快但会损失精度可能错过关键信息。如何设计检索系统使其在毫秒级响应内从十亿级记忆中精准召回最相关的少数几条是一个巨大的工程挑战。实战建议分层检索架构这是目前的主流方案。第一层使用高效的、基于量化的ANN索引如Faiss-IVF, HNSW进行粗筛从十亿条中快速召回Top-1000候选。第二层使用更精确但更耗时的模型如交叉编码器Cross-Encoder对1000条候选进行重排序选出最终的Top-5或Top-10。这样在精度和效率之间取得了很好的平衡。混合检索策略不要只依赖向量相似度。结合关键词检索BM25、元数据过滤时间、来源、类型和向量检索进行多路召回再融合能有效应对查询的多样性。例如用户问“上周开会决定的预算”可以先通过元数据过滤出“上周”、“会议纪要”类文档再进行向量检索。查询扩展与重写直接的用户查询可能不够精准。可以利用LLM对原始查询进行扩展或重写生成多个相关的查询语句分别进行检索后再合并结果。例如将“如何优化数据库”重写为“MySQL性能调优技巧”、“数据库索引优化方案”、“查询慢的原因分析”等。5.3 记忆的抽象、压缩与结构化原始的记忆如整篇文档、长对话记录信息冗余度高直接存储和检索效率低下。如何对记忆进行抽象、压缩提取出核心的、可重用的“知识单元”是提升系统效能的关键。同时完全非结构化的记忆不利于进行复杂的逻辑查询如“找出所有价格高于100且上个月有销售记录的产品”。设计思路自动摘要与关键信息提取在写入记忆前使用一个专门的摘要模型或信息抽取模型从长文本中提取出核心事实、主张或结论进行存储。原始文档可以存放在廉价的对象存储中记忆库只存摘要和指向原文档的指针。向“神经知识图谱”演进这是更前沿的方向。不单单存储文本片段而是尝试将记忆组织成结构化的知识三元组实体-关系-实体或更复杂的形式。这样检索不仅可以基于语义相似度还可以基于图遍历进行逻辑推理。例如记忆“A公司收购了B公司”可以结构化为(A公司 收购 B公司)。当查询“B公司的母公司是谁”时系统可以通过关系推理得出答案。分层记忆结构借鉴人类记忆设计短期记忆高细节、易失、工作记忆当前任务相关、长期记忆高度抽象、压缩的知识等多层次结构并制定信息在不同层级间转移的规则。5.4 评估体系的缺失如何评估一个神经计算机系统的好坏传统的NLP指标如BLEU, ROUGE或任务准确率只能衡量最终输出无法衡量记忆系统本身的有效性。我们需要新的评估维度检索相关性召回的记忆与当前问题是否真正相关记忆利用率LLM在生成答案时是否有效利用了被提供的记忆记忆更新质量新写入的记忆是否准确、非冗余、对未来有用长期任务一致性系统在跨越很长的交互周期后能否保持对早期设定或事实的一致性建立一套全面的评估基准Benchmark和自动化测试框架是推动该领域从研究走向工程化的必要条件。目前研究者们正在尝试构建需要长期记忆和知识推理的新型数据集来填补这一空白。6. 开源生态与入门实践路线对于想要亲手尝试神经计算机概念的开发者来说现在正是一个好时机。虽然Meta的完整系统尚未开源但其核心思想已经催生了一系列优秀的开源项目和工具我们可以用它们来搭建自己的“简化版”神经计算机。6.1 核心组件选型一个可用的神经计算机系统至少需要以下组件下面是我的推荐选型及理由组件推荐选项理由与备注向量数据库/存储Milvus/Weaviate/Qdrant生产级、高性能、支持丰富的索引和过滤。Milvus生态最成熟Weaviate内置向量化模块和GraphQLQdrant用Rust编写性能极致。对于简单原型ChromaDB或FAISS(纯内存) 上手更快。嵌入模型BGE系列/text-embedding-ada-002开源选BGE如BGE-M3在多语言和长文本检索上表现SOTA。如果追求省事和稳定OpenAI的收费API仍是黄金标准。关键根据你的数据领域代码、科学、金融微调嵌入模型效果提升巨大。大语言模型GPT-4/Claude 3/开源LLaMA3闭源API省心能力最强适合快速验证和产品原型。开源模型LLaMA3 70B, Qwen2.5 72B可控性强、无数据隐私顾虑、成本固定适合深度定制和部署。小模型7B-14B在特定任务上精调后也可能足够用。应用框架LangChain/LlamaIndex它们提供了构建基于记忆的Agent所需的大量工具链和抽象。LangChain更像“胶水”灵活但需要更多编码LlamaIndex对检索增强生成RAG的原生支持更深入。新一代框架如DSPy主张通过声明式编程优化提示词和检索器也值得关注。6.2 分步实践构建一个“永不遗忘的对话助手”我们以一个具体项目为例分步拆解如何构建一个能记住跨会话信息的聊天助手。第一步搭建记忆存储层使用Docker快速部署一个Milvus实例。选择一个嵌入模型例如BAAI/bge-large-zh-v1.5将其封装成服务。设计记忆Schema除了向量字段至少还要有text原始内容、session_id会话ID、timestamp时间戳、type类型如“用户消息”、“助手回复”、“总结”等元数据字段。第二步实现记忆的写入逻辑并非所有对话都要记。一个简单的启发式规则是当用户主动要求记住某事时如“请记住我喜欢蓝色”直接写入。当助手生成的信息包含明确的事实断言可通过NER或规则简单判断且置信度高则写入。每轮对话结束后用LLM生成一个本轮对话的简短摘要例如“用户询问了Python装饰器的用法我给出了示例并解释了语法糖”将摘要写入记忆。这是压缩记忆、避免冗余的关键。# 伪代码示例摘要生成与写入 def summarize_and_store(session_messages): prompt f 请将以下对话总结成一句简洁的陈述概括讨论的核心主题和结论 {session_messages} 总结 summary llm_invoke(prompt) # 生成摘要的向量 summary_embedding embedder.encode(summary) # 写入向量数据库 memory_db.insert({ vector: summary_embedding, text: summary, type: conversation_summary, session_id: current_session_id, timestamp: now() })第三步实现记忆的检索逻辑在每次需要生成回复前获取当前对话的最近几条消息拼接成一个“当前上下文”。用这个上下文作为查询去向量数据库搜索。关键技巧不仅要搜索记忆的text字段也可以将session_id和type作为过滤条件。例如优先检索同一session_id下的记忆确保对话连贯性。检索时可以尝试多种查询策略直接查询用当前上下文向量直接搜。假设性查询让LLM根据当前对话生成几个可能相关的“假设性问题”用这些问题去搜。例如用户说“我上次说的那个项目怎么样了”LLM可以生成“用户上次提到的项目名称和细节”作为查询。将检索到的Top-K条记忆按相关性排序后作为“历史参考”插入到给LLM的Prompt中。第四步设计提示词模板一个包含记忆的Prompt模板可能长这样你是一个拥有长期记忆的助手。以下是你之前和用户交流的相关记录 memory {retrieved_memories} /memory 当前对话历史 context {recent_messages} /context 请根据以上信息回答用户的最新问题{current_query} 回答时如果参考了上述记忆请自然提及但不要直接说“根据记忆”。通过精心设计提示词引导LLM主动、自然地利用提供的记忆。第五步迭代与优化评估检索质量人工抽查看检索到的记忆是否真的有用。优化写入策略分析哪些被写入的记忆从未被检索过调整写入规则。处理记忆冲突当检索到两条矛盾的记忆时例如用户先说喜欢A后说喜欢B在Prompt中告诉LLM这种冲突让它根据时间戳或其他元数据如用户说“我改主意了”来判断。引入记忆“衰减”为记忆设置一个“有效期”或“强度”随着时间推移或不被访问其检索权重逐渐降低。6.3 进阶方向从RAG到真正的“神经计算机”上述实践更接近一个高级的、带记忆的RAG系统。要迈向真正的、可端到端训练的神经计算机还有很长的路但我们可以设定一些进阶目标可微检索的探索尝试用类似DifferentiableMemory的模块替换掉固定的向量检索重排序流程并在一个特定的任务数据集上如长对话QA对控制器和嵌入模型进行微调。记忆结构的复杂化不再存储扁平的记忆片段而是尝试用图神经网络来组织记忆学习记忆之间的关联。与规划能力的结合将神经计算机与具备规划能力的Agent框架如基于LLM的Planner结合让Agent在制定多步计划时能主动查询记忆库中的“经验教训”来优化计划。研究社区跟进紧密跟踪Meta等机构的最新论文和开源代码。像“TinyStories”这样的数据集可能催生需要长期记忆的新评估任务积极参与这些社区对于把握技术方向至关重要。构建神经计算机不是一个一蹴而就的项目而是一个持续迭代的工程。从最简单的、基于规则记忆的聊天助手开始逐步引入更智能的检索、压缩和更新机制你会对“记忆如何增强智能”产生越来越深刻的理解。这个过程中积累的经验将是未来AI应用开发中最宝贵的资产。