AI Agent Harness Engineering 的长期记忆构建:图数据库 Neo4j 在关系抽取中的应用实战


1. 引入与连接(唤起兴趣与建立关联)

核心概念(预告)

今天的旅程,我们将攀登知识金字塔的四座山峰:第一座是「看得见摸得着的AI Agent失忆困境」,比如陪你聊天3天就忘了你上周日吐槽过的外卖里的蟑螂壳;第二座是「理解AI Agent记忆的三层脑模型——类比我们自己的大脑皮层、海马体和前额叶皮层」;第三座是「用图数据库Neo4j搭建长期语义知识图谱记忆库」,把蟑螂壳、外卖平台、商家、你的投诉习惯、天气状况(那天是不是暴雨影响配送导致商家凑活的?)这些零散的“神经信号碎片”连成长长的“记忆神经网络”;第四座是「Harness Engineering( harness不是马具,是把多个技术像套马一样组合起来的“系统驾驭工程”)实战」——从文本关系抽取(NER先抓实体,RE再连关系),到知识图谱的增量存储(每次聊完加新节点/边,不是覆盖!覆盖就是失忆根源!)、高效检索(AI Agent想起来蟑螂壳只需要0.1秒,而不是遍历10GB的文本历史)、推理增强(下次你投诉外卖异物,AI Agent自动关联:上周暴雨投诉了同区域X商家的外卖餐盒漏汤→今天X商家又出问题?是不是该建议换同区域评分4.8以上的Y商家?还要结合天气看看今天配送会不会又受影响?)。

问题背景(真实到扎心的场景)

扎心场景1:你的私人AI助理“失忆症候群”

假设你去年10月和OpenAI的GPT-4o Plus的自定义记忆(Custom Memory)聊过:

  1. 你是过敏性鼻炎患者,对花粉(特别是梧桐絮,每年4-5月北京上海特别多)、猫毛狗毛过敏;
  2. 你有一只金毛,叫“旺财”,每周六下午带它去小区对面的“毛孩子乐园”遛弯;
  3. 你家住在上海市浦东新区张江高科技园区博云路2号的浦软大厦附近的公寓;
  4. 你讨厌香菜、芹菜、韭菜;
  5. 你每周五晚上7点到9点有线上羽毛球课。

结果,今天(202X年6月15日,上海正好刚下完一场暴雨,梧桐絮刚少两天)你问GPT-4o Plus:“周末两天有什么安排建议?”
它可能会说:“哦,周末天气不错,可以去公园赏花、野餐,记得带上宠物一起哦!野餐可以加香菜提味!晚上7点可以放松放松看个电影!”
——我的天呐!赏花?梧桐絮刚过但毛孩子乐园附近会不会残留猫毛狗毛过敏原?野餐加香菜?这是要让我鼻炎+肠胃炎双杀吗?晚上7点?周六晚上我可能想多陪旺财,周五晚上7点是线上羽毛球课啊!GPT-4o Plus的Custom Memory怎么回事?难道它和我一样有“短期记忆爆棚,长期记忆碎片化消失”的毛病?

扎心场景2:企业AI客服的“重复劳动症候群”

假设你在阿里巴巴的“阿里云盘智能客服”工作?不,你是用户!你202X年3月20日因为“阿里云盘同步文件到Mac上总是卡在99%不动”的问题,和客服聊了2小时:

  1. 客服让你检查了网络(你用的是浦软大厦的5G Wi-Fi,速度稳定在100Mbps以上);
  2. 客服让你检查了Mac的存储空间(你当时还有500GB剩余);
  3. 客服让你检查了Mac的系统版本(你当时用的是macOS Sonoma 14.4);
  4. 客服让你检查了阿里云盘的同步文件夹权限(你给了完全访问权限);
  5. 最后客服发现是你同步的文件夹里有一个隐藏的.DS_Store文件有损坏,删除那个文件就好了;
  6. 客服给了你一个“Mac端阿里云盘.DS_Store自动清理工具”的下载链接。

结果,今天(202X年6月15日)你又遇到了同样的问题!你又打开了阿里云盘智能客服,它还是从“您好,请问有什么可以帮您的?”开始,又让你重复了一遍3月20日的所有操作:检查网络、检查存储空间、检查系统版本、检查同步文件夹权限……直到你忍无可忍,说:“我3月份已经遇到过这个问题了!是你们客服给我发的.DS_Store自动清理工具!你怎么忘了!”它才说:“哦,不好意思,我现在才看到您的历史对话!马上给您发工具链接!”
——企业客服这样的重复劳动,不仅浪费用户的时间(2小时变5分钟不行吗?),也浪费企业的人力物力(本来可以让客服处理更复杂的问题,比如云盘扩容、企业版定制)!

问题根源:AI Agent的“短期大脑+长期硬盘”的原始架构

