AI 测试 0 基础入门:从 LLM 到 RAG 到评测
AI 测试 0 基础入门:从 LLM 到 RAG 到评测
目标读者:有传统测试经验、想转 AI 测试的工程师。
读完 + 做完练习,你能看懂前面那套 ai-eval-demo,也能在面试里把 LLM / RAG / Agent / 评测 讲清楚。
每章都有练习题,答案直接放在题后。
第 0 章:先建立一张地图(5 分钟)
AI 测试到底在测什么?用你最熟的传统测试做对照:
| 传统测试 | AI 测试 | 说明 |
| 被测系统:接口 / 页面 | 被测系统:大模型(LLM) | 输入一段文字,输出一段文字 |
| 测试用例 | 评测集 | 一组「问题 + 标准答案 / 打分标准」 |
| 断言 assert | 评分器 | 判断答案对不对 / 好不好的标准 |
| 测试报告 | 指标 | 汇总成可对比的数字(准确率 / 忠实度 / 成功率) |
核心区别只有一句话:
- 传统测试是「对错确定」——1+1 一定等于 2,输入 x 必得 y。
- AI 是「概率正确」——同一个问题问两次答案可能不一样,答案也没有唯一标准答案。
所以 AI 测试的目标变了:不是测「能不能跑通」,而是测 答得对不对、有没有编、稳不稳定、安不安全。
下面三个词,是 AI 测试里最基础的三个词:LLM、RAG、Agent。
第 1 章:LLM —— 大语言模型
一句话理解
LLM(Large Language Model,大语言模型)就是 ChatGPT、DeepSeek、通义千问、文心一言这类东西。你给它一段文字,它接着往下「续写」一段文字。
它的本质(关键!)
LLM 本质上只做一件事:预测「下一个词最可能是什么」。
它读了几万亿字的资料,学会了「当上文是『今天天气真』时,下一个字大概率是『好』」。所以你问它问题,它其实是在续写一段看起来最合理的话,而不是「从一个数据库里查正确答案」。
这个本质带来两个后果,是你面试必答的:
- 它是概率性的:同一个问题,答案每次都可能不一样(因为每次都在「掷骰子」选下一个词)。
- 它会幻觉:它追求的是「说得像人话、读起来通顺」,不是「说事实」。所以它会一本正经地编造不存在的公司、不存在的 API、不存在的引用。这就叫幻觉(Hallucination)。
一个词:Prompt(提示词)
你喂给模型的那段输入,就叫 prompt,它决定了模型往哪个方向答。
差 prompt:写个测试用例
好 prompt:你是资深测试工程师。针对「用户登录」功能,用等价类 + 边界值
各设计 5 条测试用例,用表格输出,包含:编号 / 输入 / 预期 / 覆盖点。
类比:写 prompt ≈ 写测试用例的「前置条件 + 预期结果」。写得越具体,模型越知道你要什么。
练习题(第 1 章)
- LLM 的本质是在做什么?(用自己的话)
- 什么叫「幻觉」?它为什么会产生?
- 为什么同一个问题问 LLM 两次,答案可能不一样?
参考答案
- 预测「下一个词最可能是什么」,本质是续写一段最合理的话,不是在查数据库里的标准答案。
- 模型编造出没有事实依据的内容。因为它训练目标是「读起来像人话」,不是「说事实」。
- 因为输出是概率采样的(每次掷骰子选词),不是确定性计算。
第 2 章:RAG —— 检索增强生成
为什么需要 RAG(痛点)
LLM 有一个致命短板:它训练完就「封存」了。
- 不知道你公司的私有数据(内部文档、订单系统)
- 不知道训练截止日期之后的新消息
- 你也不能把几百页资料全塞进 prompt(又贵又慢还塞不下)
怎么办?RAG。
一句话理解
RAG(Retrieval-Augmented Generation,检索增强生成)= 先查资料,再回答。
类比开卷考试:
- 不 RAG 的模型 = 闭卷考试,只能凭记忆(记忆还不可靠,会编)
- RAG 的模型 = 开卷考试,先翻书找到相关页,再照着书答
它的两段结构(重点!)
你的问题
│
▼
① 检索(Retrieval):从一个「知识库 / 文档库」里搜出最相关的几段文字
│
▼
② 生成(Generation):把「你的问题 + 检索到的文字」一起喂给 LLM,让它基于资料回答
│
▼
最终答案(并告诉用户「我参考了哪几段」,可溯源)
为什么这个结构这么重要:因为评测也要跟着拆成两段——
- 检索段可能错:找错文档(该查「退款政策」却查了「团建安排」)
- 生成段可能错:文档找对了,但模型编了文档里没有的内容(幻觉)
这两类错,修复手段完全不同:检索错 → 优化检索器 / 切分方式;生成错 → 优化 prompt / 换更强的模型。
练习题(第 2 章)
- 用一句话解释 RAG。
- RAG 分成哪两段?
- 判断下面两个失败,分别属于「检索错」还是「生成错」:
-
- A. 用户问年假,系统检索出了「团建安排」文档,答案却恰好是对的
- B. 系统检索对了「7 天退款」文档,却回答「可 30 天退款」
参考答案
- 先检索相关文档,再让模型基于文档生成答案(开卷考试)。
- 检索(Retrieval)+ 生成(Generation)。
- A 是检索错(找错文档),B 是生成错(编造内容 / 幻觉)。
第 3 章:Agent —— 智能体
一句话理解
Agent(智能体)是 LLM 的「升级形态」:不只是回答问题,而是能自己动手完成一个任务。
它多了一个能力:调用工具(Tool)
- 普通 LLM:你问啥它答啥,只能「说」。
- Agent:能「做」——它会自己决定「我该调用哪个工具」,拿到结果再决定下一步,直到任务完成。
举例,你说「帮我查一下北京天气,如果下雨就提醒张三带伞」:
- Agent 会:① 调
get_weather工具查天气 → ② 发现下雨 → ③ 调send_message工具给张三发提醒
为什么要单独评测 Agent
因为 Agent 的失败点变多了:
- 任务没完成(端到端失败):最后那件事没办成
- 用错工具:该发邮件却去查天气了
- 中间步骤乱:绕了十圈才完成,或者陷入死循环
所以 Agent 评测 = 看 端到端任务成没成 + 中间步骤(工具)对不对。
练习题(第 3 章)
- Agent 和普通 LLM 的核心区别是什么?
- Agent 评测通常看哪两个维度?
参考答案
- Agent 能自主调用工具、多步完成一个任务,不只是单轮问答。
- 端到端任务成功率 + 工具调用正确率(中间步骤对不对)。
第 4 章:AI 评测 —— 到底评什么、怎么评
这是面试的重头戏,也是你前面那套 demo 在做的事。
4.1 评测三件套(务必背下来)
任何一个 AI 评测,都逃不开这三样:
| 三件套 | 传统测试对应 | 作用 |
| 评测集(Dataset) | 测试用例集 | 一组「问题 + 标准答案 + 打分标准」 |
| 评分器(Judge) | 断言 assert | 判断一条答案对不对 / 好不好 |
| 指标(Metrics) | 测试报告 | 汇总成可对比的数字 |
4.2 评分器怎么判断「好不好」?
传统测试的断言是 assert result == 200,是确定的。AI 答案没有唯一标准,所以评分器分两种:
- 规则评分:关键词命中、长度、格式等硬规则。快、稳定、免费,但只能评「表面对不对」。
- LLM-as-Judge(用模型当裁判):拿一个(更强的)模型,让它读「标准答案 + 候选答案」,输出「对不对 + 打分 + 原因」。能评语义,但慢、花钱、有偏置。
LLM-as-Judge 的偏置(面试加分点,主动提):
- 位置偏置:比较两个答案 A/B 时,裁判倾向于更喜欢排前面的那个 → 交换顺序评两次取平均
- 长度偏置:倾向于认为「更长的答案更好」
- 自我偏好:模型更喜欢自己家族模型生成的答案
4.3 AI 评测的四大类(对应你的 demo)
| 类别 | 评什么 | 核心指标 |
| 通用能力评测 | 模型问答对不对 | 准确率 |
| RAG 评测 | 检索准不准 + 生成忠不忠实 | 检索命中率、忠实度(抓幻觉) |
| Agent 评测 | 任务完成没 + 工具用对没 | 任务成功率、工具正确率 |
| 安全红队 | 会不会被越狱 / 注入 | 攻击成功率(越低越好) |
4.4 几个必背指标
- 准确率:答对的比例
- 忠实度(Faithfulness):答案是否忠于检索文档,有没有编(专抓幻觉)
- 检索命中率(Recall / Hit):正确文档有没有被检索出来
练习题(第 4 章)
- 评测三件套是哪三样?
- LLM-as-Judge 有哪三种常见偏置?
- RAG 评测为什么要把检索和生成拆开评?
参考答案
- 评测集 + 评分器 + 指标。
- 位置偏置、长度偏置、自我偏好。
- 因为检索错和生成错是两类不同的问题,修复手段不同,混在一起无法定位。
第 5 章:回到你手上的那套 demo
你目录下 ai-eval-demo/ 的三个脚本,就是上面四章的落地:
| 脚本 | 对应章节 | 你跑出来的结果 |
|
| 通用能力评测(4.3) | 规则评分 + LLM 裁判,准确率 75% |
|
| RAG 评测(第 2 章 + 4.3) | 检索命中率 75%、忠实度 50% |
|
| Agent 评测(第 3 章 + 4.3) | 任务成功率 60%、工具正确率 60% |
建议的阅读顺序:先看这份教程 → 再看 ai-eval-demo/README.md → 最后逐行读三个 .py(都有注释)。你会发现代码里每一个函数都能对应上教程里的一个概念。
第 6 章(进阶):RAG 内部到底怎么工作——切分 / embedding / 向量检索
第 2 章说 RAG 是「先查资料再回答」,但「查资料」这步内部其实是一套流水线。搞懂它,你才能说清「RAG 优化往哪调」,也才知道每个环节「测什么」。
6.1 RAG 的完整流水线(两张图记住)
离线入库(准备阶段,上线前做一次)
原始文档(500 页手册 / 公司 wiki)
│
▼
切分 chunk:把长文档切成一小块一小块(比如每块 500 字)
│
▼
embedding 向量化:把每块文字变成一串数字(向量)
│
▼
存进向量数据库(Milvus / FAISS / pgvector 等)
在线查询(用户提问时,实时跑)
用户问题
│
▼
embedding:把问题也变成一串数字(向量)
│
▼
向量检索:在向量库里找「距离最近」的 top-k 块
│
▼
拼 prompt:「问题 + 检索到的几块」一起喂给 LLM
│
▼
LLM 生成答案
6.2 切分 chunk:为什么要切
- 文档太长(一本书),既不能整本塞进 prompt(太贵太慢还塞不下),检索时也搜不到「哪一段」相关。
- 所以切成小块,检索能精确到「段」。
- 切分是调优点:切太碎会切断语义(一句话被劈成两半);切太大又会混进无关内容。
6.3 embedding:文字变数字,语义近 = 距离近
embedding(向量化)就是把一段文字变成一串数字(向量),比如 1536 个数字。
神奇之处在于:语义相近的两句话,变出来的向量在数学上「距离很近」。
- 「今天天气真好」 和 「外面阳光明媚」 → 向量距离近
- 「今天天气真好」 和 「怎么退款」 → 向量距离远
为什么这很重要:它能搜到「换个说法」的内容。传统关键词匹配搜「退款政策」,搜不到写着「无理由退货」的段落;但向量能,因为它懂语义。
6.4 向量检索:找「距离最近」的几块
- 用户问题也 embedding 成向量
- 在向量库里算「谁跟问题向量距离最近」,取 top-k(前几个)最相关的 chunk
- 这个 top-k 取多少,就是调优点:取少了漏答案,取多了塞进无关信息干扰模型
练习题(第 6 章)
- RAG 离线入库要经过哪三步?
- embedding 的核心作用是什么?
- 「切分 chunk」的粒度太碎或太大分别有什么问题?
参考答案
- 切分 chunk → embedding 向量化 → 存进向量数据库。
- 把文字变成向量,让「语义相近」的两段文字在数学上「距离近」,从而实现语义检索(能搜到换个说法的内容)。
- 太碎会切断语义(一句话被劈开),太大会混进无关内容干扰检索和生成。
第 7 章(进阶):RAG 每个环节「测什么」(AI 测试工程师视角)
面试官真正想听的不是「RAG 是什么」,而是「如果让你测一个 RAG 系统,你测哪几个点」。下面这张表背下来:
| 环节 | 可测的点 | 典型指标 |
| 切分 chunk | 切分粒度是否切断语义、块大小是否合适 | 检索命中率对比 |
| embedding | 不同 embedding 模型效果差异 | 检索命中率 |
| 向量检索 | top-k 取值、相似度阈值设多少 | 检索命中率 / 召回率 |
| 生成 | prompt 写法、温度参数、是否忠实文档 | 忠实度(抓幻觉) |
一句话总结:检索段测「找得准不准」,生成段测「答得忠不忠实」,两边各自调、各自测——这就是第 2 章「拆开评」的落地。
你手上 02_rag_eval.py 里那两个指标,正好对应这张表的后两行:检索命中率(检索段)+ 忠实度(生成段)。
练习题(第 7 章)
- 如果 RAG 系统「检索命中率很低」,你应该优先排查哪个环节?
- 如果「忠实度很低(老是编造)」,应该优先排查哪个环节?
参考答案
- 优先排查检索段:切分粒度、embedding 模型、top-k 取值、相似度阈值。
- 优先排查生成段:prompt 有没有约束「只根据给定资料回答」、温度是否太高、模型是否太弱。
第 8 章(进阶):混合检索——向量检索的短板谁来补
第 6 章说向量检索懂语义,但面试官常追问一句:「向量检索有什么缺点?」答案是——它对「精确匹配」不敏感。
8.1 向量检索的短板
向量检索擅长「换个说法也能搜到」,但它会模糊掉精确的东西:
| 例子 | 问题 |
| 产品型号「iPhone 15 Pro」 vs 「iPhone 16」 | 语义上都是手机,向量距离很近,但用户要的是精确型号 |
| 工单号「BUG-1024」 | 向量很难精确锁定这一串字符 |
| 版本号「2.3.1」、金额、API 名 | 数字和代码的「语义」很弱,向量区分不好 |
8.2 关键词检索(BM25)正好相反
关键词检索(传统搜索引擎用的 BM25 / TF-IDF):
- ✅ 精确匹配强:「BUG-1024」就能精确命中「BUG-1024」
- ❌ 不懂语义:搜「无理由退货」搜不到写着「7 天退款」的段落
两者短板正好互补。
8.3 混合检索 = 两个一起用
用户问题
│
├── 向量检索 → 结果 A(懂语义)
└── 关键词检索(BM25) → 结果 B(懂精确词)
│
▼
融合重排(常见用 RRF 倒数排名融合)→ 合并去重、重新排序
│
▼
top-k 结果 → 拼进 prompt → LLM 生成
- RRF(Reciprocal Rank Fusion,倒数排名融合):不看分数只看排名,把「向量里排第 1」和「关键词里排第 3」融合成一个综合排名,简单又稳。
8.4 测试视角(这是面试加分点)
混合检索带来了新的可测点:
- 融合算法:RRF 参数、两路权重怎么设
- 精确匹配用例:专门建一批「型号 / 工单号 / 版本号」用例,验证关键词检索兜住了向量检索的短板
- 回归对比:单独用向量检索 vs 混合检索,对比命中率提升多少
练习题(第 8 章)
- 向量检索的核心缺点是什么?举一个例子。
- 混合检索是哪两种检索结合?它们各自负责什么?
- 给你测一个上了混合检索的 RAG 系统,你会专门补哪一类用例?
参考答案
- 对精确匹配不敏感,会模糊掉专有名词/数字。例:「iPhone 15」和「iPhone 16」语义近、向量距离近,但用户要的是精确型号。
- 向量检索(懂语义)+ 关键词检索 BM25(懂精确词),两者短板互补,再融合重排。
- 专门补「型号 / 工单号 / 版本号」这类精确匹配用例,验证关键词检索兜住了向量检索的短板。
附录:面试 30 秒版自我介绍(AI 部分)
"我理解 AI 测试和传统测试最大的区别是——传统测「对错确定」,AI 测「概率正确」。所以我重点补了三块:通用能力评测用「评测集 + 评分器 + 指标」三件套,RAG 评测分检索和生成两段抓幻觉,Agent 评测看任务成功率和工具正确率。并动手写了三个能跑的评测 demo,用 LLM-as-Judge 做语义评分,也清楚它的位置偏置和长度偏置。"
更多推荐


所有评论(0)