多任务系统落地实践秘籍:从三大核心任务(信息抽取/情感分析/QA)整合,到Prompt链设计与模型调度实战,一次搞定

Part 1

情感分析 + 问答 + 信息

抽取任务协同方式

信息抽取总体概况

NLP 核心任务与基础

ckt_1754895973267.png

  • NLP 核心任务包括:机器翻译、信息抽取、自动文摘、情感分析、智能对话、机器阅读理解、问答系统、推荐系统等

  • 基础概念与方法:

    • 预训练语言模型是重要基础,如 BERT、GPT 等

    • 基本任务涵盖文本分类、文本匹配、序列标注、序列生成

    • 核心技术包括注意力机制、词向量、统计语言模型、神经网络语言模型等

    • 基础理论涉及概率论、信息论、神经网络

信息抽取的重要性

信息抽取技术能从海量非结构化信息中快速自动提取有效信息,形成结构化知识,是构建知识图谱的关键技术,在智能信息处理中占据重要地位。

ckt_1754896079192.png

信息抽取的发展历程

ckt_1754896109944.png

  • 1987-1993 年(MUC1-MUC5):聚焦命名实体识别、共指消解、模板关系抽取等,文本限定在海军军事情报、恐怖袭击等领域

  • 1995-1997 年(MUC6-MUC7):任务扩展到模板填充等,文本涉及人事职位变动、飞机失事等

  • 1999 年(ACE-Pilot-ACE-1):主要进行命名实体识别,文本为新闻语料

  • 2002 年(ACE2):加入关系识别与描述,文本仍为新闻语料

  • 2003-2007 年(ACE2003-ACE2007):任务涵盖时间表达式识别、事件抽取等,文本扩展到对话语料

  • 2009-2015 年(TAC1-TAC7):新增实体链接、属性抽取等,文本包括 Web 页面

  • 2016-2023 年(CCKS):涉及知识表示与推理、智能问答等,文本类型更丰富

  • 发展趋势:从封闭语料到开放语料、从限定类别到开放类别、从文本内信息抽取到与真实世界关联

信息抽取核心任务

信息抽取主要任务分类

信息抽取任务主要包括命名实体识别、关系抽取和事件抽取三大类,它们从不同层面将非结构化文本转化为结构化知识,相辅相成。

ckt_1754896142060.png

命名实体识别(NER)

  • 定义:识别文本中具有特定意义的实体,如人名、地名、机构名等

  • 输入输出示例:输入 “In 1997, Steve Jobs returned as CEO of Apple”,输出 “{Steve Jobs:PER, Apple:ORG}”

 关系抽取(RE)

  • 定义:识别文本中两个实体之间的语义关系

  • 输入输出示例:输入 “In 1997, Steve Jobs returned as CEO of Apple”,输出 “{(Steve Jobs, Work For, Apple)}”

 事件抽取(EE)

  • 定义:从文本中抽取事件相关信息,包括事件触发词、参与者等

  • 输入输出示例:输入 “In 1997, Steve Jobs returned as CEO of Apple”,输出 “start position: returned, employee: Steve Jobs, employer: Apple, organization: Apple”

命名实体识别(NER)

传统命名实体识别

  • 实体特点:

    • 实体之间非重叠,由句子中连续片段构成(平面实体)

    • 限定实体类别:通常为七类(人名、机构名、地名、时间、日期、货币、百分比)

    • 限定目标文本:封闭文本语料(有标注,适合有监督学习)

ckt_1754896188081.png

  • 子任务:

    1. 实体边界识别:发现命名实体在文本中的位置

    2. 实体类别确定:判断实体属于哪一类

  • 方法:

    • 规则方法:人工编制规则匹配实体,如用正则表达式匹配 Email(“^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$”)或日期(“\d {4}[年 -]\d {1,2}[月 -]\d {1,2} 日”)

    • 基于统计方法:视为序列标注问题,利用特征工程 + 算法(如 MEMM、HMM、CRF)

ckt_1754896316226.png

    • 基于神经网络方法:利用神经网络自动提取特征(如 CNN+RNN、RNN+CRF、BERT 等)

ckt_1754896345415.png

  • 序列标注问题概述:

    • 标注是分类问题的推广,许多 NLP 问题可转化为序列标注问题

ckt_1754896372414.png

    • 实体位置信息:B(实体起始词)、I(实体内部词)、O(非实体)等

    • 实体类型信息:PER(人名)、LOC(地点)、ORG(组织)等

    • 包含两部分信息:

