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 本质上只做一件事:预测「下一个词最可能是什么」

它读了几万亿字的资料,学会了「当上文是『今天天气真』时,下一个字大概率是『好』」。所以你问它问题,它其实是在续写一段看起来最合理的话,而不是「从一个数据库里查正确答案」。

这个本质带来两个后果,是你面试必答的:

  1. 它是概率性的:同一个问题,答案每次都可能不一样(因为每次都在「掷骰子」选下一个词)。
  2. 它会幻觉:它追求的是「说得像人话、读起来通顺」,不是「说事实」。所以它会一本正经地编造不存在的公司、不存在的 API、不存在的引用。这就叫幻觉(Hallucination)

一个词:Prompt(提示词)

你喂给模型的那段输入,就叫 prompt,它决定了模型往哪个方向答。

差 prompt:写个测试用例
好 prompt:你是资深测试工程师。针对「用户登录」功能,用等价类 + 边界值
          各设计 5 条测试用例,用表格输出,包含:编号 / 输入 / 预期 / 覆盖点。

类比:写 prompt ≈ 写测试用例的「前置条件 + 预期结果」。写得越具体,模型越知道你要什么。

练习题(第 1 章)

  1. LLM 的本质是在做什么?(用自己的话)
  2. 什么叫「幻觉」?它为什么会产生?
  3. 为什么同一个问题问 LLM 两次,答案可能不一样?

参考答案

  1. 预测「下一个词最可能是什么」,本质是续写一段最合理的话,不是在查数据库里的标准答案。
  2. 模型编造出没有事实依据的内容。因为它训练目标是「读起来像人话」,不是「说事实」。
  3. 因为输出是概率采样的(每次掷骰子选词),不是确定性计算。

第 2 章:RAG —— 检索增强生成

为什么需要 RAG(痛点)

LLM 有一个致命短板:它训练完就「封存」了

  • 不知道你公司的私有数据(内部文档、订单系统)
  • 不知道训练截止日期之后的新消息
  • 你也不能把几百页资料全塞进 prompt(又贵又慢还塞不下)

怎么办?RAG

一句话理解

RAG(Retrieval-Augmented Generation,检索增强生成)= 先查资料,再回答

类比开卷考试

  • 不 RAG 的模型 = 闭卷考试,只能凭记忆(记忆还不可靠,会编)
  • RAG 的模型 = 开卷考试,先翻书找到相关页,再照着书答

它的两段结构(重点!)

你的问题
   │
   ▼
① 检索(Retrieval):从一个「知识库 / 文档库」里搜出最相关的几段文字
   │
   ▼
② 生成(Generation):把「你的问题 + 检索到的文字」一起喂给 LLM,让它基于资料回答
   │
   ▼
最终答案(并告诉用户「我参考了哪几段」,可溯源)

为什么这个结构这么重要:因为评测也要跟着拆成两段——

  • 检索段可能错:找错文档(该查「退款政策」却查了「团建安排」)
  • 生成段可能错:文档找对了,但模型编了文档里没有的内容(幻觉)

这两类错,修复手段完全不同:检索错 → 优化检索器 / 切分方式;生成错 → 优化 prompt / 换更强的模型。

练习题(第 2 章)

  1. 用一句话解释 RAG。
  2. RAG 分成哪两段?
  3. 判断下面两个失败,分别属于「检索错」还是「生成错」:
    • A. 用户问年假,系统检索出了「团建安排」文档,答案却恰好是对的
    • B. 系统检索对了「7 天退款」文档,却回答「可 30 天退款」

参考答案

  1. 先检索相关文档,再让模型基于文档生成答案(开卷考试)。
  2. 检索(Retrieval)+ 生成(Generation)。
  3. A 是检索错(找错文档),B 是生成错(编造内容 / 幻觉)。

第 3 章:Agent —— 智能体

一句话理解

Agent(智能体)是 LLM 的「升级形态」:不只是回答问题,而是能自己动手完成一个任务

它多了一个能力:调用工具(Tool)

  • 普通 LLM:你问啥它答啥,只能「说」。
  • Agent:能「做」——它会自己决定「我该调用哪个工具」,拿到结果再决定下一步,直到任务完成。

举例,你说「帮我查一下北京天气,如果下雨就提醒张三带伞」:

  • Agent 会:① 调 get_weather 工具查天气 → ② 发现下雨 → ③ 调 send_message 工具给张三发提醒

为什么要单独评测 Agent

因为 Agent 的失败点变多了:

  1. 任务没完成(端到端失败):最后那件事没办成
  2. 用错工具:该发邮件却去查天气了
  3. 中间步骤乱:绕了十圈才完成,或者陷入死循环

所以 Agent 评测 = 看 端到端任务成没成 + 中间步骤(工具)对不对

练习题(第 3 章)

  1. Agent 和普通 LLM 的核心区别是什么?
  2. Agent 评测通常看哪两个维度?

参考答案

  1. Agent 能自主调用工具、多步完成一个任务,不只是单轮问答。
  2. 端到端任务成功率 + 工具调用正确率(中间步骤对不对)。

第 4 章:AI 评测 —— 到底评什么、怎么评

这是面试的重头戏,也是你前面那套 demo 在做的事。

4.1 评测三件套(务必背下来)

任何一个 AI 评测,都逃不开这三样:

三件套

传统测试对应

作用

评测集(Dataset)

测试用例集

一组「问题 + 标准答案 + 打分标准」

评分器(Judge)

断言 assert

判断一条答案对不对 / 好不好

指标(Metrics)

测试报告

汇总成可对比的数字

4.2 评分器怎么判断「好不好」?