现在主流的AI Agent(不管是GPT-4o Plus的自定义记忆+插件,还是Claude 3 Opus的Context Window扩展到200万Token,还是LangChain/LlamaIndex搭建的RAG+Agent系统),它们的记忆架构都是类比我们大脑的“原始大脑模型”

  1. 短期记忆(Short-Term Memory, STM):对应Context Window(上下文窗口)——最多能记住最近的几十K到几百万个Token,相当于我们大脑的“工作记忆区”(前额叶皮层),用来处理当前的任务,但过了一段时间(或者Token用完了)就会被覆盖或者遗忘;
  2. 长期记忆(Long-Term Memory, LTM):对应向量数据库(Vector DB)+ 纯文本历史数据库(Plain Text DB)——纯文本历史数据库用来存储所有的对话、文档、数据,但检索起来非常慢(遍历10GB的纯文本历史,可能需要几分钟甚至几小时);向量数据库用来把纯文本历史切成小块(Chunk),然后用Embedding模型(比如OpenAI的text-embedding-3-small,或者Cohere的embed-v3.0,或者Hugging Face的all-MiniLM-L6-v2)把每个Chunk转换成一个高维向量(比如1536维,或者1024维,或者384维),然后当AI Agent需要检索长期记忆的时候,先把当前的问题/查询(Query)转换成同样维度的向量,然后用余弦相似度(Cosine Similarity)或者欧氏距离(Euclidean Distance)在向量数据库里找和Query向量最相似的Top-K个Chunk,最后把这Top-K个Chunk塞进Context Window里,让大语言模型(LLM)处理——这个架构叫做检索增强生成(Retrieval-Augmented Generation, RAG)

但是,这个向量数据库+纯文本历史数据库的长期记忆架构,有三个致命的缺陷

  1. 语义碎片化(Semantic Fragmentation):纯文本历史被切成了很小的Chunk(比如256个Token,或者512个Token,或者1024个Token),导致跨Chunk的语义关系丢失——比如你上个月和GPT-4o Plus聊的“过敏性鼻炎对梧桐絮过敏”在Chunk 1234,聊的“上海4-5月梧桐絮特别多”在Chunk 5678,聊的“每周六下午带旺财去毛孩子乐园”在Chunk 9012;今天你问的“周末有什么安排建议?”的Query向量和Chunk 9012的相似度最高(因为都提到了“周末”和“旺财”),和Chunk 1234、Chunk 5678的相似度可能都很低(因为没有直接提到“梧桐絮”或者“过敏”)——所以AI Agent只会把Chunk 9012塞进Context Window里,根本不会想到“毛孩子乐园附近有梧桐絮残留,会导致过敏”这个跨Chunk的语义关系;
  2. 增量存储效率低(Low Incremental Storage Efficiency):向量数据库每次存储新的文本历史,都要把新的文本切成Chunk,然后用Embedding模型转换成向量,然后存储起来——如果新的文本历史和旧的文本历史有重复的内容(比如你上次投诉了X商家的外卖,这次又投诉了X商家的外卖),向量数据库也会存储重复的Chunk和重复的向量,浪费存储空间;
  3. 推理能力弱(Weak Reasoning Ability):向量数据库只能做基于相似度的检索(Similarity-Based Retrieval),不能做基于逻辑的推理(Logic-Based Reasoning)——比如你知道“过敏性鼻炎→对猫毛狗毛过敏”,“毛孩子乐园→有猫毛狗毛”,“每周六下午→去毛孩子乐园”,向量数据库是无法自动推理出“每周六下午→可能接触猫毛狗毛→可能导致过敏性鼻炎发作”这个逻辑链的,必须靠LLM在Context Window里自己推理——但如果Context Window太小,或者相关的Chunk没被检索到,LLM根本推理不出来!
解决方案预告:用知识图谱记忆库(KG Memory)+ 向量数据库+ 纯文本历史数据库,搭建AI Agent的“三层脑模型”