ckt_1754896403067.png

复杂命名实体识别

复杂命名实体识别主要解决传统 NER 难以处理的嵌套、重叠或非连续实体问题,能更精准地应对复杂文本场景。

 嵌套实体识别

  • 定义:实体之间存在嵌套、重叠结构,如 “The University of Texas” 中,“The University of Texas” 是 ORG 实体,“Texas” 是 LOC 实体

ckt_1754896440321.png

  • 常用数据集:

ckt_1754896492895.png

  • 识别方法:

ckt_1754896521663.png

    • 基于序列转换的方法:堆叠平面 NER 层,逐层识别不同层级实体,先识别最内层,再将上一层输出合并至当前层

ckt_1754896589504.png

    • 基于 span 分类的方法:枚举序列中所有可能的实体片段(span),确定边界后分类实体类型

ckt_1754896637339.png

    • 转化为阅读理解任务:为每个实体类型创建问题模板,模型根据问题输出答案范围

    • 转化为依存解析任务:识别句子中词与词之间的依赖边及类型

    • 基于任务转换的方法:

ckt_1754896680892.png

    • 端到端生成式方法:将嵌套 NER 建模为文本生成问题,直接生成实体及嵌套关系的结构化表示(如 JSON),灵活处理任意嵌套层级

非连续实体识别

  • 定义:实体由非连续片段组成,如 “much muscle pain and fatigue” 中,“muscle pain” 和 “muscle fatigue” 都是 Disorder 实体

ckt_1754896712362.png

  • 识别方法:

    • 基于序列标注的方法

    • 基于超图的方法

    • 基于转换的方法

    • 基于 span 分类的方法

    • 基于任务转换的方法:将非连续实体识别转为生成任务,通过指针网络生成所有非连续实体

统一命名实体识别

  • 动机:将平面实体抽取(flat NER)、嵌套实体抽取(nested NER)和非连续实体抽取(discontinuous NER)统一到同一框架实现

  • 方法:使用指针网络,将标注任务转化为序列生成任务(seq2seq 范式)

ckt_1754896745335.png

  • 模型结构(基于 BART):

ckt_1754896774469.png

    • 输入:文本序列X=[x1,x2,...,xn]

    • 输出:包含实体起始(s)、结束(e)位置和标签(t)的序列Y=[s11,e11,...,s1j,e1j,t1,...,si1,ei1,...,sik,eik,ti]

  • 实体表示方法:

ckt_1754896824359.png

    • Span 粒度:选择实体每个词 BPE 分词后对应的第一个和最后一个 index

    • BPE 粒度:选择实体每个词 BPE 分词后对应的所有 index

    • Word 粒度:选择实体每个词 BPE 分词后对应的第一个 index

ckt_1754896881346.png

关系抽取(RE)

关系抽取分类

关系抽取旨在识别文本中实体间的语义关系,按不同场景可分为有监督关系分类、远程监督关系抽取、实体关系联合抽取和开放域关系抽取等,满足不同数据条件下的关系提取需求。

ckt_1754896908564.png

有监督关系分类

  • 定义:在命名实体识别后,给定文本和实体,判断实体间的关系

  • 实例:输入 “People have been moving back into downtown”,实体 e1:people、e2:downtown,输出关系 “Entity-Destination (e1,e2)”(表示个体和目的地的关系)

ckt_1754896944384.png

  • 方法:

    • 基于规则的方法:利用词汇、句法、语义等特征构建规则,如上下位关系可通过 “such as”“including” 等句式匹配

    • 基于深度学习的方法(如 BERT):

