Skip to content

❏ 整理 AI 记忆板块 (二)

“大模型的对话分层”,核心是把对话按“话题”或“意图”分组管理,实现类似“多轮对话上下文管理+话题切换”的效果

﹆ 核型思路

1. 对话主题识别(话题聚类)

INFO

  • 每条新输入都跟已有的对话主题进行相似度对比,判断它属于哪个主题

2. 基于主题的上下文存储

INFO

  • 每个主题维护独立的历史上下文记忆

3. 新主题创建

作用:扩展AI的存储容量,动态读写信息

  • 如果当前输入与任何已有主题的相似度低于阈值,启动一个新的主题记忆。

4. 调用大模型时传入对应主题的上下文

INFO

  • 使回答聚焦当前话题。

﹆ 实现步骤

语义向量化

使用 embedding 模型(OpenAI、SentenceTransformers等)将用户输入和历史主题描述转换成向量

主题匹配

  • 计算当前输入向量与各主题向量的相似度(余弦相似度)。
  • 如果最高相似度 > 设定阈值(如0.7),判定属于该主题。
  • 否则新建一个主题。

维护主题上下文

  • 主题对应一段对话记忆,比如用 LangChain ConversationBufferMemory 或自定义数据库表。
  • 新输入追加到对应主题记忆中。

调用 LLM

  • 调用大模型时只传对应主题的对话上下文,避免跨主题干扰。

﹆ 建议

工程建议

  • 话题语义表征
    • 用embedding计算相似度比关键词匹配更鲁棒。
  • 阈值调优
    • 相似度阈值可根据需求调节,避免过细分或过粗合并。
  • 持久化存储
    • 将每个话题历史存数据库,避免重启丢失。
  • 动态更新主题向量
    • 每当主题上下文更新时,重新计算主题embedding,反映最新语义。
  • 可视化管理
    • 展示话题列表,支持用户切换话题。

跨越话题建议

  • 多主题并行处理(推荐)
    • 识别多个相关主题,把输入分发给对应话题的上下文和模型进行处理,分别生成回答。
    • 最后将多个回答合并、过滤或排序后返回
  • 主次排序,选主话题处理
    • 根据相似度得分排序话题,选分数最高(或权重最高)的话题作为“主话题”
    • 只用主话题上下文喂给模型,忽略其他相关话题
  • 提问拆分
    • 先用模型或规则对用户提问做拆分,变成几个子问题,各自对应一个话题
    • 分别按子问题调用对应主题上下文模型,最后合并回答
  • 合并主题上下文,统一处理
    • 将所有相关话题的上下文合并(可以按时间排序),再一起传给大模型
    • 让模型理解多话题上下文,综合回答

INFO

先用向量相似度计算多个话题的相关度,取所有高于阈值的话题(比如 >0.6)。 若命中数量较少且上下文量不大,可以选择“合并主题上下文”一起传递。 若命中数量较多,则拆分提问或按主次排序。 可用一个“多意图融合层”让模型整合各话题回答,或者直接返回多个答案供前端多轮展示。