【大模型和智能问答系统】

大模型前的智能问答系统

大模型统一代指以ChatGPT为代表的,参数量相比以前模型有明显量级变化的生成模型。

智能问答系统,按照应用可以划分任务型非任务型
目前智能对话落地较多的为任务型智能对话。而任务型智能对话的一个最基本的要求就是准!!!而目前大模型经常会出现看似正确的错误,这种错误不可控且难以修正。
任务型问答系统,按照技术实现方式可以划分为,管道式(pipeline)端到端(end-to-end)

任务型问答系统,多基于管道式方案进行。
如:Rasa的 NLU+Core模块,对应管道架构中的自然语言理解(NLU)+对话管理(DM);
科大讯飞的AIUI平台,需要对意图和槽位进行设置;
思必驰的整体交互逻辑,也把NLU和DM进行了区分。

管道式问答系统的具体架构如下图:
管道式问答系统
ASR:将音频识别成文本;
NLU:识别文本的意图和槽位信息,供系统决策使用;
DST:追踪和存储历史的对话状态,供决策使用;
DPL:基于历史信息(意图/槽位/系统回复),做决策;
NLG:生成回复文本;
TTS:将文本转化为语音;

传统管道式架构存在的问题

1.NLU基于上下文的理解:多数意图识别是基于本轮文本进行识别。但存在部分需要基于上轮文本进行识别的情况,如:
一轮:今天天气怎么样?
二轮:明天呐?
二轮是基于一轮的省略。
还有那种仅参考本轮为意图A,参考上轮信息为意图B的情况。

2.对话管理模块(DM),一直没有找到成熟的解决方案。
DM就是存储历史信息,并基于历史和当前轮数信息,决定下一步的动作(action)。这相当于人类的大脑的决策过程。
该模块,从开始的基于规则做特定的逻辑处理,到基于状态机转移,到基于深度学习模型(如rasa的ted模型),一直都不能做到通用和智能。

3.自然语言生成(NLG)本身就是一种生成。 前期通过将回复答案提前预制,通过分类模型选择哪个预制回复的方式,缺乏通用性和智能化。
且*以Bert为代表的自编码式的深度学习模型,其更适合做分类任务。*而想要做好智能问答系统(通用/友好),NLG应该是一种生成模型。

大模型在任务型问答系统中应用

大模型的相关应用,也是当下探索的热点。下面也是本人的一点理解,勿喷

大模型辅助任务型问答系统
大模型在传统智能问答系统的基础上,辅助解决一些具体问题,我认为是现在切实可行的落地方案。而通过大模型完全替代现在的传统方案,是一个可以探索的方向,但该方案的落地,还存在很多的问题。
上图为大模型在智能问答系统中的一些应用点。

NLU应用

在NLU中,通过前置数据预处理模块,将用户的问题处理成系统可以解析的数据。其中,基于上下文的语义理解,可以将用户的上文信息和本文信息通过大模型重新生成一句完整的信息。该方案中,大模型扮演的角色为,通过上文文本和本文文本,重新生成一句完成的文本。执行的任务相对单一,因此在提示词设计时,可以有很强的针对性。
但生成新文本的任务,对于Bert为代表的分类模型来讲,确实很难做到;

2.根据实际业务情况,前处理可以包含冗余句过滤,长难句处理等一系列问题。在处理原来句子生成新句子的各项任务中, 大模型先天比分类模型具有更好的效果。

DM如何使用大模型

对话管理本质就是在利用历史信息和当前信息进行决策。决策的过程是整合各种历史信息,而决策的结果为生成一个对应动作。最早方案通过规则 状态机把信息分解分析,然后通过分类得到最终结果,将结果和实际的动作做映射。该方案在处理历史信息时,定制性比较强,不同的业务需要写不同的逻辑处理。而通过深度学习模型的方案,如rasa 提出的TED模型,其分类的结果相对于规则较低。
目前的大模型,其Token数量从几千到几万,对于短距离的上下文问答,已经可以做到很好的支持。对于长距离的问答,可以把历史信息,通过文件的形式存储下俩,在用户出现新问题时,通过将新问题和历史信息文件做embedding相似度检索,找到最相似的一段历史信息,将该历史信息添加到提示词中。
而针对不同的答案来源,可以按照不同的方式使用大模型。
如果回复信息,需要从数据库中查找,可用通过使用大模型的text2sql能力。
回复信息在文本中检索,在需要利用大模型的文本检索embedding方案。
回复为具体动作时,则需要使用大模型的函数调用能力。
针对不同的资源,目前有很多的解决方案,但用大模型做对话决策,如何保证结果的准确率? 当出现错误时,如何修正?

