多模态与模型评测:拓展 AI 的边界
多模态与模型评测:拓展 AI 的边界
AI 核心技能系列 · 第 11 篇
导语
大模型不只是"文字模型"了——它能看图、听声音、理解视频。同时,一个经常被忽略但极其重要的问题是:怎么判断一个 AI 系统到底好不好用?
"感觉还行"不是评测。没有量化的评测,就没有优化方向,就不知道上线后会不会翻车。
这篇文章一次覆盖两个进阶主题:多模态能力和模型评测体系。
Part I:多模态
一、多模态大模型:从文字到万物
1.1 什么是多模态
多模态(Multimodal)= 模型能处理多种类型的输入和输出:文本、图像、音频、视频。
| 模型 | 文本 | 图像理解 | 图像生成 | 语音 | 视频 |
|---|---|---|---|---|---|
| GPT-4o | ✅ | ✅ | ✅(DALL·E) | ✅ | ✅ |
| Claude Opus 4.6 | ✅ | ✅ | ❌ | ❌ | ❌ |
| Gemini 2.5 Pro | ✅ | ✅ | ✅(Imagen) | ✅ | ✅ |
| Llama 4 | ✅ | ✅ | ❌ | ❌ | ❌ |
1.2 为什么多模态重要
真实世界的信息不只是文字——合同是 PDF 扫描件、Bug 是截图、会议是录音、产品是设计稿。一个只能处理文字的 AI,在很多场景下是"残缺"的。
二、视觉理解:图像与文档
2.1 主流视觉能力
| 能力 | 说明 | 实际应用 |
|---|---|---|
| 图片描述 | 理解图片内容并文字描述 | 无障碍、内容审核 |
| OCR | 识别图片中的文字 | 票据识别、文档数字化 |
| 图表解读 | 理解数据图表的含义 | 数据分析、报告解读 |
| 文档理解 | 解析 PDF/扫描件的结构和内容 | 合同审查、表格提取 |
| 设计稿解读 | 理解 UI 设计稿 | 设计稿转代码 |
2.2 代码示例
from openai import OpenAI
import base64
client = OpenAI()
# 方式一:传入图片 URL
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片中有什么?请详细描述。"},
{
"type": "image_url",
"image_url": {"url": "https://example.com/photo.jpg"}
}
]
}
]
)
# 方式二:传入本地图片(Base64)
def encode_image(image_path):
with open(image_path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
image_data = encode_image("receipt.jpg")
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "请提取这张发票中的以下信息:发票号码、金额、日期、开票方。以 JSON 格式输出。"},
{
"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{image_data}"}
}
]
}
],
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)
三、语音与音频处理
3.1 核心能力
| 能力 | 代表工具 | 用途 |
|---|---|---|
| 语音识别 (ASR) | Whisper, Gemini | 语音转文字 |
| 语音合成 (TTS) | OpenAI TTS, ElevenLabs | 文字转语音 |
| 实时对话 | GPT-4o Realtime API | 语音实时交互 |
3.2 语音处理流水线
from openai import OpenAI
client = OpenAI()
# 1. 语音转文字 (ASR)
with open("meeting_recording.mp3", "rb") as audio_file:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
language="zh",
response_format="text"
)
print(f"会议记录: {transcript}")
# 2. 用 LLM 处理文本(总结会议)
summary = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "你是一个会议助手,请总结会议要点。"},
{"role": "user", "content": f"以下是会议录音的文字稿,请提取关键决策和待办事项:\n\n{transcript}"}
]
)
# 3. 文字转语音 (TTS)
tts_response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input=summary.choices[0].message.content
)
tts_response.stream_to_file("meeting_summary.mp3")
Part II:模型评测
四、为什么评测很重要
"感觉还行"不等于"真的好用"。
没有评测的 AI 项目:
"我觉得回答挺好的" → 上线 → 用户投诉 → "怎么回事?" → 无从排查
有评测的 AI 项目:
"Faithfulness 0.85, Relevancy 0.78" → 针对性优化 → "优化后 0.92, 0.89" → 上线
评测的三个层次:
| 层次 | 评什么 | 方法 | 负责人 |
|---|---|---|---|
| 模型层 | 模型本身的基础能力 | Benchmark(MMLU 等) | 模型团队 |
| 应用层 | 模型在特定任务的表现 | 自定义评测集 | AI 工程师 |
| 业务层 | 对业务指标的影响 | A/B 测试、用户满意度 | 产品团队 |
五、评测体系设计
5.1 基准测试(Benchmark)
| Benchmark | 评测内容 | 指标 |
|---|---|---|
| MMLU | 57 个学科知识 | 准确率 |
| HumanEval | 代码生成 | Pass@K |
| GSM8K | 数学推理 | 准确率 |
| MT-Bench | 多轮对话质量 | 1-10 评分 |
| LMSYS Chatbot Arena | 综合用户偏好 | Elo 评分 |
5.2 LLM-as-Judge(用 LLM 评 LLM)
用一个强模型(如 GPT-4o)来评判另一个模型的输出质量。
def llm_judge(question, answer, reference=None):
"""用 GPT-4o 作为裁判评估回答质量"""
judge_prompt = f"""请评估以下回答的质量,按 1-5 分打分。
评分标准:
1 分:完全错误或无关
2 分:部分正确但有重大错误
3 分:基本正确但不完整
4 分:正确且完整
5 分:优秀,超出预期
问题:{question}
{"参考答案:" + reference if reference else ""}
待评估回答:{answer}
请输出 JSON:{{"score": <1-5>, "reason": "<评分理由>"}}"""
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": judge_prompt}],
response_format={"type": "json_object"}
)
return json.loads(response.choices[0].message.content)
5.3 评测方法对比
| 方法 | 成本 | 可靠性 | 适用场景 |
|---|---|---|---|
| Benchmark | 低 | 高(标准化) | 模型基础能力对比 |
| LLM-as-Judge | 中 | 中高 | 开放式生成任务 |
| 人工评估 | 高 | 最高 | 最终验收 |
| 自动指标 | 低 | 中(任务依赖) | 分类、抽取等有标准答案的任务 |
六、构建自己的评测管线
import json
from dataclasses import dataclass
from typing import List
@dataclass
class EvalCase:
question: str
expected: str
category: str
@dataclass
class EvalResult:
question: str
expected: str
actual: str
score: float
reason: str
def build_eval_pipeline(model_fn, eval_cases: List[EvalCase]) -> dict:
"""构建评测管线"""
results = []
for case in eval_cases:
# 1. 获取模型输出
actual = model_fn(case.question)
# 2. 用 LLM-as-Judge 评分
judgment = llm_judge(case.question, actual, case.expected)
results.append(EvalResult(
question=case.question,
expected=case.expected,
actual=actual,
score=judgment["score"],
reason=judgment["reason"]
))
# 3. 汇总统计
avg_score = sum(r.score for r in results) / len(results)
by_category = {}
for r in results:
cat = next(c.category for c in eval_cases if c.question == r.question)
by_category.setdefault(cat, []).append(r.score)
category_scores = {
cat: sum(scores)/len(scores)
for cat, scores in by_category.items()
}
return {
"overall_score": avg_score,
"category_scores": category_scores,
"total_cases": len(results),
"details": results
}
# 使用示例
eval_cases = [
EvalCase("什么是 RAG?", "RAG 是检索增强生成...", "基础概念"),
EvalCase("LoRA 的原理?", "LoRA 通过低秩矩阵分解...", "技术深度"),
# ...更多测试用例
]
report = build_eval_pipeline(my_model_fn, eval_cases)
print(f"总体得分: {report['overall_score']:.2f}")
for cat, score in report['category_scores'].items():
print(f" {cat}: {score:.2f}")
七、RAG 评测专题
RAG 系统有特殊的评测维度——不仅要评生成质量,还要评检索质量:
| 指标 | 含义 | 好的范围 |
|---|---|---|
| Context Precision | 检索到的文档中,真正相关的比例 | > 0.8 |
| Context Recall | 所有相关文档中,被检索到的比例 | > 0.7 |
| Faithfulness | 回答是否忠实于检索到的文档(不编造) | > 0.9 |
| Answer Relevancy | 回答是否回答了用户的问题 | > 0.8 |
使用 RAGAS 评测
from ragas import evaluate
from ragas.metrics import (
faithfulness, answer_relevancy,
context_precision, context_recall
)
from datasets import Dataset
# 准备评测数据
eval_data = {
"question": ["公司的年假政策是什么?", "如何申请报销?"],
"answer": ["入职满一年后享有5天年假...", "填写报销单并提交..."],
"contexts": [
["员工入职满一年后享有5天年假,满3年10天..."],
["报销流程:1.填写报销单 2.主管审批..."]
],
"ground_truth": ["入职满一年5天,满三年10天...", "填写报销单,主管审批后..."]
}
dataset = Dataset.from_dict(eval_data)
# 执行评测
results = evaluate(
dataset,
metrics=[faithfulness, answer_relevancy, context_precision, context_recall]
)
print(results)
# {'faithfulness': 0.92, 'answer_relevancy': 0.88,
# 'context_precision': 0.85, 'context_recall': 0.78}
八、职业视角
| 方向 | 价值 |
|---|---|
| 多模态 | 差异化竞争力——大部分人只会处理文本 |
| 评测能力 | 企业中极度稀缺——很多团队"凭感觉"做 AI,缺少评测体系 |
面试高频问题:
- 怎么评估一个 RAG 系统的效果?(Faithfulness + Relevancy + Context Precision/Recall)
- LLM-as-Judge 有什么问题?(位置偏差、自我偏好、长度偏差)
- 你会怎么为一个新的 AI 功能设计评测方案?(确定评测维度→构建测试集→选择评测方法→建立基线→持续回归)
总结
多模态:
- GPT-4o/Gemini 已原生支持视觉+语音,Claude 支持视觉
- 视觉理解的典型应用:OCR、文档解析、图表分析、设计稿转代码
- 语音流水线:ASR(Whisper) → LLM 处理 → TTS
模型评测:
- 三个层次:模型层(Benchmark)→ 应用层(自定义评测)→ 业务层(A/B 测试)
- LLM-as-Judge 是开放式任务的主流评测方法
- RAG 评测四维度:Context Precision/Recall + Faithfulness + Answer Relevancy
- 评测不是一次性的——需要持续回归测试
本文是 AI 核心技能系列 第 11 篇,共 12 篇。上一篇:Skills 与知识系统 | 下一篇:AI 岗位全景与转行指南
关注公众号「coft」,获取完整系列更新、配套代码和学习路线图。一起交流 AI 转行经验,助力职业跃升,迈向高薪岗位。

浙公网安备 33010602011771号