那有没有办法解决这三个致命缺陷呢?当然有!就是用知识图谱(Knowledge Graph, KG)作为长期语义知识记忆库,向量数据库作为长期上下文场景记忆库,纯文本历史数据库作为原始数据备份库,搭建AI Agent的类比我们人类大脑的“新三层脑模型”

  1. 前额叶皮层(工作记忆区,短期记忆):对应Context Window——用来处理当前的任务,记住最近的几十K到几百万个Token;
  2. 海马体(记忆编码区,中期记忆→长期语义记忆的桥梁):对应**关系抽取(Relation Extraction, RE)+ 实体链接(Entity Linking, EL)+ 知识图谱更新(KG Update)**系统——把Context Window里的内容(或者向量数据库/纯文本历史数据库里的内容)编码成实体(Entity)、关系(Relation)、属性(Attribute),然后存储到知识图谱记忆库中;
  3. 大脑皮层(长期记忆存储区,分为长期语义记忆和长期上下文场景记忆)
    • 颞叶内侧(长期语义记忆存储区):对应图数据库Neo4j存储的知识图谱记忆库(KG Memory)——存储所有的实体、关系、属性,以及它们之间的逻辑链,解决语义碎片化、增量存储效率低、推理能力弱的问题;
    • 枕叶、顶叶(长期上下文场景记忆存储区):对应向量数据库存储的上下文场景记忆库(Contextual Scenario Memory)——存储所有的对话、文档、数据的Chunk和向量,解决“快速检索相似场景”的问题(比如你上次投诉X商家的外卖时,正好是暴雨天气,这次又是暴雨天气,向量数据库可以快速检索到上次的场景Chunk,然后和知识图谱记忆库结合起来,让AI Agent更好地处理问题);
  4. 小脑(记忆检索与推理协调区):对应Harness Engineering系统——协调前额叶皮层(Context Window)、海马体(RE+EL+KG Update)、大脑皮层(KG Memory+Contextual Scenario Memory)之间的工作,让AI Agent能够:
    • 快速编码新的记忆:把当前的对话、文档、数据编码成实体、关系、属性,存储到知识图谱记忆库和上下文场景记忆库中;
    • 高效检索相关的记忆:先根据当前的Query,用知识图谱记忆库做基于逻辑的推理检索(Logic-Based Reasoning Retrieval),找到相关的实体、关系、属性、逻辑链;然后用上下文场景记忆库做基于相似度的场景检索(Similarity-Based Scenario Retrieval),找到相关的场景Chunk;最后把逻辑推理结果和场景检索结果一起塞进Context Window里,让LLM处理;
    • 持续优化记忆库:根据LLM的反馈,不断更新知识图谱记忆库和上下文场景记忆库,删除错误的实体、关系、属性,添加正确的实体、关系、属性,合并重复的实体。

学习价值与应用场景预览

学习价值

今天的旅程结束后,你将学会:

  1. 理解AI Agent的长期记忆架构:从“原始大脑模型”(短期Context Window+长期Vector DB+Plain Text DB)升级到“新三层脑模型”(短期Context Window+中期海马体RE+EL+KG Update+长期KG Memory Neo4j+Contextual Scenario Memory Vector DB+协调区Harness Engineering);
  2. 掌握关系抽取(RE)的核心技术:从规则匹配(Rule-Based)到统计模型(Statistical)再到预训练大语言模型(LLM-Based),最后到知识图谱引导的关系抽取(KG-Guided RE)
  3. 掌握图数据库Neo4j的核心操作:从安装Neo4j(桌面版+企业版+社区版Docker)到使用Cypher查询语言(CRUD操作:Create创建、Read读取、Update更新、Delete删除),再到使用Neo4j Graph Data Science(GDS)库做知识图谱的推理(路径查找、社区发现、节点相似度计算);
  4. 掌握Harness Engineering实战:用LangChain+LlamaIndex+Neo4j+OpenAI GPT-4o Mini/Claude 3 Haiku(省钱!适合实战!),搭建一个私人AI助理的长期记忆系统——解决刚才那个“扎心场景1”的问题;
  5. 掌握最佳实践与避坑指南:比如知识图谱的Schema设计(Schema先设计好?还是Schema-Free?)、关系抽取的准确率提升(如何用Few-Shot Prompting+CoT Prompting+KG-Guided RE提升准确率?)、Neo4j的性能优化(如何创建索引?如何使用分页?如何使用GDS库的预计算?)。
应用场景预览

除了刚才提到的私人AI助理企业AI客服,这个长期记忆系统还可以应用到:

  1. 智能教育:比如给学生搭建一个“个性化学习知识图谱记忆库”——记录学生的学习进度、知识点掌握情况、错题类型、学习习惯,然后根据这些信息,给学生推荐个性化的学习内容和学习方法;
  2. 智能医疗:比如给医生搭建一个“患者病历知识图谱记忆库”——记录患者的病史、症状、检查结果、治疗方案、用药情况、过敏史,然后根据这些信息,辅助医生做出更准确的诊断和更合理的治疗方案;
  3. 智能金融:比如给银行搭建一个“客户风险知识图谱记忆库”——记录客户的基本信息、交易记录、信用记录、社交关系、职业背景,然后根据这些信息,评估客户的信用风险和欺诈风险;
  4. 智能法律:比如给律师搭建一个“法律案例知识图谱记忆库”——记录法律条文、案例判决、当事人信息、律师代理情况,然后根据这些信息,给律师推荐相关的法律条文和案例判决;
  5. 智能客服机器人:比如给电商平台搭建一个“商品知识图谱+用户行为知识图谱+客服历史知识图谱”的综合记忆库——记录商品的属性、价格、库存、用户的浏览记录、购买记录、评论记录、客服的历史对话记录,然后根据这些信息,给用户提供更准确的商品推荐和更高效的客服服务。

