怎么解决大模型中的多轮对话问题?

93
0
0
2024-05-29

怎么解决大模型中的多轮对话问题?

难点

  • 在多轮对话中,模型需要记住并正确理解之前对话的上下文。

  • 大型模型虽然能处理较长的上下文,但仍然存在记忆限制,无法记住非常早期的对话信息。

  • 在对话过程中,模型需要抽取关键信息并更新对话状态。

解决办法:

拼接历史query策略

  • 优点:通过拼接历史query,可以在一定程度上保持对话的连贯性,减少信息丢失。

  • 缺点:可能导致检索信息偏差,特别是在话题切换时,历史信息可能成为噪声。

设计多轮信息处理模块

这个模块的设计旨在解决上述策略中的问题,以下是对每个步骤的详细说明:

  1. 语义相似度判断

    • 使用语义理解模型(如BERT、RoBERTa)来判断当前query与历史query的语义相似度。

    • 可以通过计算嵌入向量的余弦相似度或使用分类模型来判断。

  2. 输出当前query

    • 当语义相去较远时,仅输出当前query,避免历史信息的干扰。

    • 使用少量样本(few-shot)学习来调整模型的输出格式。

  3. 优化提问

    • 当语义相近时,通过补充关键信息来优化提问,以提高检索的准确性。

    • 可以使用自然语言生成(NLG)技术来构造更自然的查询语句。

  4. 缓存query设计

    • 设计一个缓存机制,只存储优化后的query,减少历史信息的累积。

    • 限制缓存的大小和存储时间,确保信息的时效性和相关性。

  5. 隔离问答LLM和功能性LLM

    • 将负责用户问答的LLM和负责功能性任务的LLM分开,避免信息交叉干扰。

    • 功能性LLM可以用于优化query、审查提问范围等,而问答LLM专注于生成回答

添加其他模型

维护用户历史提问列表(history)

  • 通过维护一个列表来记录用户的历史提问,只保留最后10个问题,这样可以确保信息的时效性和相关性,同时避免内存和处理能力的浪费。

  1. 使用Qwen-Max模型进行总结

    • Qwen-Max模型(假设这是一个具有序列到序列生成能力的模型,类似于Transformer架构)用于对用户的历史提问进行总结。

    • 这个模型的作用是压缩和提炼用户提问的关键信息,为后续的业务处理提供上下文。

  2. 明确任务分工

    • 你的策略中,Qwen-Max模型只负责总结历史问题,不参与业务问题的回答。

    • 业务问题的回答由其他专门的大模型负责,这样的分工可以减少模型间的干扰,提高系统的稳定性和效率。