AI Agent开发学习系列 - langchain之memory(2):长时记忆的实现方式

长时记忆在对话系统中的实现,主要依赖于向量数据库(如 FAISS、Chroma、Milvus 等)来存储和检索历史对话内容。其核心思想是:将历史对话或知识转化为向量(embedding),存入数据库,后续每次对话时根据当前问题检索最相关的历史内容,作为上下文补充给大模型,实现“记得住很久以前的内容”。

实现流程简述:

  1. 对话内容向量化
    使用 embedding 模型(如腾讯混元 embedding、OpenAI Embeddings 等)将每轮对话或知识转为向量。
  2. 存入向量数据库
    将这些向量和原始文本一起存入向量数据库(如 FAISS、Chroma)。
  3. 检索相关历史
    用户新提问时,将问题同样向量化,然后在数据库中检索最相似的历史内容。
  4. 拼接上下文
    检索到的相关历史内容与当前问题拼接,作为上下文输入给大模型,提升连贯性和“记忆力”。

典型代码片段1

from langchain.memory import ConversationBufferMemory
from langchain.vectorstores import FAISS
from langchain.embeddings.base import Embeddings
import os
import requests
import dotenv
dotenv.load_dotenv()

# 设置API配置
api_base = "https://api.hunyuan.cloud.tencent.com/v1"  # 腾讯混元OpenAI兼容endpoint
api_key = os.environ.get("HUNYUAN_API_KEY")
model = "hunyuan-embedding"

# 定义腾讯混元Embeddings类
class HunyuanEmbeddings(Embeddings):
    def __init__(self, api_key, api_base, model="hunyuan-embedding"):
        self.api_key = api_key
        self.api_base = api_base
        self.model = model

    # 批量文本向量化方法
    def embed_documents(self, texts):
        url = f"{
     
     self.api_base}/embeddings"
        headers = {
   
   
            "Authorization": f"Bearer {
     
     self.api_key}",
            "Content-Type": "application/json"
        
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值