学习路径概览

今天的学习路径,我们将按照知识金字塔的四座山峰来设计:

  1. 第一座山峰:基础理解层(看得见摸得着的AI Agent失忆困境+新三层脑模型+Neo4j入门)——我们将用生活化的比喻和直观的示例,理解AI Agent的失忆困境、新三层脑模型、图数据库Neo4j的核心概念(节点、边、属性、Cypher查询语言);
  2. 第二座山峰:连接层(NER+RE+EL+KG Update的关系网络)——我们将用概念图和ER实体关系图,理解实体识别(NER)、关系抽取(RE)、实体链接(EL)、知识图谱更新(KG Update)之间的关系,以及它们如何协同工作,把文本转换成知识图谱;
  3. 第三座山峰:深度层(数学模型+算法流程图+Python源代码)——我们将用数学模型(余弦相似度、欧氏距离、预训练大语言模型的损失函数)、算法流程图(NER+RE+EL+KG Update的算法流程)、Python源代码(用spaCy做NER+EL,用OpenAI GPT-4o Mini做KG-Guided RE,用py2neo操作Neo4j,用LangChain搭建Harness Engineering系统),深入理解这些技术的原理机制和实现细节;
  4. 第四座山峰:整合层(私人AI助理的长期记忆系统实战+最佳实践+行业发展与未来趋势)——我们将用实战项目(私人AI助理的长期记忆系统),把所有的技术整合起来,然后总结最佳实践与避坑指南,最后探讨这个领域的行业发展与未来趋势。

2. 概念地图(建立整体认知框架)

核心概念与关键术语

在开始我们的旅程之前,我们先把今天要用到的核心概念与关键术语列出来,给大家一个整体的认知:

核心概念/关键术语 简明定义 生活化比喻
AI Agent 能够感知环境、做出决策、执行动作的智能体,就像一个“数字人” 你的私人秘书、企业的智能客服机器人、自动驾驶汽车的控制系统
Harness Engineering 把多个独立的技术(比如LLM、NER、RE、Neo4j、LangChain)像套马一样组合起来,形成一个能够解决复杂问题的系统的“系统驾驭工程” 把马、马鞍、缰绳、马鞭、骑手组合起来,形成一个能够骑马赶路的系统
长期记忆(LTM) AI Agent能够长期存储和检索的记忆,分为长期语义记忆和长期上下文场景记忆 你大脑里记住的“你的名字”“你的生日”“你的过敏史”“去年你去哪里旅游了”“你第一次谈恋爱是什么时候”
短期记忆(STM)/工作记忆区 AI Agent能够临时存储和处理的记忆,对应Context Window 你大脑里记住的“刚才你在想什么”“现在你要做什么”“今天的天气怎么样”
知识图谱(KG) 一种用节点(Entity)表示实体、用边(Relation)表示实体之间的关系、用属性(Attribute)表示实体和边的属性的图结构数据模型 你家里的“族谱”——节点是人,边是父子/母子/夫妻/兄弟姐妹关系,属性是姓名、性别、出生日期、职业
图数据库(Graph DB) 专门用来存储和查询图结构数据的数据库,比如Neo4j、JanusGraph、Amazon Neptune 专门用来存放“族谱”的“家谱馆”——比普通的“图书馆”(关系型数据库MySQL、PostgreSQL)存放和查询“族谱”更方便
Neo4j 目前最流行的开源图数据库,使用Cypher查询语言(类似SQL,但专门针对图结构数据) 目前最受欢迎的“家谱馆”——设施齐全、服务周到、查询速度快
实体识别(NER) 从文本中识别出命名实体(比如人名、地名、组织机构名、时间、日期、金额)的技术 从一篇新闻报道中,找出“张三”“李四”“北京”“上海”“阿里巴巴”“腾讯”“202X年6月15日”“100元”这些关键词
关系抽取(RE) 从文本中识别出两个命名实体之间的关系的技术 从一篇新闻报道中,找出“张三”和“李四”之间的关系是“同事”,“张三”和“北京”之间的关系是“住在”,“阿里巴巴”和“腾讯”之间的关系是“竞争对手”
实体链接(EL) 把从文本中识别出的命名实体链接到知识库(比如Wikipedia、Freebase、Wikidata、或者自定义的知识图谱)中的实体的技术 从一篇新闻报道中识别出的“张三”,可能有很多个“张三”,实体链接的任务就是把这个“张三”链接到知识库中“阿里巴巴的CEO张三”这个实体
Cypher查询语言 Neo4j专门使用的图结构查询语言,使用ASCII艺术的方式来表示图结构(比如(a)-[r:RELATION]->(b)表示节点a通过关系r连接到节点b) 专门用来在“家谱馆”里查询“族谱”的“查询语言”——比如“查询张三的所有兄弟姐妹”可以写成“MATCH (p:Person {name: '张三'})-[:SIBLING]->(s:Person) RETURN s
检索增强生成(RAG) 把检索到的相关信息(比如知识图谱的推理结果、向量数据库的相似场景Chunk)塞进Context Window里,让LLM生成更准确、更相关、更有依据的回答的技术 你写一篇论文的时候,先去图书馆查相关的资料,然后把这些资料引用到你的论文里,让你的论文更有说服力
LangChain 一个用来搭建LLM应用的开源框架,提供了很多现成的组件(比如LLM、Embedding、Vector DB、KG DB、Agent、Memory),可以让你快速搭建复杂的LLM应用 一个用来搭积木的“工具箱”——里面有很多现成的积木块(比如LLM积木块、Embedding积木块、Vector DB积木块、KG DB积木块),你可以用这些积木块快速搭出你想要的“城堡”(LLM应用)
LlamaIndex(GPT Index) 一个专门用来搭建RAG应用的开源框架,提供了很多现成的索引(比如Vector Index、KG Index、Tree Index、List Index),可以让你快速搭建高效的RAG应用 一个专门用来整理“图书馆资料”的“索引系统”——可以让你快速找到你想要的资料

