1、2023 年 10 月大型语言模型在通信施工管理中的应用与探索洪峰(广东邮电职业技术学院,广东 广州 510630)【摘要】大型语言模型是自然语言处理的核心研究内容之一袁已广泛应用于包括政务在内的诸多领域遥 设计了一种基于大型语言模型搭建的双库问答系统袁既支持文本知识查询袁又支持数据库查询袁能够解决通信施工中项目经理在技术尧管理尧经营上的痛点问题袁提升项目管理的效率以及项目效益遥【关键词】通信行业曰大型语言模型曰AI 助手【中图分类号】TN913【文献标识码】A【文章编号】1006-4222(2023)10-0148-031 背景和目标近年来,随着通信施工市场竞争日益激烈,项目经理在现场管理、
2、合规风控、经营管控等方面的压力越来越大,面临诸多痛点。在管理方面,企业业务相关的制度、流程繁杂,管控细节变化频繁,熟悉、查阅相关信息的难度大;技术方面,不同运营商的技术要求不同,各类专业技术资料繁杂,不方便在施工现场快速查阅;经营方面,由于推动项目经理制、划小经营等需求,项目经理需要了解项目或者划小机构的数据分析,便于管控成本、推动预算。但是传统知识检索存在搜索准确率不高的问题,传统报表系统也存在更新慢、需求响应慢的问题1。ChatGPT 有着强大的掌握语言意义以及举一反三的学习能力,具有知识库属性的同时也具有一定自主生成、操作能力2。故本文将采用 ChatGPT 来构建知识库问答系统,使系统
3、知识储备更丰富、回复更精准。该系统的另一个优势是便于与移动终端集成,移动终端信息获取更便捷、人机交互体验更优,同时符合通信工程项目经理经常外出的需求3。2 设计与实现根据上述的背景和需求目标,本文提出了基于大模型的知识问答系统架构,如图 1 所示,包括以下3 部分基础功能:淤用户意图识别模块,根据用户提出的问题文本识别用户意图,推动系统走向不同功能分支。例如,识别出用户意图是了解经营数据,则进行数据库检索。准确理解用户意图对知识问答有着重要意义4。于知识库检索模块,通过大模型实现对通信领域知识的知识库检索。盂数据库检索模块,通过大模型生成数据库脚本,自动检索存储有项目经营信息的数据库,根据项目
4、经理意图自动分析数据。下面对部分功能的设计思路做进一步阐述。2.1 知识库检索/问答的功能设计2.1.1 功能整体设计基于大模型搭建检索/问答系统通常有以下两类解决方案。(1)模型微调方案。由于大模型的参数规模非常庞大(一般十亿千亿级),而且需要大量的数据参与训练,成本高昂。微调方式就是专门针对这种情况来设计的。其一般通过冻结预训练模型的部分卷积层,主要训练靠近输出的部分卷积层和全连接层,从而使用更少的机器资源和更小数据集来训练模型。但缺点是仍然需要一定的训练时间,故领域知识更新不能频繁。(2)提示工程方案。提示工程即通过在与大模型的对话中增加设计好的提示词(一种输入形式或模板),使模型能够按
5、照具体要求进行处理和输出,提升其处理复杂任务场景的能力。提示工程相对模型微调是一种更小巧轻量、普适高效的方法。其不需要对模型进行训练,而且对需求的响应更加敏捷。本方案缺点是大模型一次可以处理的文本量有限,例如,GPT谣3.5谣Turbo 模型一次可处理字节小于 4096 个字节,约等于 5 页内容。如此少的数据量相对要处理的领域知识来说远远不够。综上所述,基于模型微调和基于提示工程的方案均存在一些缺陷,结合知识内容更新相对频繁等客观情况,本文在提示工程方案基础上提出第 3 种方案,尝试克服相应的困难。知识库检索模块架构如图 2 所示,方案的基础仍然是以提示工程为核心,主要变化是在提示工程方案的
6、基础上增加了一个向量数据库作为领域知识库。向量数据库预先存储了大量向量化的领域知识图 1 系统架构用户问题文本ChatGPT词嵌入OpenAI 接口知识库检索数据库检索问题回复ChatGPT意图识别专题综述1482023 年 10 月文本,可以根据问题检索出与问题最相近的文本信息。但其检索出的多条文本信息(即原始知识点)仍然比较零散且杂乱,无法形成架构化的问题回复文本。故下一步就是将问题与前 N 个知识点一起送入大模型,由大模型进行聚合处理,形成回复文本发送给用户。该方案在提高回复准确率的同时也妥善解除了大模型输入上限问题5。2.1.2 领域知识入库向量数据库内部存储的方式为字典形式,即键值对
7、。键(key)是作为搜索匹配词通过词嵌入(Embedding)技术处理后的向量数据,值(value)是知识点的原始记录。在自然语言处理中使用的词嵌入技术是指将高维度的数据(如文字、图片、音频)映射到低维度空间的方法,其主要的价值是将原始记录映射成向量,便于计算与查询记录的相似程度,从而找出与查询记录相近的原始记录,实现问题与答案的匹配。知识入库的流程如下:数据读取寅分词寅分片寅词嵌入寅向量存储。(1)数据读取,数据源主要来源于本地文件(技术文档、施工规范、维护要求、经验文档、制度流程等)、网络(通信相关法律法规、行业政策等)。(2)分词,使用分词器将文本分成一个个词元,保证各个词元拥有相对完整
8、和独立的语义,以供后续任务使用。(3)分片,将原始知识库拆分为若干个独立、较短的知识点。每个知识点会作为问答的最小记录与问题进行匹配。分片大小需要考虑分词之后生成的分词序列数量。分片不能破坏知识点的完整性,生成的分片对应的分词序列数量应该在预设范围内,不要过小或过大。(4)词嵌入,功能在上文已有描述。主要使用词嵌入工具对每个分片后的每个知识点进行处理,获得向量化的结果。本文采用的是 OpenAI 应用程序编程接口(application programming interface,API)提供的 openai.Embedding.create 接口。(5)向量存储,主要是将词嵌入生成的向量连同
9、原始分片(知识点),以键值对的形式存储,便于后续快速匹配索引。本文采用了 FAISS 向量数据库。其是Facebook 公司人工智能(artificial intelligence,AI)团队开源的针对聚类和相似性搜索的库,是目前较成熟的近似近邻搜索库。2.1.3 问题搜索问题搜索首先通过 OpenAI API 提供的 openai.Embedding.create 接口对用户问题进行词嵌入,向FAISS 向量数据库发起查询,获得与之最匹配(距离最近、相似度最高)的若干答案。除此之外,利用思维链(chain谣of谣thought,COT)提示的能力,提供范本让大型语言模型按样例与用户进行交互,
10、将问题逐步完善,直到获取足够的信息为止。提示工程模板如下。“基于以下已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 根据已知信息无法回答该问题 或 没有提供足够的相关信息,不允许在答案中添加编造成分,答案请使用中文。已知内容:context问题:question”。其中 context 变量的内容是上述向量数据库搜索的若干结果,question 变量的内容是用户的提问信息。其他部分内容是对大型语言模型的约束,如“不允许在答案中添加编造成分”,这条要求目的是避免大模型生成虚构的内容。2.1.4 结果整理在代码中设计回调函数,对模型返回的信息进行标准化处理。当然也可以引入新一轮
11、的对话,利用大型语言模型总结、概括、格式整理等能力对结果按需进行整理和核验。2.2 数据库检索/问答的功能设计数据库检索/问答实现的核心技术有以下两个:淤Text谣to谣SQL 技术,即将用户的普通语言描述转换为结构化查询语言(structured query language,SQL)。于AI Agent 技术,简单来说是让大型语言模型不仅能够生成对话,还能够实现操作。实现自动分析需要两个技术相互配合,首先通过 Text谣to谣SQL 根据用户的问题生成数据分析的 SQL 脚本,其次由 AI Agent自动选择数据库进行执行,最后将执行的结果通过文字、图表的方式返回给用户。2.2.1 Tex
12、t谣to谣SQL 实现的两种方式(1)直接通过提示工程来构建。以下面简单提示模板为例。“现在你是一个数据分析师,请根据用户提供的表的信息,以及用户的需求,写出效率最高的SQL,表信息如下:表名:students;字段:id,name,age,图 2 知识库检索模块架构用户用户问题问题处理问题向量搜索大型语言模型词嵌入、格式调整等最终结果聚合处理原始知识点TopN向量数据库返回专题综述1492023 年 10 月location;用户需求:统计一下年龄大于 23,姓名包含andy 且地址在 beijing 的学生个数。并且要求输出的SQL 以#开头,以#结尾,样例如下:#SELECT*FROMt
13、able#SELECTCOUNT(*)FROMtable#注意不需要分析过程,直接给出 SQL 语句”。上述模板中定义了大模型的角色,并提供了数据库中数据表的基本信息(表名、字段名),给出提示样例,并含有输出指引。在该模板引导下,大型语言模型可以相对准确和稳定地生成符合用户需求的SQL 脚本,但仍然存在一定的问题。例如,模板中需要提供表信息,当数据库中数据表或数据字段较多,超过模型每次提问文本限制要求时该模板就无法应用。(2)在上述提示模板的基础上,结合上述知识库问答方案设计思路来解决提问文本字数过长受限问题。将数据库的元数据(表名、字段名等)当成上述领域知识提前入库。在进行问题检索时,先通过
14、向量数据库检索出与问题最相近的库、表信息并注入模板,再发送到大模型进行检索、聚合生成数据库查询脚本,从而达到减少一次提问文本字数的目的。数据库元数据向量化过程如图 3 所示。2.2.2 数据库知识提取通信类业务系统的数据库一般为结构化数据库,其中元数据包括数据库名、数据表名、数据表的主键、字段名、字段类型、主键类型等。元数据一般均可通过数据库提供的元数据 SQL 查询出来。本文使用 JSON 格式组织数据库知识,按照数据库-数据表-表字段 3 层的形式对上述元数据进行组织。在具体的类设计时,主要还是通过继承的方式来实现不同类型数据库的统一,并设计一个工厂类,根据具体需求来实现不同数据库类的实例
15、化,在类的内部通过多层循环来实现对数据库-数据表-表字段 3 层元数据的抽取,并组合成 JSON 格式。2.2.3 元数据的入库元数据的入库过程与上述知识库检索模块的入库过程类似,主要差异是需要对数据进行分库。原因是对于涉及多库多表的分析需求,需要进行多轮搜索以提高其准确性,否则大量的数据库元数据混合在同一个向量数据库中,搜索质量较差。本文主要按照(库+表)和(表+字段)进行分库操作。2.2.4 问题搜索在搜索时则分为两轮,首先第一轮在表库当中选择适当的表,其次第二轮根据第一轮结果依次对不同的表进行字段信息搜索。最后将两轮结果合并填入提示模板中。提示模板样例如下。“你是一个 SQL 专家,给你
16、一个用户的问题,你会生成一条对应的dialect语法的 SQL 语句。如果用户没有在问题中指定 SQL 返回多少条数据,那么你生成的 SQL 最多返回top_k条数据。你应该尽可能少地使用表。已知表结构信息如下:table_info注意:1.只能使用表结构信息中提供的表来生成 SQL,如果无法根据提供的表结构中生成 SQL,请说:提供的表结构信息不足以生成 SQL 查询。禁止随意捏造信息。2.不要查询不存在的列,注意哪一列位于哪张表中。3.使用 json 格式回答,确保你的回答是必须是正确的 json 格式,并且能被 python 语言的忆json.loads忆库解析,格式如下:respons
17、e”。上述模板中 dialect 变量为数据库类型,top_k 变量指定返回数据条数,table_info 变量为上述向量数据库中搜索出来的数据库元数据信息,response 变量为对输出结果的引导要求,可以在该变量中设置模型对结果的提示、SQL、需要调用的 Agent。2.2.5 结果整理正常情况下的处理逻辑如下:大模型如果返回正常的结果,问答系统需要将返回的 SQL 发送到指定的 Agent 对相应数据库执行查询,执行完成返回结果给用户,也可根据需要生成相应的图表。其他情况可以返回异常处理。3 结语本文创新性地通过搭建知识库+数据库双库问答系统,将大型语言模型应用于通信施工管理中,解决现场
18、管理的痛点问题。大型语言模型在各行业应用方兴未艾,未来值得不断探索和创新。参考文献1 王洪帅.基于文档编写与检查的智能问答系统设计与实现D.西安:西安电子科技大学,2022.2 李国荣.浅析电子信息工程的现代化技术J.中国宽带,2020(6):53.3 冯升.聊天机器人系统的对话理解研究与开发D.北京:北京邮电大学,2015.4 周俊佐.基于知识库的对话问答系统研究D.苏州:苏州大学,2021.5 宋世凯.基于量子信息的可解释匹配模型的技术研究D.天津:天津大学,2021.作者简介院洪峰(1972),男,汉族,广东揭阳人,本科,高级工程师,主要从事通信和信息的施工与管理工作。图 3 数据库元数据向量化过程数据库元数据提取元数据向量化向量数据库(分库分表)专题综述150