LangChain和LangGraph的存储体系,核心可以概括为 “一个为短期状态而生,一个为长期知识而存” 。它们一个负责跟踪“进行到哪一步了”,另一个负责记住“用户是谁”。

下面我将从存储逻辑、策略、常用数据库三个维度,为你系统梳理。


1. 存储体系概览:Checkpointers vs. Stores

LangGraph 提供了两种互补的持久化系统,你可以把它们理解为AI的“工作记忆(内存)”和“长期记忆(硬盘)”。

特性 Checkpointers (检查点) Stores (存储)
核心作用 保存图状态的“快照”,主要用于短期、线程范围内的记忆。 保存应用定义的键值数据,用于长期、跨线程的记忆。
存储逻辑 状态快照 (State Snapshots):在每个步骤后保存整个图的状态(如对话历史)。 键值文档 (Key-Value Documents):将记忆作为JSON文档存储,通过命名空间(namespace)和键(key)组织。
数据范围 限定在单个 thread_id (会话线程) 内。 可跨多个 thread_id,通过自定义命名空间(如 user_id)访问。
主要用途 实现多轮对话连续性、人机协同、故障恢复、“时间旅行”等。 存储用户偏好、长期事实、跨会话共享的知识等。
访问方式 在图编译时传入,通过 thread_id 自动管理。 在节点或工具函数中通过 store 对象手动读写。

2. 深入Checkpointers(短期记忆/状态持久化)

存储逻辑与策略
  • 核心机制:LangGraph 的短期记忆是通过检查点(Checkpoint) 机制实现的。在图每次执行步骤后,当前的状态(State)都会被自动保存。
  • 恢复机制:当使用相同的 thread_id 再次调用图时,系统会自动加载该线程的最新检查点,从而恢复对话。
  • 管理策略:对于长对话,可以采用消息修剪(Trimming)摘要(Summarization) 等策略来管理历史消息,避免超出模型上下文窗口。
常用数据库(后端)

Checkpointers 的核心是 BaseCheckpointSaver 接口的各种实现。

  • 内存(开发/测试)MemorySaver
  • PostgreSQL(生产)PostgresSaver
  • SQLite(轻量级)SqliteSaver
  • MongoDBMongoDBSaver
  • RedisRedisSaver
  • Amazon DynamoDBDynamoDBSaver
  • Azure Cosmos DBCosmosDBSaver

3. 深入Stores(长期记忆/知识持久化)

存储逻辑与策略
  • 核心机制:长期记忆被存储为JSON文档,并通过 “命名空间 (Namespace)”“键 (Key)” 进行组织。命名空间类似文件夹,通常包含用户或组织ID,例如 (user_id, "memories")
  • 读写操作:通过 store.put()store.search() 等方法进行读写。可以按命名空间列出或搜索记忆。
  • 索引支持:部分 Store 实现(如 InMemoryStore)支持配置索引(如嵌入索引),以实现语义搜索。
常用数据库(后端)

Stores 的核心是 BaseStore 接口的各种实现。

  • 内存(开发/测试)InMemoryStore
  • PostgreSQL(生产)PostgresStore。常与 pgvector 扩展结合,支持向量检索。
  • MongoDB(生产)MongoDBStore
  • Redis(生产)RedisStore
  • 其他:还支持如 AstraDBStoreCassandraStore 等多种键值存储。

4. 向量存储(Vector Stores):RAG的核心

虽然严格来说 Vector Stores 不属于记忆系统,但它在 RAG(检索增强生成) 中扮演着外部知识库的角色,是实现长期、非结构化知识存储的关键。

  • 存储逻辑:将文本转换为向量嵌入(Embeddings)进行存储,并支持基于向量相似度的检索。
  • 常用数据库:LangChain 支持海量的向量数据库,常见的有:
    • 开源/本地:Chroma, FAISS
    • 云服务:Pinecone, Milvus (Zilliz), Weaviate
    • 数据库插件:PostgreSQL (+ pgvector), Cassandra

5. 存储策略与最佳实践总结

  1. 分清场景,按需选择:为对话连续性和故障恢复使用 Checkpointers;为跨会话的用户画像和事实记忆使用 Stores;为外部知识库检索使用 Vector Stores
  2. 开发测试用内存,生产环境用数据库InMemoryStoreMemorySaver 仅适用于开发和测试。生产环境务必切换为 PostgresStorePostgresSaver 等持久化后端。
  3. 注意数据过期与清理:设计合理的数据过期策略(TTL),避免无效数据占用存储空间。
  4. 大流量下的Checkpointer优化:对于高吞吐量部署,考虑使用BLOB存储来防止数据库膨胀。某些 Saver 实现(如 RedisSaver)只保留最新检查点以优化性能。
    解决大模型幻觉,智能体(Agent)大模型(LLM) 的策略逻辑完全不同:
  • LLM(被动回答):像个记忆力超群但爱瞎编的学霸。策略重点是**“在张嘴前,把正确答案塞到它眼皮底下”(RAG),以及“逼它把解题步骤写出来”**(CoT)。
  • Agent(主动行动):像个会使用工具的外包主管。策略重点是**“不懂别猜,自己去查”(调用API/搜索引擎),以及“找同事交叉检查”**(多智能体辩论)。