概念间的层次与关系

今天的核心概念之间的层次与关系,可以用金字塔式层次结构来表示:

  1. 最顶层(系统层):AI Agent Harness Engineering——我们的最终目标,就是用这个系统解决AI Agent的失忆困境;
  2. 第二层(架构层):新三层脑模型——AI Agent的长期记忆架构,由短期Context Window、中期海马体RE+EL+KG Update、长期KG Memory Neo4j+Contextual Scenario Memory Vector DB、协调区Harness Engineering组成;
  3. 第三层(技术层)
    • 长期语义记忆技术:图数据库Neo4j、Cypher查询语言、Neo4j GDS库;
    • 记忆编码技术:实体识别(NER)、关系抽取(RE)、实体链接(EL)、知识图谱更新(KG Update);
    • 长期上下文场景记忆技术:向量数据库(比如ChromaDB、FAISS、Pinecone)、Embedding模型(比如OpenAI text-embedding-3-small、Cohere embed-v3.0、Hugging Face all-MiniLM-L6-v2);
    • 协调与集成技术:LangChain、LlamaIndex、预训练大语言模型(比如OpenAI GPT-4o Mini/Claude 3 Haiku);
  4. 第四层(基础层):核心概念(节点、边、属性、余弦相似度、欧氏距离、预训练大语言模型的损失函数)。

学科定位与边界

今天的主题AI Agent Harness Engineering的长期记忆构建:图数据库Neo4j在关系抽取中的应用实战,属于多学科交叉领域,涉及到:

  1. 人工智能(AI):预训练大语言模型(LLM)、自然语言处理(NLP)、实体识别(NER)、关系抽取(RE)、实体链接(EL);
  2. 数据库技术(DB):图数据库(Graph DB)、Neo4j、Cypher查询语言、向量数据库(Vector DB);
  3. 系统工程(SE):Harness Engineering、系统架构设计、系统接口设计;
  4. 知识工程(KE):知识图谱(KG)、知识表示、知识推理、知识获取。

同时,这个主题也有明确的边界

  1. 我们不讨论:预训练大语言模型的训练(比如如何训练GPT-4o Mini)、实体识别的预训练(比如如何训练spaCy的NER模型)、关系抽取的预训练(比如如何训练T5的RE模型)——这些都是比较深的领域,今天我们重点讨论的是如何使用现成的预训练模型和工具,搭建AI Agent的长期记忆系统
  2. 我们不讨论:其他的图数据库(比如JanusGraph、Amazon Neptune)——今天我们重点讨论的是目前最流行的开源图数据库Neo4j
  3. 我们不讨论:其他的向量数据库(比如FAISS、Pinecone)——今天我们重点讨论的是目前最流行的开源向量数据库ChromaDB
  4. 我们不讨论:其他的协调与集成框架(比如Haystack、LangFlow)——今天我们重点讨论的是目前最流行的协调与集成框架LangChain和LlamaIndex

知识图谱(ER实体关系图+交互关系图)

为了让大家更直观地理解核心概念之间的关系,我们用两个Mermaid架构图来表示:

ER实体关系图(核心概念之间的静态关系)

has

has

has

coordinated_by

consists_of

consists_of

consists_of

consists_of

consists_of

consists_of

consists_of

stored_in

contains

contains

has

has

has

identifies

identifies

links_to

links_to

links_to

updates

stored_in

contains

contains

converted_to

backed_up_in

generates

uses

uses

