缘起

在这个ai方兴未艾的时代,每天都会收到大量与智能方案有关的信息。尤其是在知识付费的风潮下,各种培训让人眼花缭乱,彷佛ai尤其是ai对话是人人触手可及,任何场景都可以开箱即用的。但是在没有购买商业化的ai平台自己手搓的应用,大部分还是直接与大模型的直接对话,鲜有其他处理。
最近在跟进一个基于内部业务培训的case,对方对准确度与交互性有一定的要求,做了两个版本,每个版本大概花费一周半,也算验收成功,在此做一点总结。

背景

先说一下初期提供的需求:

  1. 有多个文档,每个文档都有自己的主题,所有文档归结在一个知识库中。
  2. 严格限制模型话痨或者自行发挥。
  3. 针对单个话题,如果三轮对话下来没有引导到目标话题,就要升级到人工处理。

再说一下环境条件:

  1. 有一套第三方rag平台,没有专业数据库,数据库通过pgvector实现向量化
  2. llm为qwen3-32b

实现

在话题引导成功后,回复的结构为:

  • 提示当前话题所属主题
  • 模型基于检索内容生成的回复,这里是ai生成
  • 以备注形式标明检索到的内容的来源
  • 对长回复进行总结,这里是ai生成
  • 相似话题推荐

如果没有相关度达到阈值的话题,则:

  1. 检索低相关的内容,并推荐相关话题
  2. 或——提取关键字信息,检索相关术语通过llm进行问题智能重构再行低相关内容检索
  3. 或——实在没有相关内容的情况,llm用开放式话术引导用户补充信息
    大致流程如下:

[达到最大交互轮次]

[未达最大交互轮次]

[高置信度匹配]

[中等置信度匹配]

[低置信度匹配]

[重置交互计数器]

[递增交互计数器]

[递增交互计数器]

模糊匹配流程

用户选择推荐项
下一轮转入精准匹配流程

用户自行输入

呈现候选问题列表

无匹配流程

[存在相关建议]

[无相关建议]

用户接受建议
下一轮转入精准匹配流程

用户拒绝建议

用户补充信息

智能问题重构

提供优化问题选项

发起开放式引导

接收用户查询

升级人工

知识匹配引擎

精准匹配流程

确定核心主题

生成答案

提供相关话题建议

对话轮次管理

隐形处理:

  • 针对未引导成功对话进行计数,并在引导成功后及时重置,以实现升级到人工的判断处理的同时不会中断正常交互
  • 在相关话题推荐中,qwen3-32b生成的话题虽然基于检索内容,但容易生成低相关推荐,所以需要对文档分段的标题与话题进行储备
  • 用户提问可能关联多个主题,需要在初期确认top1关联内容的主题,并静默锁定当前主题后重新搜索相关内容
  • 需要创建术语相关知识库,以进一步减少幻觉
  • 要有意图识别以在初期完成对闲聊、情绪发泄的及时处理
  • 由于内部ai目前没有trust layer,要有guardrail以自行实现一些恶意prompt的预防,类似sql防注入

一点想法

  • 首先,在agi没有实现的当下,模型生成的任何内容都是仅供参考。加上生成式ai本来就是依靠概率黑盒生成,如果想要模型生成的内容靠谱,程序干预是一定要的。也就是说,主流的直接与模型对话的模式没有太大的生产价值。
  • 如果模型能力有限,需要做的是减少模型生成内容占总内容的占比。比如这里相似内容推荐话题与检索内容的来源说明都改为了程序生成。
  • 顺嘴一提,mcp的调用基本上是类似文本理解+参数抽取的模式,如果模型能力有限,抽取的参数质量会影响整体体验,反而不如采用传统表单收集稳定,不过mcp比较酷 😃。
  • 如果需要输出内容更严谨,需要增加ai节点,或者说广义上的agent,对生成内容进行评分审核。

如果想要了解一个技术,最好的方式就是上手去做。这个项目中还有一些不错的prompt实践,后续准备也记录一下。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