我为你梳理了一套**“五层防御塔”**体系,从低阶到高阶,覆盖了当下大模型幻觉治理的全部策略:


第一层:地基防御(数据与模型层)—— 源头治理

这是最根本的,但也是成本最高的。

  • 高质量数据清洗:训练/微调时,去除数据中的事实性错误和矛盾内容。策略:使用“去重”(Deduplication)和“毒性/事实性过滤”。
  • RLHF / DPO(偏好对齐):通过强化学习(RLHF)或直接偏好优化(DPO),让模型学会说“我不知道”,而不是硬编造一个错误答案。策略:在奖励模型中,给“承认未知”的行为打高分。

第二层:外挂大脑(检索增强生成 RAG)—— 业界主流必杀技

这是目前解决事实性幻觉(Factual Hallucination)最有效的手段。核心逻辑是“检索先行,生成靠后”

  • 基础策略:用户提问 -> 去向量库搜资料 -> 把资料塞进Prompt -> 强制模型基于资料回答。
  • 高阶进阶(专门针对Agent)
    • HyDE(假设性文档嵌入):让Agent先自己瞎编一个“假设性答案”,然后用这个假设答案去搜资料。虽然答案是编的,但它包含的语义能搜到更匹配的文档。
    • 多路召回 + 重排序(Rerank):Agent不只用向量检索,还会同时用搜索引擎(如Bing/Google API)和关键词检索(BM25)。召回一堆资料后,用一个轻量级“重排序模型”把最相关的排在前面,防止检索噪声污染LLM。

第三层:思维显影(推理时干预)—— 逼它写出草稿纸

针对逻辑性幻觉(Logic Hallucination)(即逻辑跳跃导致的错误)。

  • CoT(思维链)与 ReAct:强制Agent输出思考过程。策略Thought -> Action -> Observation。让模型把推理步骤写出来,而不是直接给结论。一旦模型把步骤写出来,人类或代码就能在中间步骤发现逻辑断层。
  • Self-Consistency(自一致性)策略:让大模型针对同一个问题,走 3-5 条不同的推理路径(提高 Temperature)。最后投票,选出现次数最多的答案。如果 3 条路都得出同一个结果,幻觉概率大大降低。

第四层:工具外挂(Agent 核心必杀)—— 手不够长就伸工具

这是Agent相比普通LLM最大的优势,也是面试最高频的考点。

  • 工具调用(Tool / Function Calling)策略:识别到“数学/计算”问题,Agent强制调用计算器;识别到“实时天气/股价”,强制调用API插件;识别到“大段文本知识”,强制去查SQL数据库让工具返回客观事实,取代模型的凭空臆测。
  • 代码执行(Code Interpreter)策略:遇到逻辑计算或数据分析,Agent不自己算,而是生成一段 Python 代码,丢进沙盒环境执行,拿执行结果作为回答。机器算的,绝不会产生幻觉。

第五层:事后验证(AI 自我纠偏)—— 找 AI 给 AI 查作业

这是目前最前沿的策略,利用多智能体(Multi-Agent)反思机制(Reflection)

  • Reflection(自我反思)策略:让 Agent 先生成初稿,然后 Prompt 它换一个身份(如“严厉的审稿人”),对初稿进行找茬(“这段话的依据在哪里?”)。根据找茬结果,Agent 再修改第二版。明显降低幻觉率。
  • 多智能体辩论(Multi-Agent Debate)策略(究极体)
    1. 执行者 Agent:负责给出答案。
    2. 验证者 Agent:负责联网搜索或查知识库,核实执行者答案里的每一个数据点。
    3. 裁判 Agent:如果验证者发现错误,裁判强制执行者重写。
  • 诚实性分类器(Honesty Classifier):在Agent链路最后加一个小模型(如BERT),专门用来判断“生成内容”和“检索到的参考资料”是否存在事实冲突(即幻觉检测)。若有冲突,拒绝回答并触发重新生成。

大王总结(面试标准话术)

如果面试官问:“你如何解决大模型幻觉?”

你可以这样回答:

“我会建立 ‘防幻觉三层漏斗’

  1. 入口层(防患未然):通过 RAG + 重排序(Rerank),确保喂给模型的参考资料是准确且高相关的,从源头堵住胡说的空间。
  2. 过程层(显式推理):利用 ReAct 策略,强制Agent调用工具(如搜索API、计算器)获取客观数据,并利用 CoT(思维链) 把推理过程暴露出来,方便人工或代码在中间步骤截断错误。
  3. 出口层(双重校验):引入 Self-Reflection(自我反思) 机制,让Agent自己换位思考当‘检查员’,对生成的答案进行事实性校验。如果置信度低于阈值,触发‘我不知道’兜底回复,绝不编造。”

特别注意:RAG 是地基,Agent 工具调用是房梁,自我反思是天花板。在实际业务中,不要把希望寄托在把 GPT-4 调得更好上,而要寄托在让 Agent 学会查资料和用计算器上! 对于非创造性的知识问答,只要 Agent 学会了查库,幻觉率可以直接降到 1% 以下。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