NLG应用

NLG–自然语言生成。从字面上理解,该模块就是在做生成任务。
大模型做NLG的方向可以从两个方面入手。第一,直接用大模型生成对应回复文本。第二,按照传统方式生成回复文本后,通过大模型二次加工润色,生成不同的回复风格。
第一种方案的最大问题还是不可控。
第二种方案,可以作为提升整个系统智能化的小功能点,但不解决最关键的问题。

#大模型智能问答系统
langchain架构,如果将agent引擎使用大模型,基本上就是大模型智能对话的架构了,个人理解,后续有时间补充

### 构建大模型智能问答系统的实现方法关键技术 构建大模型智能问答系统是一个复杂的过程,涉及到多个技术环节核心概念。以下是关于其实现方法技术的关键点: #### 1. 智能问答系统的核心设计 智能问答系统的设计需要理解其基本工作流程以及所依赖的技术栈。通常情况下,这种系统由以下几个模块组成:自然语言处理(NLP)、语义理解检索、对话管理以及响应生成[^2]。 - **自然语言处理**:通过分词、句法分析等手段解析用户的输入问题。 - **语义理解与检索**:利用预训练的大规模语言模型来捕捉文本深层含义并匹配最相关的答案。 - **对话管理**:负责跟踪会话状态,确保上下文连贯性。 - **响应生成**:依据前序步骤的结果生成最终回复给用户。 #### 2. 基于大语言模型的工作原理 基于大语言模型的智能问答系统主要依靠强大的Transformer架构完成任务。这些模型经过大量无标注数据上的自监督学习后具备广泛的知识基础,在此基础上可以通过少量样本或零样本的方式快速适配到特定领域内的问答需求[^3]。 对于具体的实施路径而言: - 需要先选定合适的预训练模型作为起点; - 接着针对目标场景收集足够的高质量训练数据用于进一步优化性能; - 还需考虑硬件条件限制选择适合本地环境部署的形式——例如是否采用量化压缩技术降低内存占用率从而支持CPU端运行等情况下的调整策略。 #### 3. 数学模型的应用 为了提升系统的准确性与效率,还需要引入一些专门定制化的算法或者改进版的经典机器学习/深度学习框架来进行辅助计算。比如可以运用注意力机制增强特征提取能力;借助图神经网络更好地表示实体间关系等等[^4]。 此外,当面对高度多样化的提问形式时,则建议建立跨学科综合型知识库,并通过对各类主题下代表性案例的学习不断扩充完善该体系结构以便应对更加复杂的查询请求。 ```python import torch from transformers import AutoTokenizer, AutoModelForQuestionAnswering tokenizer = AutoTokenizer.from_pretrained("distilbert-base-cased-distilled-squad") model = AutoModelForQuestionAnswering.from_pretrained("distilbert-base-cased-distilled-squad") def answer_question(question, context): inputs = tokenizer.encode_plus(question, context, add_special_tokens=True, return_tensors="pt") input_ids = inputs["input_ids"].tolist()[0] outputs = model(**inputs) start_scores = outputs.start_logits end_scores = outputs.end_logits # 获取最大概率对应的起始位置索引 answer_start = torch.argmax(start_scores) answer_end = torch.argmax(end_scores) + 1 tokens = tokenizer.convert_ids_to_tokens(input_ids[answer_start:answer_end]) answer = tokenizer.convert_tokens_to_string(tokens) return answer context = "The Eiffel Tower is located in Paris." question = "Where is the Eiffel Tower?" print(answer_question(question, context)) ``` 上述代码展示了如何使用Hugging Face Transformers库加载一个预先训练好的QA模型,并定义了一个简单的函数`answer_question()`用来接收一个问题及其相关背景信息然后返回预测的答案字符串[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值