模型置信度在实际中的应用

一、LLM 中的“置信度”本质是什么?

在大语言模型中,每一步生成的 token 都有一个概率分布:

P(ti∣t1,t2,…,ti−1) P(t_i | t_1, t_2, …, t_{i-1}) P(tit1,t2,,ti1)

这个分布来自模型最后一层的 logits,经 softmax 后得到。
例如模型在生成句子:

“The cat sat on the mat.”

当生成到“mat”这个词时,模型可能认为:

候选词	概率
mat	0.81
bed	0.10
floor	0.04
sofa	0.02

这里,“mat”的概率 0.81 就是当前 token 的置信度。
如果要计算一句话的总体置信度,可以取所有 token 的平均或乘积(通常取 log 概率求和平均):

Confidence(sentence)=1N∑i=1Nlog⁡P(ti∣t<i) \text{Confidence(sentence)} = \frac{1}{N} \sum_{i=1}^{N} \log P(t_i | t_{<i}) Confidence(sentence)=N1i=1NlogP(tit<i)

二、在 Qwen / DeepSeek / vLLM 中置信度的具体来源

在这些模型框架(尤其是部署在 vLLM / OpenAI API 兼容接口上)中,置信度通常可以通过两种方式获取:

✅ 1. logprobs 字段

API 调用时加上:

{
  "model": "qwen3-omni-30b",
  "prompt": "天空是什么颜色?",
  "logprobs": 5
}

返回结果中会包含每个 token 的 logprob(对数概率):

"tokens": [
  {"token": "蓝", "logprob": -0.12},
  {"token": "色", "logprob": -0.10},
  {"token": "的", "logprob": -0.25}
]

置信度可通过 exp(-logprob) 得出。
例如 logprob = -0.12 → 概率 ≈ 0.89,代表模型对这个 token 的置信度。

✅ 2. 平均 logprob 作为句子置信度

如果你想评估整个生成回答的可靠性,可取所有 token 的平均值:

import math
logprobs = [-0.12, -0.10, -0.25]
confidence = math.exp(sum(logprobs) / len(logprobs))  # ≈ 0.83

这表示:模型整体上“约有 83% 的把握”认为它的输出是合理的。

三、工程上的用途

  1. 答案可靠性判定(RAG / 多Agent 系统)

在知识检索、问答系统(如你在做的 yifa_rag 或 knowledge_base_service)中:
• 模型输出的每句话都可以计算置信度;
• 如果置信度低(例如 <0.6),可以:
• 请求第二轮模型确认;
• 或触发 “检索增强”;
• 或让系统返回“可能不确定,请人工审核”。

这可以显著降低幻觉(hallucination)风险。

  1. 多模型投票(Ensemble 或 Reranker)

你常用的 bge-reranker、DeepSeek-Rerank 等模型,其实就利用了置信度概念。
比如两个模型输出相同答案:

模型	答案	置信度
Qwen	A	0.78
DeepSeek	A	0.88

则可加权平均置信度,用来做集成判定或 rerank。

  1. 拒答机制(拒绝低置信答案)

在法条问答、医学问诊、调解语音分析等任务中:
• 若生成答案的平均置信度低于设定阈值(例如 0.55);
• 系统可自动输出:
“该问题缺乏足够依据,请核实后再回答。”

这类机制是企业级系统必须具备的“自我保护层”。

  1. 提示词(Prompt)优化

在多轮提示词优化时,可以分析:
• 哪些 prompt 模式会导致低置信度输出;
• 哪些会提升模型置信度(例如结构化问题、带上下文的提问)。

通过统计,可以自动调整提示词模板,提高整体性能。

四、置信度与温度(temperature)的关系

在调用参数中:

{
  "temperature": 0.7
}
•	低温度(0.2–0.5) → 输出更确定,置信度更集中;
•	高温度(>0.8) → 输出更随机,置信度更分散。

换句话说:

温度控制“模型信心的分布”,而置信度反映“模型信心的值”。

工程实践中,你可以用温度 + 置信度 联合控制生成质量:
• 对于事实类任务(如法律条文问答):温度低,置信度阈值高;
• 对于创意类任务(如生成教学网页):温度高,置信度阈值可宽松。

五、实战案例(结合你的系统)

你在部署的 knowledge_base_service(法律检索问答系统)中可以这样集成置信度机制:

response = llm.generate(prompt, logprobs=True)
tokens = response['tokens']
# 计算平均置信度
avg_conf = sum(math.exp(t['logprob']) for t in tokens) / len(tokens)

if avg_conf < 0.65:
    return "⚠️ 模型对此答案信心不足,请人工审核。"
else:
    return response['text']

配合前端显示一个信心条:

🟩🟩🟩🟨⬜ 置信度:0.78

六、总结对比表

请添加图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值