传统测试的断言是 assert result == 200,是确定的。AI 答案没有唯一标准,所以评分器分两种:

  1. 规则评分:关键词命中、长度、格式等硬规则。快、稳定、免费,但只能评「表面对不对」。
  2. LLM-as-Judge(用模型当裁判):拿一个(更强的)模型,让它读「标准答案 + 候选答案」,输出「对不对 + 打分 + 原因」。能评语义,但慢、花钱、有偏置。

LLM-as-Judge 的偏置(面试加分点,主动提):

  • 位置偏置:比较两个答案 A/B 时,裁判倾向于更喜欢排前面的那个 → 交换顺序评两次取平均
  • 长度偏置:倾向于认为「更长的答案更好」
  • 自我偏好:模型更喜欢自己家族模型生成的答案

4.3 AI 评测的四大类(对应你的 demo)

类别

评什么

核心指标

通用能力评测

模型问答对不对

准确率

RAG 评测

检索准不准 + 生成忠不忠实

检索命中率、忠实度(抓幻觉)

Agent 评测

任务完成没 + 工具用对没

任务成功率、工具正确率

安全红队

会不会被越狱 / 注入

攻击成功率(越低越好)

4.4 几个必背指标

  • 准确率:答对的比例
  • 忠实度(Faithfulness):答案是否忠于检索文档,有没有编(专抓幻觉)
  • 检索命中率(Recall / Hit):正确文档有没有被检索出来

练习题(第 4 章)

  1. 评测三件套是哪三样?
  2. LLM-as-Judge 有哪三种常见偏置?
  3. RAG 评测为什么要把检索和生成拆开评?

参考答案

  1. 评测集 + 评分器 + 指标。
  2. 位置偏置、长度偏置、自我偏好。
  3. 因为检索错和生成错是两类不同的问题,修复手段不同,混在一起无法定位。

第 5 章:回到你手上的那套 demo

你目录下 ai-eval-demo/ 的三个脚本,就是上面四章的落地:

脚本

对应章节

你跑出来的结果

01_basic_eval.py

通用能力评测(4.3)

规则评分 + LLM 裁判,准确率 75%

02_rag_eval.py

RAG 评测(第 2 章 + 4.3)

检索命中率 75%、忠实度 50%

03_agent_eval.py

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 章)

  1. RAG 离线入库要经过哪三步?
  2. embedding 的核心作用是什么?
  3. 「切分 chunk」的粒度太碎或太大分别有什么问题?

参考答案

  1. 切分 chunk → embedding 向量化 → 存进向量数据库。
  2. 把文字变成向量,让「语义相近」的两段文字在数学上「距离近」,从而实现语义检索(能搜到换个说法的内容)。
  3. 太碎会切断语义(一句话被劈开),太大会混进无关内容干扰检索和生成。

第 7 章(进阶):RAG 每个环节「测什么」(AI 测试工程师视角)

面试官真正想听的不是「RAG 是什么」,而是「如果让你测一个 RAG 系统,你测哪几个点」。下面这张表背下来:

环节

可测的点

典型指标

切分 chunk

切分粒度是否切断语义、块大小是否合适

检索命中率对比

embedding

不同 embedding 模型效果差异

检索命中率

向量检索

top-k 取值、相似度阈值设多少

检索命中率 / 召回率

生成

prompt 写法、温度参数、是否忠实文档

忠实度(抓幻觉)

一句话总结:检索段测「找得准不准」,生成段测「答得忠不忠实」,两边各自调、各自测——这就是第 2 章「拆开评」的落地。

你手上 02_rag_eval.py 里那两个指标,正好对应这张表的后两行:检索命中率(检索段)+ 忠实度(生成段)。

练习题(第 7 章)

  1. 如果 RAG 系统「检索命中率很低」,你应该优先排查哪个环节?
  2. 如果「忠实度很低(老是编造)」,应该优先排查哪个环节?

参考答案

  1. 优先排查检索段:切分粒度、embedding 模型、top-k 取值、相似度阈值。
  2. 优先排查生成段: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 测试视角(这是面试加分点)

混合检索带来了新的可测点

  1. 融合算法:RRF 参数、两路权重怎么设
  2. 精确匹配用例:专门建一批「型号 / 工单号 / 版本号」用例,验证关键词检索兜住了向量检索的短板
  3. 回归对比:单独用向量检索 vs 混合检索,对比命中率提升多少

练习题(第 8 章)

  1. 向量检索的核心缺点是什么?举一个例子。
  2. 混合检索是哪两种检索结合?它们各自负责什么?
  3. 给你测一个上了混合检索的 RAG 系统,你会专门补哪一类用例?

参考答案

  1. 对精确匹配不敏感,会模糊掉专有名词/数字。例:「iPhone 15」和「iPhone 16」语义近、向量距离近,但用户要的是精确型号。
  2. 向量检索(懂语义)+ 关键词检索 BM25(懂精确词),两者短板互补,再融合重排。
  3. 专门补「型号 / 工单号 / 版本号」这类精确匹配用例,验证关键词检索兜住了向量检索的短板。

附录:面试 30 秒版自我介绍(AI 部分)

"我理解 AI 测试和传统测试最大的区别是——传统测「对错确定」,AI 测「概率正确」。所以我重点补了三块:通用能力评测用「评测集 + 评分器 + 指标」三件套,RAG 评测分检索和生成两段抓幻觉,Agent 评测看任务成功率和工具正确率。并动手写了三个能跑的评测 demo,用 LLM-as-Judge 做语义评分,也清楚它的位置偏置和长度偏置。"

Logo

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

更多推荐