大语言模型实战

基于知识库的大型语言模型问答应用

 

大型语言模型以惊人的能力赢得了所有人的青睐,但大型语言模型在应用落地上依然存在一些问题,例如大型语言模型对长尾知识不敏感、存在幻觉、知识更新成本较高等。检索增强生成(Retrieval-Augmented Generation,RAG)技术是在大型语言模型生成答案之前,通过检索方法从数据库中检索与用户查询相关的信息,利用这些相关信息指引大型语言模型进行答案生成,不仅最大限度地解决了大型语言模型存在幻觉的问题,还提高了模型回复的可靠性,提供了生成答案的溯源信息,并且通过更新外部知识库实现了对于知识的更新,让训练模型成为非必需项,降低了模型训练的成本。因此,RAG成为大型语言模型应用落地的重要方向。

本章主要介绍常用的RAG方法、向量数据库等基础知识,并通过实战介绍基于知识库的大型语言模型问答应用的核心要点,以便读者深入理解如何构建一个基于知识库的大型语言模型问答应用,并掌握相关的技术,为将来的应用开发奠定基础。

 

9.1 基于知识库问答


目前,以大型语言模型为基础的知识库系统在问答领域成为人工智能应用的主要场景,其整体流程如图9-1所示,主要涉及查询处理模块、内容检索模块、内容组装模块和大型语言模型生成4个部分。当系统接收到用户查询进行初步处理后,利用向量检索模型从构建的向量知识库中检索到与其最相关的文档片段内容,再通过提示工程对用户查询和文档片段进行组装,最后利用大型语言模型生成一个答案。

相对于直接使用大型语言模型进行问答,利用知识库内容进行问答具有以下优点:

1)解决大型语言模型对长尾知识不敏感的问题。大型语言模型都是通过海量数据(知识)训练得来,然而不同知识的重要程度和重复次数具有巨大差异。对于一些长尾知识,虽然大型语言模型在训练过程中学习过,但对其记忆较差,在应用阶段难以准确回忆并运用。利用知识库检索的内容,能够为大型语言模型提供上下文,帮助大型语言模型记起相关内容,从而更准确地回答问题。

 

2)减轻大型语言模型的幻觉,使生成结果更具解释性。大型语言模型的幻觉是它在实际应用中的主要挑战。将知识库检索到的相关文档片段作为参考依据提供给大型语言模型,有助于限定生成内容的范围,使得模型更专注,生成的答案更有解释性,并且可以在生成过程中提供引用。

3)快速进行知识更新。在信息急剧增长的时代,知识的更新速度非常快。由于大型语言模型的参数庞大,通过模型训练微调的方式无法迅速实现知识的频繁更新。而知识库问答可以通过更新知识库中的内容快速实现大型语言模型的知识更新。只需检索到新的知识内容作为参考依据返回给大型语言模型,便能够对新知识进行有效的问答。

4)降低大型语言模型的训练和部署成本。由于大型语言模型的参数量庞大,其训练和部署需要大量服务器资源。相比之下,基于知识库问答可以在不影响问答效果的情况下,将大型语言模型的参数量减少,显著降低训练和推理的成本。此外,由于知识无须频繁更新,还减少了大型语言模型的训练次数,从而进一步降低了成本。

5)防止隐私数据外泄。如果大型语言模型的训练涉及一些隐私数据,那么在模型推理过程中可能会泄露用户的隐私内容。通过知识库问答,可以限制用户权限,通过知识库返回合理的文档内容,从而有效地防止隐私数据外泄。

但基于知识库问答也存在一些不足,如果在检索阶段没有召回相关片段,那么大型语言模型很难进行准确回答;如果召回片段极度相似,可能会给大型语言模型带来困扰,生成内容出现重复、冗余等现象;如果大型语言模型本身能力存在一定的问题,也会出现生成内容不理想的情况。因此往往会从以下几个方面来提升知识库的问答效果:

·修改用户查询内容,包括查询改写、查询扩展和查询路由等,进一步提高用户查询质量。

·数据索引创建阶段进行优化,包括增强数据粒度,优化索引结构,提高文本的标准化、一致性、事实准确性和上下文丰富性。

·多路召回混合检索,不仅从语义层面进行文本召回,也从词语层面进行文本召回。

·训练向量表征模型,通常使用领域或场景数据进行模型训练,进一步提高模型在指定领域或任务上的表征能力。

·加入精排模型,通常对召回的文档片段进行精排序,让用户查询与每个文档片段进行深度语义融合,找到最相关的内容,去除冗余文档片段信息。

·提示词压缩,对拼装好的提示词内容进行压缩,主要借助语言模型等去除冗余信息。

·微调大型语言模型,利用任务数据(输入为“用户查询+检索片段”,输出为“答案”)来进行大型语言模型的微调,使其在知识库问答任务上表现更好。

·在问答阶段增加自我反省机制,以筛选更优质、知识密度更大的内容,例如Self-RAG、Self-Critique等。

基于知识库问答可以将大型语言模型与领域知识有机结合,为用户提供更有价值的信息,是AIGC落地的必然趋势。