打开网易新闻 查看精彩图片

随着信息化时代的推进,企业内部积累了大量的数字文档,这些文档中蕴含着丰富的信息。为了更好地管理和利用这些文档,通常会采用标签化的方式进行归类,同时使用搜索引擎进行内容检索。然而,传统的文档搜索方式往往仅限于关键字或短语查询,难以实现更高级别的语义检索,无法满足用户对深度理解文档内容的需求。

为了解决这一问题,现在大型语言模型(Large Language Model,简称LLM)在自然语言处理领域取得了显著进展,具备了语义理解、文档摘要、信息提取和逻辑推理等多项能力。通过与用户进行对话问答的交互方式,LLM能够更准确地理解用户需求,提高搜索相关文档的效率和准确性。

本文将通过方案的详细拆解与实验展示,指导企业如何构建基于LLM的文档语义搜索系统,实现更加智能化和高效的搜索体验。因此,我们首先需要了解LLM的基本原理和结构,掌握LLM在文档处理方面的应用技术和方法,然后根据企业实际情况制定相应的搜索方案,并进行实验验证和优化。最终,我们将能够构建出适合企业自身的智能化搜索系统,提高文档搜索的准确性和效率,为用户带来全新的搜索体验。

总体来说,文档智能搜索大致可分为四个主要部分:文档分片与向量化、向量存储、向量搜索、大模型语义融合。划分以上四部分的原则要从LLM的特性说起。

首先,由于检索任务的特殊性与时效性,对于百亿乃至千亿级参数的大模型很少被直接应用于信息检索,而经常用于数据的辅助处理以获得更好的粗排、精排模型。

其次,LLM在预训练阶段也难以囊括众多垂直领域的知识,但其对自然语言的综合运用能力很强,特别适合根据相关背景信息对问题进行总结和归纳,然后再以人们容易接受的方式进行语义的表达。

还有,使用大语言模型进行量化推理时为了控制计算量,会限制单次输入的文本数量,因此需要对较长的原始文本内容进行分割,以满足最大的token数量限制,也称为文本分片。而当文档被分割处理之后,就需要针对问题进行有效的语义级别的关联查找,这个过程借助语言模型预训练阶段对文本信息的前期处理,即向量化。一段自然语言的文字信息经过向量化计算后会被映射进表征语义的高维空间,在空间内做相似度计算可以找到语义相近的内容。

所以,为了加速整个检索过程,先对被检索的文本进行分片与向量化存储,在检索时基于向量相似度筛选出相关内容的分片,再将相关内容与问题输入大模型进行推理。如下所示:

打开网易新闻 查看精彩图片

基于以上步骤可大致实现文档的语义级检索,但实际操作时还是会遇到一些性能优化问题。例如,当多文档内容存储在同一个向量数据库中时,问题的向量相似搜索会返回多个文档片段,尤其当企业内部文档出现较多关联的业务信息、通用性的实体概念、流程规范等,如何更准确的锁定文档范围变得尤为突出。

我们首先尝试逐级搜索策略来进行优化,可以利用大模型对文档做摘要预处理,概括出主要内容还可以附加提取文档的关键词列表,构造类似期刊文献的前置部分。在搜索前先将问题query与全部文档的摘要信息做一次相似计算,可保留top 1~n,并依据此对后续的文档分片搜索做策略性指导,以减少跨文档搜索的误差率。

还可以通过传统的机器学习方法提取文档的主旨信息如LSA、LDA等,接下来的处理过程与上面类似,将问题query与主题矩阵计算的文档相似性作为先验条件,进而影响后续文档片段的检索。

基于以上设计并利用OpenAI与百度文心提供的大模型推理接口,我们实现了智能文档助手,如下所示。

DDI采集业务问答样例:

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

企业规章制度问答样例:

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

以上实现方案还存在依赖平台级大模型接口的问题,需要连接互联网以获取大模型的数据处理能力,对信息安全要求较高的企业来说面临合规的风险。接下来我们将挑选优秀的开源模型如Alpaca、Vicuna、GLM等构建离线版文档助手,并提供模型测评、微调与部署的技术预研,敬请关注。