retrieves_from

retrieves_from

builds

builds

AI_AGENT

SHORT_TERM_MEMORY

MEDIUM_TERM_MEMORY

LONG_TERM_MEMORY

HARNESS_ENGINEERING

CONTEXT_WINDOW

NER

RE

EL

KG_UPDATE

LONG_TERM_SEMANTIC_MEMORY

LONG_TERM_CONTEXTUAL_SCENARIO_MEMORY

NEO4J

NODE

EDGE

ATTRIBUTE

NAMED_ENTITY

RELATION

KNOWLEDGE_BASE

VECTOR_DB

CHUNK

VECTOR

PLAIN_TEXT_DB

EMBEDDING_MODEL

LLM

RAG

LANGCHAIN

LLAMAINDEX

交互关系图(核心概念之间的动态交互流程)
Embedding模型 预训练大语言模型 长期Vector Memory ChromaDB 长期KG Memory Neo4j 中期海马体RE+EL+KG Update 短期Context Window Harness Engineering系统 AI Agent 用户 Embedding模型 预训练大语言模型 长期Vector Memory ChromaDB 长期KG Memory Neo4j 中期海马体RE+EL+KG Update 短期Context Window Harness Engineering系统 AI Agent 用户 alt [短期记忆足够处理Query] [短期记忆不足够处理Query] 发送Query(比如“周末有什么安排建议?”) 转发Query 检查短期记忆 发送短期记忆 生成回答 分析Query,提取关键词 发送关键词,做逻辑推理检索(比如“查询用户的过敏史、宠物信息、居住地点、周末习惯”) 返回逻辑推理结果(实体、关系、属性、逻辑链) 把Query转换成向量 返回Query向量 发送Query向量,做Top-K相似场景检索 返回Top-K相似场景Chunk 发送逻辑推理结果+场景检索结果+Query 发送所有内容 生成回答 转发新的对话(Query+Answer) 编码新的对话(NER+RE+EL+KG Update) 更新知识图谱 把新的对话切成Chunk,转换成向量 返回Chunk向量 存储Chunk和向量 返回回答

3. 基础理解(建立直观认识)

核心概念的生活化解释

核心概念1:AI Agent的“原始大脑模型”与“失忆困境”

刚才我们提到,现在主流的AI Agent的记忆架构是类比我们大脑的“原始大脑模型”——只有“短期工作记忆区”(Context Window)和“长期硬盘备份区”(纯文本历史数据库),没有“长期语义知识存储区”(知识图谱记忆库)和“长期上下文场景存储区”(向量数据库记忆库),更没有“记忆编码区”(海马体RE+EL+KG Update)和“记忆检索与推理协调区”(Harness Engineering)。

为了让大家更直观地理解这个“原始大脑模型”和“失忆困境”,我们可以用**一个“只会写便利贴但不会整理书架的秘书”**来比喻:

  1. 短期工作记忆区(Context Window):对应秘书手里的“一叠便利贴”——最多只能放10张便利贴(对应100K Token左右的Context Window),用来记录当前的任务和最近的对话;如果便利贴用完了,秘书就会把最早的便利贴扔掉(覆盖),换成新的便利贴;
  2. 长期硬盘备份区(纯文本历史数据库):对应秘书家里的“一个堆满了旧报纸、旧信件、旧文件的大纸箱”——所有的便利贴用完后,秘书都会把它们扔进大纸箱里;但大纸箱里的东西没有整理,乱七八糟的,找起来非常慢(遍历10GB的纯文本历史,可能需要几分钟甚至几小时);
  3. 失忆困境:假设你上周日和这个秘书聊过“你讨厌香菜、芹菜、韭菜”,并把这句话写在了一张便利贴上;今天你问这个秘书“中午帮我订一份外卖,不要香菜、芹菜、韭菜”——如果那张便利贴还在秘书手里的便利贴叠里(短期记忆没被覆盖),秘书就会帮你订一份没有香菜、芹菜、韭菜的外卖;但如果那张便利贴已经被扔掉了(短期记忆被覆盖),秘书就会去大纸箱里找,但大纸箱里的东西乱七八糟的,找起来非常慢,甚至可能找不到,最后秘书就会帮你订一份加了香菜、芹菜、韭菜的外卖——这就是“失忆困境”!
核心概念2:AI Agent的“新三层脑模型”

刚才我们提到,解决“失忆困境”的办法就是用知识图谱记忆库(KG Memory)+ 向量数据库记忆库(Vector Memory)+ 记忆编码区(海马体RE+EL+KG Update)+ 记忆检索与推理协调区(Harness Engineering),搭建AI Agent的类比我们人类大脑的“新三层脑模型”

