大模型在问答领域的探索和实践

随着大模型应用持续火热,应用门槛也越来越低,去年底开始我们利用少部分精力做了一些 AI 探索和实践,并完成了业务所在垂直领域答疑机器人产品的上线。这里主要从普通使用者的视角,把一边学习一边实践的过程记录下来,和大家一起学习交流。

本文定位无门槛。本文受众主要是入门玩家,但对大模型感兴趣想做一些小工具,或者在平常的业务工作中希望使用大模型来提效的读者。

1. 背景

当前大模型的应用还是处于比较初期的阶段,以物流领域常见场景为例,可以看到一些行业常见要求和当前大模型能力有较多冲突,在这些业务生产环境应用之前,我们还是希望先在容错性较高的场景进行一些实践。因此我们尝试基于大模型来优化答疑机器人,为后续更多的深度应用积累实践经验。(下面的示例图片由大模型生成,仅供参考)

image.png

传统答疑机器人的痛点

在大模型崛起之前,传统答疑机器人一般有两种模式:

1. 基于多级目录分类,让用户慢慢翻到想了解的知识。

2. 基于传统关键词检索方式,根据用户提问,在知识库中找到和用户提问相关的知识。

核心痛点是,不能快速准确找到用户想寻找的答案

我们的目标

由于我们答疑机器人受众不是C端普通用户,而是内部作业人员,因此机器人给出的回答在语气或者回答方式上不需要过多润色,但我们希望它具备以下一些特点:

1. 可以准确理解提问人员自然语言提问的语义给出标准答案;

2. 希望可以比较快速给出答案(比如5s之内);

3. 不希望答非所问,提供不属于我们业务范围内的回答,如果提问的问题确实没有答案,希望拒绝回答并引导到人工。

2. 迭代过程

我们结合业内经验和自身诉求,大致进行了如下五个迭代,下面详细展开。

阶段一:向量搜索

嵌入(Embedding)是一种向量化方法,把文本,图像,视频等数据转换为向量,同时特别强调保留数据之间的语义关系。比如“苹果”和“橘子”要比“苹果”和“太阳”的向量值更为接近(语义相似)

Embedding 模型服务:提供具体的Embedding能力的在线服务,可以直接调用 OpenAI,阿里云等远程服务,也可以本地部署。低成本试用可以尝试阿里云灵积。

向量数据库是用于存储和检索高维向量数据的数据库系统,特别擅长相似性搜索。低成本试用可以使用阿里云的 Hologres 数据库。

向量搜索可以类比我们传统的关系型数据库检索,只不过向量搜索是按照语义来进行相似度匹配搜索。

可以看到一端文本转为向量存在向量数据库中的字段展示,根据不同的Embedding模型维度也有不同,通常达到上千维。

  • 向量搜索流程

下图是一个简化版的向量搜索流程图,分为数据准备和在线推理两个部分:

1. 数据准备部分,需要把历史沉底的知识库数据清洗为多个QA问答对的格式,把问题,答案,问题对应的向量,存储在向量数据库。

2. 在线推理部分,先把用户提出的问题通过向量服务转为向量,在向量数据库中找到与该问题最为相似的一条数据,然后通过相似度阈值来判断用户提问的问题和数据存储的标准问题是否足够相似,来决定是否把对应的答案返回给用户。

image.png
  • 效果分析

假设有这样一个标准问答対:
Q:遇到不可抗力因素无法配送,如何操作?
A:1. 系统进行提报,详细步骤XXX


image.png

尝试下来,纯靠向量搜索的优势在于:对于原始问题或者细微修改的问题,可以比较快速、准确找到答案。

不足之处是:

1. 问题较长且多个问题语义相近时,准确率下降

2. 向量距离的阈值不好把控,对于无关问题的拒绝回答机制不好处理。

▐ 阶段二:RAG

RAG是知识问答领域业内落地最多的实践,同时 RAG 也是应用很广且很容易上手的一种大模型应用方式。

RAG(Retrieval-Augmented Generation 检索增强生成):因为大模型本身没有垂域的知识,RAG其实就是把“查资料”和“写答案”这两个步骤结合在一起。先用检索系统找到一些跟问题相关的资料,然后再用大模型(类似于GPT)来编写一个详细的答案,来提高AI回答垂直领域问题的准确性。

RAG 就像让一个大学理科生(知识储备丰富的大模型)拿着初中生的历史课本做开卷考试(相似度检索),虽然他本来不会,但靠查资料准确率还可以(效果不错)。就算书上没有,他也可以凭借自己的本事写满试卷(存在幻觉)。

  • RAG流程

下图是简化版本的通过RAG实现知识问答的流程图,可以看到,整体和第一阶段的向量搜索是比较类似的:

1. 在数据准备阶段,这里的原始数据可能是大量的文档资料,我们需要尽量清洗为统一格式的文档,每个文档都按照一定的规则进行分段。这里的分段规则和大小需要多次尝试,来保证最终的检索速度和总结效果。然后把分段后的知识向量化,存入向量数据库。

2. 在线推理阶段,首先要做的事情是把用户提问的问题从数据库中检索出N条相似的分段,作为下一步大模型总结的参考资料,然后大模型拿着这些资料按照要求,总结出一个答案给到提问者。

image.png
  • RAG上手

目前业内有很多现成的产品可以快速体验RAG,整体可配置的交互和原理大同小异,推荐阿里云百炼的应用中心来进行相关操作。

平台对应的文档中心有详细的实践教程,在准备好基础文档的前提下,基本五分钟就可以搭出来一个智能体应用。以下用一个简单的示例演示下RAG流程和需要关注的点(以下相关截图来源阿里云百炼平台):


image.png

核心步骤:

1. 创建一个RAG智能体应用,主要关注模型选择,prompt(希望大模型怎么帮你总结),知识库,召回策略等。


image.png

image.png

2. 上传知识库,重点关注向量模型的选择,分段规则。

image.png

3. 在检索配置这里,设置召回类型和规则。

image.png

4. 测试问答效果

image.png
  • 效果分析

优势

1.【正确率高】正确率基本可以达到90%以上。

2.【话术控制】回复话术可以根据prompt较为灵活的控制。包括期望的语气,回复格式等。

3.【兜底返回】可以控制知识库没有的内容拒绝回答,只是返回固定文案。

不足

1. 耗时较长,经常一次完整回复需要10s以上

2. 按调用量产生调用费用,QPS较高时,费用也会较高

3. 因为允许大模型发挥,因此会存在幻觉的情况,也就是会有偶发的答非所问的case。

3. 结语

作为从事工程应用领域的开发,我们不能只根据“目前AI能做什么”来构建自己的产品,也要看到未来AI的发展方向,比如之前大家一致诟病的大模型推理能力较弱,于是我们看到很多很重的提示词工程和思维链模式来解决推理问题。但可能在推理方面的表现,很多很重的解决方案并不如最新发布的 OpenAI O1大模型。

可以预见的是,随着技术的发展,大模型的能力一定会越来越强,相关的调用成本一定会越来越低,对模型定制的确定性也会越来越好。除了保持学习实践之外,哪些才是工程应用真正需要沉淀的能力和方向,是我们需要思考的命题。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容