app那个网站开发比较好,免费软件app大全,网站托管维护合同,搭建网站做淘宝客玄同 765 大语言模型 (LLM) 开发工程师 | 中国传媒大学 数字媒体技术#xff08;智能交互与游戏设计#xff09; CSDN 个人主页 | GitHub Follow 关于作者 深耕领域#xff1a;大语言模型开发 / RAG 知识库 / AI Agent 落地 / 模型微调技术栈#xff1a;Python | R…玄同 765大语言模型 (LLM) 开发工程师 | 中国传媒大学 · 数字媒体技术智能交互与游戏设计CSDN · 个人主页 | GitHub · Follow关于作者深耕领域大语言模型开发 / RAG 知识库 / AI Agent 落地 / 模型微调技术栈Python | RAG (LangChain / Dify Milvus) | FastAPI Docker工程能力专注模型工程化部署、知识库构建与优化擅长全流程解决方案「让 AI 交互更智能让技术落地更高效」欢迎技术探讨与项目合作解锁大模型与智能交互的无限可能一、记忆系统概述1.1 记忆系统核心概念记忆层提供统一 State 管理、对话记录、长期检索、多模态 Memory 等能力支持持久化与复杂工作流状态流转。记忆系统是智能体的核心组成部分使智能体能够记住过去的交互提供更连贯的用户体验。核心组件短期记忆消息历史自动管理长期记忆向量数据库存储Chroma, Pinecone存储接口Store跨会话持久化1.2 记忆类型对比记忆类型存储方式保留时间适用场景实现方式特点短期记忆内存/会话单次对话上下文理解InMemoryChatMessageHistory速度快易丢失长期记忆向量数据库永久知识检索Chroma, Pinecone语义检索容量大会话记忆数据库跨会话用户偏好Redis, SQL数据库持久化跨会话多模态记忆混合存储永久图像、音频检索向量数据库 文件存储支持多种数据类型1.3 记忆系统架构是否用户输入短期记忆记忆处理需要长期记忆?长期记忆向量检索结果整合智能体处理输出结果更新记忆1.4 记忆系统的重要性应用场景记忆需求记忆类型优势客服机器人记住用户历史问题短期会话记忆提供连贯的服务个人助手存储用户偏好会话长期记忆个性化服务知识管理检索企业知识长期记忆知识复用教育应用跟踪学习进度会话长期记忆个性化学习路径医疗助手记录患者病史长期记忆连续的医疗建议二、短期记忆与会话管理2.1 消息历史管理LangChain 提供了多种消息历史管理方式最常用的是ChatMessageHistoryfromlangchain_core.messagesimportAIMessage,HumanMessagefromlangchain_core.chat_historyimportInMemoryChatMessageHistory# 1. 创建消息历史chat_historyInMemoryChatMessageHistory()# 2. 添加消息chat_history.add_user_message(你好请你介绍一下你自己。)chat_history.add_ai_message(你好我是一个人工智能助手很高兴为你服务。)# 3. 获取消息历史messageschat_history.messagesprint(messages)# 4. 清除历史chat_history.clear()2.2 消息裁剪对于长对话可以使用消息裁剪功能只保留最近的几条消息fromlangchain.messagesimporttrim_messagesfromlangchain_core.messagesimportAIMessage,HumanMessage# 创建一条长对话历史messages[HumanMessage(content你好),AIMessage(content你好),HumanMessage(content今天天气怎么样),AIMessage(content今天天气很好),HumanMessage(content你叫什么名字),AIMessage(content我是一个AI助手。),HumanMessage(content你能做什么),AIMessage(content我能回答问题、聊天等。),]# 裁剪消息只保留最近的2轮trimmedtrim_messages(messages,max_tokens100,strategylast,token_counterlambdax:len(x.content.split()))print([msg.contentformsgintrimmed])2.3 会话记忆集成在链中集成会话记忆fromlangchain_core.runnablesimportRunnablePassthroughfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_openaiimportChatOpenAIfromlangchain_core.chat_historyimportBaseChatMessageHistoryfromlangchain_core.runnables.historyimportRunnableWithMessageHistory# 1. 存储消息历史的函数session_store{}defget_session_history(session_id:str)-BaseChatMessageHistory:ifsession_idnotinsession_store:session_store[session_id]InMemoryChatMessageHistory()returnsession_store[session_id]# 2. 创建 promptpromptChatPromptTemplate.from_template(你是一个助手根据对话历史回答问题。\n对话历史{chat_history}\n问题{question})# 3. 创建模型modelChatOpenAI(modelgpt-4o-mini)# 4. 创建链chainRunnablePassthrough.assign(chat_historylambdax:get_session_history(x[session_id]).messages)|prompt|model# 5. 添加消息历史chain_with_historyRunnableWithMessageHistory(chain,get_session_history,input_messages_keyquestion,history_messages_keychat_history,output_messages_keyoutput)# 6. 执行对话resultchain_with_history.invoke({question:你好请你介绍一下你自己。,session_id:1})print(result.content)# 7. 继续对话resultchain_with_history.invoke({question:你刚才说了什么,session_id:1})print(result.content)三、长期记忆与向量存储3.1 向量存储基础长期记忆通常使用向量数据库存储支持语义检索fromlangchain_community.vectorstoresimportChromafromlangchain_openaiimportOpenAIEmbeddingsfromlangchain_core.documentsimportDocument# 1. 创建文档documents[Document(page_contentLangChain 是一个构建 LLM 应用的框架,metadata{source:doc1}),Document(page_contentLangChain 1.0 版本引入了统一智能体抽象,metadata{source:doc2}),Document(page_contentLangGraph 是 LangChain 的工作流框架,metadata{source:doc3})]# 2. 初始化嵌入模型embeddingsOpenAIEmbeddings()# 3. 创建向量存储vectorstoreChroma.from_documents(documentsdocuments,embeddingembeddings,persist_directory./chroma_db)# 4. 相似性搜索resultsvectorstore.similarity_search(LangChain 1.0 有什么新特性)fordocinresults:print(doc.page_content)3.2 长期记忆集成将长期记忆集成到智能体中fromlangchain_core.retrieversimportBaseRetrieverfromlangchain_core.runnablesimportRunnableLambda# 1. 创建检索器retrievervectorstore.as_retriever()# 2. 创建一个检索链defretrieve_and_generate(inputs):# 检索相关文档docsretriever.get_relevant_documents(inputs[question])# 构建上下文context\n.join([doc.page_contentfordocindocs])# 生成回答resultmodel.invoke(f根据上下文回答问题\n上下文{context}\n问题{inputs[question]})returnresult# 3. 创建链retrieval_chainRunnableLambda(retrieve_and_generate)# 4. 执行resultretrieval_chain.invoke({question:LangChain 1.0 有什么新特性})print(result.content)四、存储接口与持久化4.1 Store 接口Store 接口提供了统一的存储抽象支持多种后端fromlangchain_core.storesimportInMemoryStore# 1. 创建内存存储storeInMemoryStore()# 2. 存储数据store.mset([(key1,value1),(key2,value2)])# 3. 获取数据valuestore.mget([key1])print(value)# 4. 删除数据store.mdelete([key1])4.2 持久化存储对于生产环境可以使用持久化存储fromlangchain.storageimportLocalFileStore# 1. 创建文件存储storeLocalFileStore(./store)# 2. 存储数据store.mset([(user1,{\name\: \张三\, \preferences\: \喜欢科技\})])# 3. 获取数据user_datastore.mget([user1])print(user_data)五、多模态记忆5.1 多模态数据存储LangChain 支持存储和检索多模态数据fromlangchain_core.documentsimportDocument# 创建包含多模态信息的文档documents[Document(page_content这是一张猫的图片,metadata{source:image,image_path:cat.jpg}),Document(page_content这是一段关于狗的音频,metadata{source:audio,audio_path:dog.mp3})]# 存储到向量数据库vectorstoreChroma.from_documents(documentsdocuments,embeddingembeddings)# 检索resultsvectorstore.similarity_search(动物图片)fordocinresults:print(f内容:{doc.page_content})print(f元数据:{doc.metadata})六、记忆系统优化6.1 记忆压缩对于长文档可以使用记忆压缩技术fromlangchain.retrieversimportContextualCompressionRetrieverfromlangchain.retrievers.document_compressorsimportLLMChainExtractor# 1. 创建压缩器compressorLLMChainExtractor.from_llm(model)# 2. 创建压缩检索器compression_retrieverContextualCompressionRetriever(base_compressorcompressor,base_retrieverretriever)# 3. 使用resultscompression_retriever.get_relevant_documents(LangChain 1.0 新特性)fordocinresults:print(doc.page_content)print(*50)6.2 记忆检索优化优化记忆检索的方法优化方法效果实现方式元数据过滤提高相关性filter参数Top-K 调整平衡精度和速度k参数相似度阈值过滤低质量结果score_threshold多检索器融合综合多源信息EnsembleRetriever七、实战案例7.1 构建一个具备长期记忆的对话系统fromlangchain_core.runnablesimportRunnablePassthroughfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_openaiimportChatOpenAI,OpenAIEmbeddingsfromlangchain_community.vectorstoresimportChromafromlangchain_core.documentsimportDocument# 1. 创建知识库documents[Document(page_content公司名称ABC科技\n成立时间2020年\n主营业务人工智能开发,metadata{source:company}),Document(page_content产品名称智能助手\n功能对话、问答、任务执行,metadata{source:product}),Document(page_content团队成员张三CEO、李四CTO、王五产品经理,metadata{source:team}),]# 2. 创建向量存储embeddingsOpenAIEmbeddings()vectorstoreChroma.from_documents(documents,embeddings)retrievervectorstore.as_retriever()# 3. 创建 promptpromptChatPromptTemplate.from_template(你是ABC科技的智能助手根据公司知识和对话历史回答问题。\n公司知识{context}\n对话历史{history}\n问题{question})# 4. 创建模型modelChatOpenAI(modelgpt-4o-mini)# 5. 创建消息历史chat_historyInMemoryChatMessageHistory()# 6. 构建链chainRunnablePassthrough.assign(contextlambdax:\n.join([doc.page_contentfordocinretriever.get_relevant_documents(x[question])]),historylambdax:\n.join([f{msg.type}:{msg.content}formsginchat_history.messages]))|prompt|model# 7. 对话循环whileTrue:questioninput(用户: )ifquestion.lower()exit:breakresultchain.invoke({question:question})print(f助手:{result.content})# 更新消息历史chat_history.add_user_message(question)chat_history.add_ai_message(result.content)7.2 构建一个用户偏好记忆系统fromlangchain.storageimportLocalFileStoreimportjson# 1. 创建用户偏好存储preference_storeLocalFileStore(./user_preferences)# 2. 存储用户偏好defsave_preference(user_id,preference):existingpreference_store.mget([user_id])[0]ifexisting:datajson.loads(existing)data.update(preference)else:datapreference preference_store.mset([(user_id,json.dumps(data))])# 3. 获取用户偏好defget_preference(user_id):datapreference_store.mget([user_id])[0]returnjson.loads(data)ifdataelse{}# 4. 使用示例save_preference(user1,{favorite_topic:人工智能,language:中文})save_preference(user1,{notification:email})preferencesget_preference(user1)print(preferences)# 5. 在对话中使用用户偏好defcreate_personalized_response(user_id,question):preferencesget_preference(user_id)contextf用户偏好{json.dumps(preferences)}resultmodel.invoke(f根据用户偏好回答问题\n{context}\n问题{question})returnresult.content responsecreate_personalized_response(user1,你能推荐一些人工智能相关的内容吗)print(response)八、应用场景分析8.1 适合使用记忆系统的场景客服机器人记住用户历史问题个人助手存储用户偏好和习惯知识管理检索企业知识库教育应用跟踪学习进度医疗助手记录患者病史8.2 记忆系统的挑战存储成本长期记忆需要向量数据库检索精度相似性搜索可能不够准确隐私保护用户数据需要安全存储性能优化大规模记忆检索的速度九、总结LangChain 1.0 的记忆系统通过统一的抽象和丰富的功能为开发者提供了构建具备记忆能力的智能体应用的强大工具。通过本文的介绍开发者可以掌握短期记忆与会话管理、长期记忆与向量存储、存储接口与持久化等核心功能实现智能体的持续学习和知识积累。在后续的博客中我们将介绍如何利用这些记忆能力构建完整的智能体应用以及如何通过 LangGraph 实现更复杂的工作流。