为了让大家更直观地理解这个“新三层脑模型”,我们可以用**一个“会写便利贴、会整理书架、会找资料的专业秘书”**来比喻:

  1. 短期工作记忆区(前额叶皮层,Context Window):对应专业秘书手里的“一叠便利贴”——最多只能放10张便利贴(对应100K Token左右的Context Window),用来记录当前的任务和最近的对话;
  2. 记忆编码区(海马体,RE+EL+KG Update):对应专业秘书的“大脑”——每次和你聊完天,或者帮你处理完任务,专业秘书的大脑就会把这些内容“编码”成两种信息:
    • 语义知识信息:比如“你讨厌香菜、芹菜、韭菜”“你有一只金毛叫旺财”“你住在上海市浦东新区张江高科技园区博云路2号的浦软大厦附近”——这些信息会被专业秘书整理成“卡片”,放进“语义知识书架”里;
    • 上下文场景信息:比如“202X年6月14日晚上7点,你和我聊过‘明天要去毛孩子乐园遛旺财’,当时上海的天气是多云转晴”——这些信息会被专业秘书整理成“照片”,放进“上下文场景相册”里;
  3. 长期语义知识存储区(颞叶内侧,KG Memory Neo4j):对应专业秘书的“语义知识书架”——书架上的卡片都是按照“分类”和“关系”整理的:
    • 分类:比如“我的基本信息”“我的过敏史”“我的宠物”“我的居住地点”“我的饮食习惯”“我的周末习惯”;
    • 关系:比如“我→讨厌→香菜”“我→讨厌→芹菜”“我→讨厌→韭菜”“我→拥有→金毛旺财”“金毛旺财→名字→旺财”“我→住在→上海市浦东新区张江高科技园区博云路2号的浦软大厦附近”——这些“分类”和“关系”,就相当于知识图谱里的“节点标签”和“边关系”;
  4. 长期上下文场景存储区(枕叶、顶叶,Vector Memory ChromaDB):对应专业秘书的“上下文场景相册”——相册里的照片都是按照“时间顺序”和“相似度”整理的:
    • 时间顺序:比如“202X年6月的照片”“202X年5月的照片”“202X年4月的照片”;
    • 相似度:比如“和‘毛孩子乐园’相关的照片”“和‘外卖’相关的照片”“和‘过敏’相关的照片”——这些“时间顺序”和“相似度”,就相当于向量数据库里的“时间戳索引”和“向量相似度索引”;
  5. 记忆检索与推理协调区(小脑,Harness Engineering):对应专业秘书的“协调能力”——每次你问专业秘书问题,专业秘书的协调能力就会发挥作用:
    • 第一步:检查短期记忆:先看看手里的便利贴里有没有相关的信息;
    • 第二步:从语义知识书架做基于逻辑的推理检索:如果短期记忆里没有,就去语义知识书架里找相关的卡片,并且根据卡片之间的关系做推理——比如你问“周末有什么安排建议?”,专业秘书就会去语义知识书架里找“我的周末习惯”“我的过敏史”“我的宠物”“我的居住地点”这些卡片,然后根据卡片之间的关系做推理:“每周六下午带旺财去毛孩子乐园→毛孩子乐园附近有猫毛狗毛→我对猫毛狗毛过敏→所以周六下午带旺财去毛孩子乐园的时候要戴口罩”;
    • 第三步:从上下文场景相册做基于相似度的场景检索:然后去上下文场景相册里找和“周末”“毛孩子乐园”“过敏”相关的照片——比如找到一张“202X年4月20日周六下午,我带旺财去毛孩子乐园,结果因为接触猫毛狗毛导致过敏性鼻炎发作,去医院看了医生”的照片;
    • 第四步:把所有信息整合起来,生成回答:最后把短期记忆里的信息、语义知识书架里的推理结果、上下文场景相册里的照片整合起来,生成一个回答——比如“周末两天的安排建议:
      1. 周六上午:在家休息,或者去附近的超市买一些菜(记得不要买香菜、芹菜、韭菜);
      2. 周六下午:可以带旺财去毛孩子乐园,但一定要戴口罩(因为你对猫毛狗毛过敏,而且202X年4月20日周六下午你带旺财去毛孩子乐园的时候,因为接触猫毛狗毛导致过敏性鼻炎发作,去医院看了医生);
      3. 周六晚上:在家陪旺财玩,或者看个电影;
      4. 周日全天:可以安排一些室内活动,比如看书、写代码、打游戏,避免接触过敏原”;
    • 第五步:把新的对话编码成语义知识和上下文场景,存储起来:最后把你和专业秘书的新对话(Query+Answer)编码成语义知识和上下文场景,分别放进语义知识书架和上下文场景相册里。
核心概念3:知识图谱(KG)与图数据库Neo4j

刚才我们提到,知识图谱是一种用节点表示实体、用边表示实体之间的关系、用属性表示实体和边的属性的图结构数据模型,而图数据库Neo4j是目前最流行的开源图数据库,专门用来存储和查询知识图谱