ckt_1754896978054.png

    • 用特殊符号标识实体位置

    • 抽取 BERT【CLS】位置 embedding 和实体 embedding,拼接后通过全连接层和 softmax 输出关系分类

    远程监督关系抽取

    • 定义:通过将大规模非结构化文本(如 Web 页面、Wikipedia)与知识库对齐,获取大量训练数据供模型训练

    • 优势:快速、大规模构建关系抽取数据集

    • 问题:

      • 假正例噪声:本身不包含关系但被标注

      • 假负例噪声:本身包含关系但知识库中没有

    • 噪声处理方法:

      • 隐式处理:训练中对样本软加权,降低噪声影响

      • 显式处理:训练前检测并处理噪声样本(如用强化学习)

      • 外部信息辅助:加入图谱补全任务或无监督、弱监督信息

    深度强化学习的远程监督关系抽取:使用深度强化学习框架生成假正例指示器,通过评估关系分类器性能变化,判断是否保留当前句子,从而优化远程监督训练集质量。

    实体关系联合抽取

    ckt_1754897072529.png

    • 流水线式抽取(Pipline):

    ckt_1754897095934.png

      • 流程:先进行实体识别,再抽取实体间关系

      • 问题:错误传播(实体识别错误影响关系识别)、产生冗余、未利用子任务间关系

    联合抽取(Joint Extraction):

    ckt_1754897124288.png

      • 定义:端到端同时进行实体和关系的抽取

      • 基于统一表示建模的方法:为实体和关系建立统一表示,将候选关系转为自然语言文本,与输入句子形成连续序列,基于 Transformer 编码,捕捉信息相关性

    开放域关系抽取

    • 特点:

      • 实体关系不受限制(实体类型和关系类型均开放)

      • 文本为有噪音、冗余的海量网络数据(如 Web 页面、Wikipedia)

    任务描述:抽取所有可能的关系三元组(e1, relationWords, e2),其中 relationWords 是描述实体对语义关系的词或词序列

    实例:“腾讯首席执行官马化腾” 中,三元组为 < 腾讯,首席执行官,马化腾 >

    方法:

    • 基于学习的方法:借助模板、启发式规则

    • 基于规则的方法:人工制定规则、词性序列模板等

    • 基于句子的方法:将复杂句转为简单句,再用模板方法

    • 基于深度学习的方法:序列生成、序列标注、分块选择

    ckt_1754899976299.png

    事件抽取(EE)

    事件抽取概述

    • 事件定义:发生在特定时间点 / 段、特定地域,由一个或多个角色参与的一个或多个动作组成的事情或状态改变

    • 事件抽取定义:从描述事件信息的文本中抽取出用户感兴趣的事件信息,以结构化形式呈现(从无结构化数据中抽取结构化事件信息)

    • 相关概念:

      • 事件描述(Event Mention):对事件的自然语言描述(句子或句群)

      • 事件触发词(Event Trigger):最能代表事件发生的词(多为动词或名词),决定事件类别

      • 事件元素(Event Argument):事件参与者,与触发词构成事件框架

      • 元素角色(Argument Role):事件元素与事件的语义关系

      • 事件类别(Event Type):由事件元素和触发词决定

    • 主要挑战:

      1. 特征表示:缺乏深层次语义信息,难以满足多事件抽取需求

      2. 抽取领域:从特定领域到开放域,考验未知事件类型抽取能力

      3. 抽取范围:从单句到文档,面临长距离依赖和多事件挑战

      4. 数据标注:人力标注费时费力

    句子级事件抽取

    ckt_1754899998285.png

    • 模式匹配方法:

      • 框架:从有标注文档集获取模式,建立模式库,再用模式匹配待抽取文档

      • 特点:特定领域性能突出,但可移植性差、召回率低,需大量人力标注

    • 统计方法:

    ckt_1754900017884.png

      • 思路:利用跨实体推理完成抽取,包括实体背景知识挖掘、实体子类型聚类、特征抽取、基于 SVM 分类

      • 特点:减轻模式设计工作,泛化性和可重用性更好,但特征工程耗时,学习复杂关系有局限

    • 深度学习方法:

    ckt_1754900038152.png

      • 框架:利用文档级、句子级、词向量等嵌入,结合 Attention、GCN、Transformer 等网络,输出分类或生成结果

      • 特点:可捕获复杂特征关系,避免大量特征工程,但依赖高质量标注数据和参数量设置

    文档级事件抽取

    • 定义:为获取全面完整的跨句事件信息,从文档中抽取事件(区别于句子级,句子级信息可能不完整)

    ckt_1754900065022.png

    • 挑战:

      1. 事件元素分散:事件元素可能分布在文档多个句子中

      2. 多事件:一个文档可能包含多个事件

    ckt_1754900847445.png

    • 实例:文档中多个句子分别提及股东持股、股份冻结等信息,需整合为 “股

    • 权冻结” 事件表,包含股权持有人、冻结股份数等角色信息

    大模型时代下的信息抽取

     基于 LLM 的信息抽取范式

    大模型凭借强大的语言理解和生成能力,为信息抽取带来了新范式,通过提示工程或任务定制,实现更灵活高效的信息提取。

    ckt_1754900893166.png

    • 主要方向:

      • 提示工程:由 prompt 工程师设计 prompt,结合 LLM 完成信息抽取

      • 任务定制 LLM:开发专门用于信息抽取的大模型(ChatIE 等)

    典型模型

    GPT-NER

    • 思路:将序列标注任务转化为 LLM 易适应的生成任务

    • 方法:

      1. 构建 Prompt:包含任务描述 + 少样本样例

      2. 将 Prompt 提供给 LLM

      3. 将输出序列转化为实体标签序列(用 “@@” 和 “##” 包围实体)

    ckt_1754901239080.png

    ChatIE(基于 ChatGPT)

    • 思路:将 Zero-shot IE 任务分解为两阶段,基于多轮对话形式

    • 方法:

      1. 找出句子中可能存在的相应元素类型

      2. 对第一阶段的每个元素类型进行链式信息提取

    ckt_1754901380844.png

    • 效果:多轮对话优于单轮直接 prompt,在多个数据集上性能接近或超过 full-shot 模型

    ckt_1754901419764.png

    Filter-Ranker(大小模型协同)

    • 前置结论:LLM 擅长处理难样本,小模型(SLM)擅长简单样本

    • 思路:简单样本直接用小模型抽取;难样本将小模型输出的 Top-N 预测结果以多选题形式交给大模型,由大模型重排序并输出最终结果

    ckt_1754901471052.png

    InstructUIE(多任务指令)

    • 思路:基于 Instruction tuning 技术,实现统一信息抽取框架,挖掘任务间依赖关系

    • 方法:为 NER、RE、EE 任务编写指令模板,将所有任务形式化为 seq2seq,混合训练数据微调 LLM,再测试不同任务

    image.png

    • 效果:与 BERT 监督学习效果相当,zero-shot 能力领先(优于 GPT3.5),可解决大量任务

    ckt_1754901567362.png

    小结与展望

    • 大模型推动信息抽取向通用模型发展,促进更广泛应用

    • 发展趋势:

      • 从限定域到开放域

      • 从单模态到多模态

      • 从简单抽取到复杂抽取(表格 / 推理)

    不同时代特点:

    • PLM 时代:刷榜,探索性能瓶颈,检索增强对知识密集型任务有用

    • 过渡期:零少样本定制,利用数据增广和源模型知识

    • LLM 时代:高效定制,基于大模型 API 设计更优 prompt,定制信息抽取 LLM

    ckt_1754901622915.png

    • 未来位置:在智能信息处理系统中,若用户需求直接为信息抽取,技术优化潜力大;若需利用信息抽取,可能被大模型端到端取代,但需考虑干预、寻证、推理等因素

    情感分析

    什么是情感分析

    自然语言情感分析是对文本中蕴含的心理状态进行分析、归纳和推理,理解人类的观点、情绪、意图等。上下文会增加情感分析的复杂性。例如,感叹句 “没什么!” 取决于发言者对产品是否喜欢所做出的评价,其含义可能截然不同。为了理解 “我喜欢它” 这个短语,机器必须能够理清上下文,并理解 “它” 指的是什么。

    情感分析的应用场景与类型

    • 应用场景包括商品评论(ABSA)、Twitter - 消费者信心调查(SC)、股市预测(SC)、舆情监控(ABSA)等。

    • 主要类型有基于层面的分析(用于发现产品的优缺点)、情感强度分析和意图分析(用于判断行为的可能性)。

    ckt_1754901715609.png

    情感极性分类

    粗粒度情感极性分类

    粗粒度情感极性分类主要是判断文本整体的情感极性,包括:

    • 情感倾向性分类(Opinion):褒、贬、中立。例如 “商品质量上乘,材质优秀,做工精细。价格合理,性价比高。购物过程愉快,推荐给朋友。” 属于正向评价。...

    • 情绪分类(Emotion):情绪分类主要识别文本中包含的喜、怒、悲、恐、惊等情绪。例如,谈及 “苏超” 的火爆时,寇程提到 “最近同学朋友们都来问我,有没有票,这票实在是太难抢了”,以及 “大家对我的关注度也越来越高了,因为大家对我的鼓励,让我也越来越自信,争取在接下来的比赛中越踢越好”,从中能感受到他的开心情绪

    情感极性分类框架

    文本情感极性分类属于一种针对情感态度的文本分类任务,在文本分类任务基础上,会加入情感符号及情感相关语言特征。其流程涉及特征选择、样本数据处理、模型构建(包括传统机器学习模型和深度学习模型)、类别预测等环节,其中深度学习的发展为文本情感分类的精准性带来了新的生机。

    在处理过程中,会进行一系列数据预处理操作,如 Stemming、Tokenization、Lemmatization 等,还会利用 BERT 等预训练模型结合额外的情感分析层进行处理,最终输出类似 “Positive: 98% Negative:2%” 的结果。

    ckt_1754901858720.png

    分类评价标准

    假设有 n 个类别,情感极性分类的评价标准主要包括:

    • 准确率(Accuracy):指 n 个类预测正确的样本总数与总样本数的比值。

    • 宏平均(Macro Averaged):对所有类别的每一个统计指标值(精确率、召回率、F 值)取算数平均值,分别称为宏精确(Macro-Precision)、宏召回率(Macro-Recall)、宏 F 值(Macro-F Score)。宏平均赋予每个类相同的权重,适合度量分类器对小类判别的有效性。

    image.png

    • 微平均(Micro Averaged):对每个样本进行精确率(P)、召回率(R)的统计,计算微精确率(Micro-Precision)、微召回率(Micro-Recall)、微 F 值(Micro-F Score)。微平均赋予每个样本决策相同的权重,适合度量分类器对大类判别的有效性。

    image.png

    情感分析的关键问题与发展

    ckt_1754901885605.png

    从基于规则的方法到现在的预训练语言模型,情感分析的发展主要围绕以下关键问题:如何找到情感特征及其组合;如何处理长文档的情感分类;如何学到一个好的情感表示;如何建立一个质量优秀的情感词典。目前,大规模预训练语言模型与情感词典的结合是当前情感分类任务的先进方法(SOTA)。

    属性级情感分类

    定义与任务

    细粒度属性级情感分类(Aspect-based Sentiment Analysis, ABSA)是指判断评价对象及其属性的情感倾向,是更精细的情感分析,能更好地理解主观性文本的情感分布,为每个实体(及其属性)识别情感。

    ckt_1754902003666.png

    其包含两个主要任务:一是属性抽取(Aspect-Extraction),即识别给定文本中提到的属性,如在 “This actor is the only failure in an otherwise brilliant cast” 中,属性为 “actor” 和 “cast”;二是确定属性的情感方向,如 “actor” 对应的情感为负面,“cast” 对应的情感为正面。

     观点类型

    现实场景中存在两类观点,属性级情感分类关注常规型观点:

    • 常规型观点(Regular Opinion):对某些目标实体的情绪 / 意见表达,包括直接观点(如 “华为 P50 触摸屏真的很酷”)和间接观点(如 “服药后,我的疼痛消失了”)。

    • 比较型观点(Comparative Opinion):多个实体的比较,如 “华为 P50 比 iPhone 好”。

    形式化定义与子任务

    观点可形式化为一个五元组:(e, a, s, h, t),其中 e 为观点评价的目标实体,a 为实体 e 中一个观点评价的实体属性,s 为对实体 e 的 a 属性的观点中所包含的情感(可分为正向、负向、中立,或 1~5 的打分),h 为观点持有者,t 为观点发布时间。

    ckt_1754902047124.png

    属性级情感分类包含多个子任务,如下表所示:

    ckt_1754902135812.png

    问答系统

    问答系统(QA)是人与计算机交互的过程,通常以自然语言查询语句作为输入,从选定的资源中检索相关的文档、数据或知识,产生相应答案并以有效的方式回答问题。例如,输入 “山东省的省会是哪个城市?”,问答系统输出 “济南”。

    ckt_1754902069524.png

    其发展趋势包括从简单任务向复杂任务发展、从有限领域向开放领域发展、研究范围越来越广泛。早期特点为提问多为事实性问题,以单轮问答(查找答案)为主,发展历程经历了图灵测试、专家系统、检索式问答、社区问答、知识型问答等阶段。

    ckt_1754902197301.png

    问答系统的基本构成

    问答系统主要由三个部分构成:

    • 问题理解:对给定的问题进行分析,得到问题句子成分信息、所属类别和潜在答案类型等信息。

    • 资源分析:根据问题分析得到已有的数据集中可能含有答案的数据。

    • 答案形成:在得到候选答案集中采用各种技术抽取或生成答案并返回给用户。

    在不同发展阶段,这三个部分的解决方法随着数据资源的变化而不断变化,从而形成了不同类型的问答系统。

    专家系统(60 年代–80 年代)

    专家系统的特点是问题限定在特定领域,数据基于结构化领域知识数据。其后台有一个数据库,保存系统可提供的各种数据,当用户提问时,系统把用户的问题转换成 SQL 查询语句,从数据库中查询数据提供给用户。

    ckt_1754902251472.png

    构建该系统的关键在于:需要构建一个特定领域的较完备的结构数据库;能准确、高效地把问题转化为查询语言形式的查询。但它存在局限性,一般只能用在限定领域。

    ckt_1754902287659.png

    早期比较著名的 QA 系统有 BASEBALL(1961 年)和 LUNAR(1973 年)。BASEBALL 可用来回答美国一个季度棒球比赛的时间、地点、成绩等自然语言问题;LUNAR 可帮助地质学家了解、比较和分析阿波罗登月计划积累的月球岩石的各种化学分析数据。不过早期系统需要大量人力,应用领域有限,主要利用计算语言学,属于检索式的问答系统。

    检索式问答系统(1990--)

     特点与典型案例

    检索式问答系统的特点是问题领域开放,基于非结构化 Web 数据,检索内容为简短的词或词组。典型案例是 IBM Watson 的 The DeepQA Project,在 2011 年 2 月的美国问答节目《Jeopardy!》上,Watson 用自然语言进行深度问答,战胜了该节目的两位冠军选手,被认为是人工智能历史上的一个里程碑。

    ckt_1754902319563.png

     处理框架

    检索式系统的处理框架包括:

    ckt_1754902391435.png

    1. 问题分析:检测问题类型、答案类型、关注点、关系等,将问题改写为查询并输入搜索引擎,主要功能是问题分类和关键词提取。

    ckt_1754902417274.png

      • 问题分类:分为事实型问题(如 “谁”“何时”“多少”“哪里” 等)、定义型问题(如 “是什么”“什么是” 等)、复杂型问题(如 “为什么”“如何” 等)。

      • 关键词提取:根据问题分类,用序列标注法抽取相应类别的实体做为检索关键词。

    1. 文档与段落检索:检索相关文档,将相关文档划分为片段并对片段进行排序。

    ckt_1754902440156.png

    • 答案抽取:在相关片段中抽取备选答案,并对备选答案进行排序。

    ckt_1754902463542.png

    实现方式

    检索式问答系统是信息检索技术和信息抽取技术的结合,实现方式包括流水线方式和端到端方式。

    ckt_1754902485197.png

    • 流水线方式:分为 DocumentRetriever 和 DocumentReader 两步,如 DrQA 系统,分为文档检索和文档理解两个部分。文档检索通过 TF-IDF 检索维基百科中与问题相关的 TopK 个文档,文档理解将答案抽取转化为抽取式阅读理解问题。

    ckt_1754904896267.png

    • 端到端方式:包括 Retriever-Reader 的联合学习(如 ORQA 模型)和基于预训练的 Retriever-Free 方法(如利用 GPT-2、T5 等预训练语言模型)。

    ckt_1754904930203.png

    ckt_1754904957090.png

    ckt_1754904983159.png

    社区问答系统

    社区问答系统的任务是根据用户所提问题,找到社区中与之相应的答案,典型的中文社区问答有知乎、百度知道等,英文社区问答有 StackOverflow 等。

    ckt_1754905007645.png

    其处理框架包含问题分析、信息检索部分和答案抽取部分。信息检索部分只需找到和问题类似的问题,然后返回答案或者相似问题列表即可;答案抽取部分最重要的工作是判断答案的质量,由于问题句子通常较短,答案通常较长且包含大量噪声和冗余信息,需要采用相应方法解决,如引入用户信息、潜在主题、外部知识等额外信息。

    社区问答具有包含丰富元数据、问题和答案文本较长且含大量噪声、答案质量差距大等特点,其优势在于能解决个性化、开放域、异构、精确的问题,社区用户能更精准理解和回答问题,且能不断积累丰富的知识。

    ckt_1754905038347.png

    知识库问答系统

    基于知识库(知识图谱)的问答系统任务是给定自然语言问题,通过对问题进行语义理解和解析,利用知识库进行查询、推理得出答案。

    ckt_1754905085954.png

    其解决方法主要分为:

    • 语义解析(Semantic Parsing):将自然语言转化为一系列形式化的逻辑形式,通过对逻辑形式进行自底向上的解析,得到可表达整个问题语义的逻辑形式,再通过相应查询语句在知识库中查询答案。

    ckt_1754905124204.png

    • 信息抽取(Information Extraction):提取问题中的实体,在知识库中查询该实体得到以其为中心的知识库子图,通过规则或模板进行信息抽取得到问题特征向量,建立分类器筛选候选答案。

    ckt_1754905144590.png

    • 向量建模(Vector Modeling):对问题和候选答案进行编码表示,训练阶段使问题和正确答案的向量表达得分尽量高,根据得分筛选最终答案,优点是不需要定义大量模板,可端到端学习,不足是回答复杂问题差,缺乏可解释性。

    ckt_1754905180494.png

    最新研究方向是融合文本和知识图谱的问答,以及知识增强的大模型问答(Knowledge-Augmented LLM),通过抽取与问题中实体相关的知识并注入 prompt 中,提升问答效果。

    ckt_1754905216299.png

    ckt_1754905251317.png

    知识图谱问答的优势在于人工构建的知识库确保答案准确性,常识或 “简单” 问题易找到答案,图结构支持多步推理问答;但局限性是能回答的问题有限,只涉及常见实体与关系,且知识图谱无法实时更新。

    Part 2

    跨任务提示结构设计

    核心机制概述

    在复杂智能体系统和多阶段任务场景中,单一 Prompt 已无法满足系统级行为控制需求。通过构建具备阶段划分、上下文传递、状态承接与模型协同能力的 Prompt 组合结构(Prompt Chaining),可以实现更强的推理路径建模与系统决策分层控制。

    Prompt Chaining 本质是一种任务编排结构,具有以下特点:

    • 阶段解耦:每个子 Prompt 仅控制当前阶段行为,避免语义干扰

    • 上下文串联:上一个 Prompt 的输出可作为下一个 Prompt 的上下文或输入参数

    • 行为明确化:通过分层控制,模型行为更具稳定性与可预测性

    • 调试与回溯更易于控制:错误可精准定位到某个链条节点,利于优化

    多阶段任务建模中的提示词分解策略

    Prompt Chaining 的第一步是将原始任务逻辑拆解为清晰的多阶段流程,分解粒度过粗会导致控制失败,过细则带来链路复杂度与性能问题,因此合理设计提示分段结构至关重要。

    分解依据是以任务逻辑与语义转折点为界,每个阶段应具备逻辑独立性(具备完整指令、可评估输出、可封闭执行)、状态明确性(输入和输出可被上下链使用或缓存)、目标单一性(每个 Prompt 执行一个单一控制目标,如只做提取、只做重写)。

    常见分解结构示例如下:

    ckt_1754905360730.png

    分段策略设计建议:优先将语义状态变化处设为链式边界(如 “从分析到生成”“从摘要到重写”);使用结构标签区分阶段输出(如:[阶段 1 输出], [阶段 2 指令]);避免在同一 Prompt 中执行并行任务(如同时提问和总结),每一段 Prompt 都应设计输出模板,便于结构控制与后续自动解析。

    状态承接与上下文穿透

    Prompt Chaining 的关键不仅在于分段,更在于串联,每一段提示执行后的输出,既是本阶段的结果,也可能成为下一个 Prompt 的上下文、输入参数或控制信号,因此状态的精确承接与上下文的有序穿透是链式结构有效运行的根本保障。

    状态承接模型分类如下:

    ckt_1754905375043.png

    上下文穿透的控制策略包括:

    • 穿透粒度控制:避免将整个历史上下文重复堆叠,应仅提取必要状态摘要或变量

    • 状态封装结构建议:使用结构标签区分上游输出段落(如:[内容分析结果]);明确标注哪些字段可被引用(如:[提取字段:时间、地点])

    • 状态传递失败风险规避:建议在每段输出后加入标准结构,如 JSON、列表,供下段稳定解析;对引用状态加设断言提示词(如:“请仅基于上述分析进行下一步操作”)

    • 工程落地建议:在链式执行系统中建立状态缓存与中间变量处理模块;每一段 Prompt 的输出应可被结构解析为键值对,确保下游读取稳定;若使用流式模型,应增加中间输出结果结构校验环节,防止语义断裂传染到下阶段;对于上下文引用密集型任务,引入自动摘要器提取核心状态,简化穿透成本。

    Prompt 路由与任务编排

    在复杂任务系统中,Prompt 链条并非简单线性结构,而是根据不同输入情况触发不同路径,甚至动态组合任务链,这种机制需要构建 Prompt 路由逻辑,即根据当前状态、输入意图、响应内容等要素,动态选择链式路径与 Prompt 模块组合方式。

    路由决策来源与典型结构如下:

    ckt_1754905391795.png

    路由控制机制设计建议:引入调度层,对每个 Prompt 执行节点设定路由入口与出口;设计 Prompt Block 编排配置结构,如 JSON DAG 图谱结构;支持节点条件判断(正则、关键词、结构字段)与动态插值路径匹配。

    多模型协同下的 Prompt 组合分发机制

    在真实生产环境中,单一模型往往难以覆盖所有任务类型,尤其在多轮交互、结构控制、生成创意等方面,不同大模型具备不同优势。将 Prompt Chaining 与多模型体系结合,可构建出具备智能分工、策略调度、分段执行能力的协同系统,关键在于通过 Prompt 组合实现模型级链式协同执行。

    多模型协同的典型结构模式如下:

    ckt_1754905468335.png

    在大规模 Prompt 系统中,大量提示语块存在结构重复、控制语义一致的现象。通过将常用控制段落、结构指令、语气设定等信息模块化封装,实现模板级组件化设计,可显著提升策略复用效率与提示工程维护可控性。结合参数注入机制,可进一步构建高可扩展性的 Prompt 构造体系。

    控制信息标准模块分类如下:

    ckt_1754905514859.png

    实战案例:智能文档问答系统优化流程

    在某企业级文档智能问答平台中,初期采用单一长 Prompt 向大模型发送用户指令与原始文档内容,随着问题复杂度提升与文档多样性增强,系统暴露出响应不稳定、控制失败、上下文混乱等问题。引入 Prompt Chaining 架构后,响应成功率提升至 93% 以上,实现了 “结构可控、行为可追溯” 的多阶段智能问答系统。

    初期问题识别

    ckt_1754905533558.png

    效果对比数据

    ckt_1754905549210.png

    工程总结与建议

    工程总结:

    • 将提示结构拆解为独立控制单元,有助于缩短调试路径与降低行为干扰

    • 各阶段 Prompt 均进行结构标注与输出模板限定,提升了响应一致性

    • 模板聚合与重用能力显著增强,支持跨任务快速组合链路

    • 最终实现了提示控制从 “手写式提示调试” 到 “语义任务链编排” 的工程跃迁。

    工程建议:构建支持 Prompt Chaining 的任务执行平台与调试工具链,Prompt Chaining 要从单任务提示扩展为平台级基础能力,必须配套完整的执行框架与工具体系,支持链路配置、调试回溯、失败处理、性能监控与策略迭代,形成工程闭环。

    Part 3

    模型共享 vs 分离策略

    与资源调度机制

    模型共享 vs 分离策略

    背景与问题定义

    多任务系统、微服务、LLM 应用中常见问题包括不同任务对模型的需求差异、资源成本与可维护性矛盾,主要设计决策为统一共享一个模型或分离不同模型实例,目标是平衡性能、成本、可扩展性、稳定性。

    模型共享策略与模型分离策略

    • 模型共享策略:定义为所有任务调用同一个模型实例,优点是资源利用率高、维护成本低、版本管理简单,挑战是任务干扰、上下文污染、难以针对性优化。

    • 模型分离策略:定义为按任务 / 租户 / 场景区分模型实例,优点是任务隔离、可针对性调优、可支持多版本,挑战是资源消耗增加、部署和运维复杂、调度难度上升。

    对比分析

    image.png

    资源调度机制

    在 vLLM 中,Scheduler 是调度大脑,主要职责是合理分配计算资源和管理请求队列,通过精心设计的调度算法,权衡不同请求的优先级、资源需求和系统负载,确保系统高效运转。

    ckt_1754905630401.png

    vLLM 调度器的结构设计围绕任务的状态管理和内存资源的优化利用展开,将任务划分为不同的状态队列,并通过缓存管理和内存调度保证任务处理的高效性,核心组成部分包括 waiting、running 和 swapped 三个状态队列。

    ckt_1754905270738.png

    vLLM 调度器依赖三个状态队列管理任务的不同阶段:

    • waiting 队列:用于存放新加入的任务或已完成预填充阶段但等待解码的任务。

    • running 队列:包含当前正在处理的任务,通常是在解码阶段。

    • swapped 队列:用于存放因资源不足而被暂时从 GPU 移至 CPU 的任务

    ckt_1754905652854.png

    调度器根据系统负载和请求特征自适应选择最优策略,整个过程分为三阶段:

    • 预填充阶段:评估新请求资源需求,预生成注意力缓存;

    • 解码阶段:核心生成环节,精细分配资源,提升 GPU 利用率;

    • 交换阶段:在资源紧张时,将低优先级任务转移至 CPU,保障高优先级任务运行。

    Logo

    有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

    更多推荐