摘要:这是我老铁参加的一个比赛,思路还不错,推荐大家看看。最近参加了中国计算机学会(CCF)举办的2024(第7届)国际AIOPS挑战赛,对比赛简单做了个记录。可以作为领域任务微调的一个简单的技术报告。主要涉及到提示词构建、领域微调数据合成等
文章转自公众号老刘说NLP
这是我老铁参加的一个比赛,思路还不错,推荐大家看看。最近参加了中国计算机学会(CCF)举办的2024(第7届)国际AIOPS挑战赛,对比赛简单做了个记录。可以作为领域任务微调的一个简单的技术报告。主要涉及到提示词构建、领域微调数据合成等
1 赛题难点挑战以及应对思路
1.1 挑战1: 复杂的数据处理与检索
多样化的数据类型:数据形式多样,包括文本、图表、图片等多模态数据,尤其是多模态数据的识别与处理存在较大难度。
专业化的数据处理:运维领域数据具有较强的专业性,数据的切分处理往往难以保证语义的完整性,对信息的准确提取和组织提出了更高要求。
图1 运维领域图片数据
图2 运维领域表格数据
应对思路:
基于LLM的多模态内容解析:通过利用大模型的多模态处理能力,补充图表/表问答知识,实现更全面的数据解析。
采用“三路召回+重排序”策略:通过召回多条候选文档并进行重排序,提升相关文档检索的准确性和针对性,从而优化用户提问的答案检索过程。
1.2 挑战2:训练通用模型在运维领域的适应性
1提示词设计难度大:通用提示词难以全面适配不同基座模型的理解能力和生成风格。这种差异使得在设计提示词时,不仅需要兼顾模型对通用任务的适配性,还需要考虑其在特定场景下的表现,尤其是运维领域的专业化需求。
通用模型领域理解能力不足:通用模型在处理运维领域任务时,往往无法准确识别专业术语和复杂需求。其在应对细粒度运维场景(如设备状态描述、复杂运维操作指令等)时,可能出现语义理解偏差或结果不准确的问题,从而影响任务的执行效果。
领域指令数据资源匮乏:运维领域的高质量指令数据严重不足。这不仅限制了领域模型的微调与优化,还导致模型在生成和执行运维相关任务时缺乏足够的上下文支持和数据指导,进一步放大了对提示词设计和指令精准性的依赖。
应对思路:
采用模型自补齐的方法:针对模型的特性设计定制化的提示词,提升提示词对运维领域专业问题的适配性,从而提高模型的生成效果和解答准确性。
自研“3M”数据合成框架:聚焦任务多样性、指令多样性以及问题多样性,构建高质量的RAG指令数据,提升模型对领域问题的生成能力。
“记忆+阅读”混合训练策略:通过对基座模型的全参数微调,强化模型对运维领域知识的记忆能力,同时提高其对正确信息的关注度。
2 方案介绍
2.1 总体架构
图3 QuickSenseOPS智能问答系统总体架构图
我们设计的QuickSenseOPS智能问答系统主要包括数据处理与检索、提示词自补齐、领域模型训练三部分,下面将对这些部分进行详细介绍。
2.2 数据处理与检索
图4 数据处理与检索总体架构图
2.2.1 数据处理部分
我们设计了一套高效的数据处理流程:
信息提取与文档补充:
通过多模态大模型,从多维数据(包括图像和图表等)中提取关键信息,并对原始文档进行内容补充,以提升数据的全面性和语义完整性。
库内去重:
为提高检索效率,我们引入 Simhash 算法,对每个库中的文本文件(txt 文档)进行去重,避免冗余信息的干扰。
文档切分:
利用 langchain 中的 text_splitter,对文档按照 chunk_size=512 和 overlap=32 的策略进行切分。此方法不仅能保证切片的语义连贯性,还为后续检索步骤提供了更细粒度的检索单元。
2.2.2 数据检索部分
数据检索部分被划分为两个核心部分:检索模块和重排序模块。两者相辅相成,共同优化检索效率和精准度。
2.2.2.1 数据检索模块
经过大量消融实验,综合考虑检索效率,我们最终采用了ES(Elastic Search)、BCE-embedding和Bge-m3 embedding三种方式构建向量库:
ES:来自dockerhub官方镜像(https://hub.docker.com/_/elasticsearch/tags),docker pullelasticsearch:8.7.1
BCE:来自 https://huggingface.co/maidalun1020/bce-embedding-base_v1
Bge-m3:来自 https://huggingface.co/BAAI/bge-m3
数据检索流程:
针对上述三个向量库(ES、BCE、Bge-m3),我们设计了“三路召回策略”
每个库分别检索 100 个文档切片(chunk)
对召回的切片进行去重处理,避免重复内容干扰检索结果。
2.2.2.2 重排序模块
经过多次消融实验,我们最终选择了 bge-reranker-v2-minicpm-layerwise 作为重排序模型,以提升排序结果的语义相关性。
bge-reranker-v2-minicpm-layerwise:https://huggingface.co/BAAI/bge-reranker-v2-minicpm-layerwise
重排序流程:
评分与排序:
利用重排序模型对去重后的切片进行相关性评分,并按照得分进行排序,取前 20 个切片。
切片拼接:
针对排序后的前 20 个切片,按以下逻辑进行拼接:
以每个切片为中心,向上和向下取相邻的切片。
拼接操作持续至文档达到完整长度,或窗口值达到 4096 tokens。
最终得到 20 个拼接后的文档(document),为后续的问答生成环节提供精准上下文。
2.3 提示词自补齐
图5 提示词模型自补齐流程图
为了优化提示词的设计,我们采用了模型补齐的方式,选择最适合的 Prompt 模板。具体来说,最终的推理模块提示词模板已在附件(推理模块提示词模板)中详细列出,设计细节如下:
自回归模型的特点:自回归模型通过前一个或前几个 token 来预测后续 token 的生成。这一特性使其在基座模型的原始训练数据分布中表现尤为突出。
设计思路:基于自回归模型的特点,我们将部分指令作为输入提供给基座模型,借助模型的自补齐能力生成符合其训练数据分布的 Prompt 模板。这种方法不仅充分利用了模型的特性,还确保了提示词与基座模型的语义风格高度匹配。
如图5所示,采用这一方法设计出的 Prompt 模板在推理模块中显著提升了模型的适配性和生成质量。通过精准的模板匹配,确保了推理过程中提示词的科学性与有效性,从而进一步优化了问答系统的整体性能。
2.4 领域模型训练
针对运维领域高质量指令数据严重不足的难点与挑战,我们设计了一套分步训练流程,以高效提升领域模型的表现:
数据合成框架:高质量与多样性并重
我们开发了一套数据合成框架,专注于构建高质量且多样化的 RAG 指令数据。这一框架旨在通过多维度、多层次的数据生成策略,填补运维领域高质量指令数据的空白,为模型训练提供坚实的基础。
训练策略:强化记忆与关注正确信息
我们设计了科学的训练策略。一方面,通过大量多样化数据训练模型对运维领域知识的记忆能力,使其更精准地理解和处理专业化任务;另一方面,优化模型在生成过程中对正确信息的关注度,提升其在复杂场景中的应答质量和可靠性。
通过这两步流程的有机结合,我们有效应对了指令数据稀缺的问题,同时显著增强了领域模型的专业化能力,为运维领域智能问答系统的性能提升奠定了基础。
2.4.1 数据合成框架
图6 数据合成框架技术框架图
实验表明,当模型的训练任务局限于 RAG 问答任务时,其在其他认知领域的能力可能会出现潜在的下降。这种现象表明,单一任务的训练可能限制了模型在多场景下的泛化能力和表现稳定性。
为应对这一问题,我们设计了一套 3M (Multi Task & Multi Instructions & Multi Question)数据合成框架,以全面提升模型的认知能力和领域适配性。
任务多样性:通过引入多种任务类型,增强模型对不同场景和问题的适应能力。
指令多样性:构建多样化的指令集,使模型能够应对运维领域内的多维度需求。
问题多样性:设计覆盖广泛的问题类型,进一步提高模型在复杂问答场景中的表现力。
其中多任务数据类型如下表所示:
表1 任务描述表
同时,为了确保多样化数据的质量与一致性,我们设计了三项关键指标对生成的数据进行清洗与过滤。这些指标分别从格式、语义相关性以及信息准确性等多个维度出发,确保数据的高质量特性。具体如下:
格式对齐过滤:通过严格校验数据格式是否符合预期标准,确保问答数据在结构和语法上与目标格式一致,避免因格式问题导致模型训练过程中的异常或性能下降。(格式匹配)
问答相关性过滤:针对问答内容的语义相关性进行校验,过滤掉问题与答案之间逻辑关联性较低或不相关的数据,保证数据的语义合理性与一致性,从而提高模型对实际问题的回答精准度。(模型)
归因性过滤:对答案的来源和推理过程进行验证,确保数据中答案的来源明确、推理合理,避免因归因错误引发的不可信或误导性信息。(模型)
通过这一框架的构建,我们成功生成了高质量且多样化的 RAG 指令数据15k+条,不仅弥补了数据单一性的不足,还有效提升了模型在运维领域的全面能力,从而实现了多场景、多任务的性能优化,同时我们的数据合成框架具备自动化、低耦合等特点,易于实现落地应用。
2.4.2 模型训练策略
图7 模型训练策略技术框架图
为增强基座模型在运维领域的“记忆”与“阅读理解”能力,我们设计并实施了两阶段微调策略,旨在提升模型对领域知识的掌握深度及其在复杂场景中的信息处理能力。具体如下:
第一阶段:知识记忆增强
通过大量多样化的高质量数据对基座模型进行训练,扩展其对运维领域知识的覆盖面与记忆能力。这一阶段的目标是使模型在运维场景中具备扎实的知识基础,为后续的任务执行奠定坚实的底层能力。
第二阶段:注意力优化
在模型初步掌握领域知识的基础上,通过设计特定的训练任务,强化模型对正确文档的注意力分配能力。这一阶段的重点在于提升模型在复杂检索场景中的精准性,使其能够更加专注于与任务相关的文档内容,从而生成更高质量的答案。
通过这两阶段的微调策略,我们有效提升了基座模型在运维领域的知识掌握与问题解答能力,不仅增强了其记忆深度,还显著优化了模型对关键信息的关注水平,为运维场景下的实际应用提供了强有力的技术支撑。
3 方案检测
3.1 比赛评分标准
榜单得分分为关键事实匹配得分和语义相似度得分的加权和,经过和中兴专家的标注匹配,自动化评测达到专家水平
其中:
关键事实匹配得分中标准答案中的关键事实是由专家标注,预测答案中的关键事实是由glm4提取,最后算的f1分数
语义相似性得分由openai embedding模型评判
3.2 比赛结果分析
表2 最终得分表
我们QihooRAG团队参加了赛道一(微调赛道),专注于领域模型微调的深入研究,模型效果从0.87提升至0.95。我们的研究重点聚焦在以下几个方面:
首先,我们致力于设计数据合成框架,旨在构造多样化且高质量的领域数据。这些数据不仅要覆盖广泛的领域知识,还需要在细节和语义上具备高度的准确性和关联性,以全面提升模型对特定领域的理解能力。
其次,我们深入探讨并优化了微调策略,以最大化基座模型在领域任务中的表现。我们的目标是通过微调进一步提升模型的领域理解能力,特别是在信息检索环节解决检索不精确的问题,确保模型能够高效定位与问题相关的关键信息。
此外,为了确保领域模型产出的答案尽可能完整,我们在生成策略上进行了优化。这种方法虽然提高了回答的全面性,但在答案相似性得分上表现不够突出,这也成为我们下一步优化的方向。
与此同时,我们也针对数据检索与召回部分展开了深入研究,探索如何提高召回的精准性和多样性,以为领域模型的问答提供更可靠的上下文支持。
通过以上研究方向的不断探索,我们致力于实现模型在特定领域任务中的全面优化,助力其在高要求的场景下展现更强的理解与生成能力。
4 总结
4.1 方案创新性
4.1.1 算法设计创新点:
自研数据合成框架,生特定领域的15k+高质量、多样性指令数据,显著提升模型在特定场景中的表现。
融合记忆与阅读策略的训练方法,提升了模型回答质量,并提升了图表内容的解答效果,相对提升5.7%。
模型自补齐提示词策略,根据模型的特性定制提示词,减少人工参与,优化了整体交互体验,使模型效果提升2%。
4.1.2 数据处理与检索创新点:
MLLM处理多模态数据,补充图表信息,进一步丰富知识库内容。
“三路检索 + 重排序”策略,结合检索块去重、“左右补全”文档内容等操作实现信息精准获取,检索率和召回率超92%。
来源:360亿方云