为了让大家更直观地理解知识图谱和图数据库Neo4j,我们可以用**一个“简化版的个人信息族谱”**来比喻:

  1. 节点(Node):对应族谱里的“人”——比如“我”“旺财”“香菜”“芹菜”“韭菜”“毛孩子乐园”“上海市浦东新区张江高科技园区”“浦软大厦”“202X年4月20日”“过敏性鼻炎”“猫毛”“狗毛”;
  2. 节点标签(Label):对应族谱里的“人的分类”——比如“Person”“Pet”“Food”“Place”“Date”“Disease”“Allergen”;
  3. 边(Edge/Relationship):对应族谱里的“人与人之间的关系”——比如“我→讨厌→香菜”“我→讨厌→芹菜”“我→讨厌→韭菜”“我→拥有→旺财”“我→对→猫毛→过敏”“我→对→狗毛→过敏”“我→住在→上海市浦东新区张江高科技园区”“上海市浦东新区张江高科技园区→附近有→浦软大厦”“上海市浦东新区张江高科技园区→附近有→毛孩子乐园”“毛孩子乐园→有→猫毛”“毛孩子乐园→有→狗毛”“202X年4月20日→我→带→旺财→去→毛孩子乐园”“202X年4月20日→我→因为→接触→猫毛狗毛→导致→过敏性鼻炎发作”;
  4. 边关系类型(Relationship Type):对应族谱里的“关系的分类”——比如“DISLIKES”“OWNS”“ALLERGIC_TO”“LIVES_IN”“NEAR”“HAS”“VISITED”“CAUSED”;
  5. 属性(Property):对应族谱里的“人的属性”或“关系的属性”——比如“我”的属性有name: "张三"age: 28gender: "male";“旺财”的属性有name: "旺财"breed: "Golden Retriever"age: 3gender: "male";“202X年4月20日→我→带→旺财→去→毛孩子乐园”的属性有time: "14:00-16:00"weather: "sunny"
  6. 图数据库Neo4j:对应专门用来存放这个“简化版的个人信息族谱”的“家谱馆”——比普通的“图书馆”(关系型数据库MySQL、PostgreSQL)存放和查询这个“族谱”更方便:
    • 存放更方便:在关系型数据库里,你可能需要创建很多张表(比如Person表、Pet表、Food表、Place表、Date表、Disease表、Allergen表、Dislikes表、Owns表、Allergic_To表、Lives_In表、Near表、Has表、Visited表、Caused表),然后用外键(Foreign Key)把这些表连接起来;但在图数据库Neo4j里,你只需要创建节点、边、属性就可以了,不需要创建表,也不需要用外键;
    • 查询更方便:比如你想查询“我讨厌的所有食物”——在关系型数据库里,你需要写一个SQL查询语句,把Person表、Dislikes表、Food表连接起来;但在图数据库Neo4j里,你只需要写一个Cypher查询语句:MATCH (p:Person {name: '张三'})-[:DISLIKES]->(f:Food) RETURN f
    • 推理更方便:比如你想查询“我不能去的所有地方”——在关系型数据库里,你需要写一个非常复杂的SQL查询语句,连接很多张表,还要做很多逻辑判断;但在图数据库Neo4j里,你只需要写一个Cypher查询语句:MATCH (p:Person {name: '张三'})-[:ALLERGIC_TO]->(a:Allergen), (pl:Place)-[:HAS]->(a) RETURN pl——这个查询语句会自动推理出“我对猫毛狗毛过敏→毛孩子乐园有猫毛狗毛→所以我不能去毛孩子乐园”这个逻辑链!
核心概念4:实体识别(NER)、关系抽取(RE)、实体链接(EL)

刚才我们提到,记忆编码区(海马体)的工作是把文本转换成实体、关系、属性,然后存储到知识图谱里——这个工作可以分成三个步骤:实体识别(NER)、关系抽取(RE)、实体链接(EL)。

为了让大家更直观地理解这三个步骤,我们可以用一个“从报纸文章中提取信息并整理成卡片放进家谱馆”的工作流程来比喻:
假设你有一篇报纸文章:“202X年6月14日晚上7点,家住上海市浦东新区张江高科技园区博云路2号浦软大厦附近的张三,和他的金毛旺财在小区里散步,遇到了他的同事李四,李四说他明天要去毛孩子乐园遛狗,张三说他每周六下午都会带旺财去毛孩子乐园,但因为他对猫毛狗毛过敏,所以一定要戴口罩。”

  1. 第一步:实体识别(NER):从这篇报纸文章中,找出所有的“命名实体”——就像从报纸文章中,找出所有的“关键词”,并把它们圈出来,写上分类:
    • Person:张三、李四;
    • Pet:金毛旺财;
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