长时记忆在对话系统中的实现,主要依赖于向量数据库(如 FAISS、Chroma、Milvus 等)来存储和检索历史对话内容。其核心思想是:将历史对话或知识转化为向量(embedding),存入数据库,后续每次对话时根据当前问题检索最相关的历史内容,作为上下文补充给大模型,实现“记得住很久以前的内容”。
实现流程简述:
- 对话内容向量化
使用 embedding 模型(如腾讯混元 embedding、OpenAI Embeddings 等)将每轮对话或知识转为向量。 - 存入向量数据库
将这些向量和原始文本一起存入向量数据库(如 FAISS、Chroma)。 - 检索相关历史
用户新提问时,将问题同样向量化,然后在数据库中检索最相似的历史内容。 - 拼接上下文
检索到的相关历史内容与当前问题拼接,作为上下文输入给大模型,提升连贯性和“记忆力”。
典型代码片段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"

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



