当前位置: 首页 > news >正文

9 如何评估 AI 产品的效果

9 如何评估 AI 产品的效果

引子

到目前为止,我们已经学了大模型的概念、Prompt、RAG(Embedding + 向量数据库),甚至可以用它回答公司内部的问题。
但是,AI 产品到底“好不好用”? 我们需要一个标准。

这就引出了 评估(Evaluation) —— 给 AI 产品做成绩单。


一、核心概念

1. 为什么要评估?

  • 通俗解释:就像学生考试要有分数,AI 产品也需要成绩单。
  • 专业定义:评估是用一组标准化指标衡量 AI 模型或产品在特定任务上的表现。

2. 三类常见指标

  1. 质量指标

    • 准确率:答案对不对
    • 覆盖率:是否包含用户关心的要点
    • 用户满意度(主观评分)
  2. 性能指标

    • 响应时间(Latency)
    • 吞吐量(同时服务多少用户)
  3. 成本指标

    • Token 消耗(调用费用)
    • 算力消耗(GPU/CPU)

👉 质量 + 性能 + 成本 = AI 产品的三角平衡

3. 为什么 PM 必须懂评估?

  • 用数据取代“我觉得” → 决策更有说服力
  • 售前要拿数据打动客户
  • 迭代时知道改进方向

二、实践环节:构建一个迷你评测器(bge + DeepSeek R1)

我们来写一个小程序,流程如下:

  1. bge 模型:把企业文档转 Embedding,存入向量库。
  2. 用户问题:用 bge 编码 → 检索相关文档。
  3. DeepSeek R1:把问题 + 检索结果喂给 LLM → 生成答案。
  4. 评测脚本:对比答案里是否包含“关键点”。

1. 准备依赖

pip install sentence-transformers faiss-cpu openai

2. 准备测试数据(保存为 eval.jsonl

{"q": "公司的年假是多少天?", "must": ["年假", "10"]}
{"q": "报销流程是怎样的?", "must": ["申请", "报销"]}
  • q = 问题(用户的提问)
  • must = 答案必须包含的关键点(关键词列表)

3. 示例代码(保存为 eval_rag.py

import json, re, time
import faiss
import numpy as np
from sentence_transformers import SentenceTransformer
from openai import OpenAI# 1. 初始化模型
embed_model = SentenceTransformer("BAAI/bge-base-zh")
llm = OpenAI(base_url="http://127.0.0.1:11434/v1", api_key="ollama")  # DeepSeek R1 本地部署# 2. 企业文档库
docs = ["公司年假制度:每年10天年假。","公司病假制度:每年7天病假。","公司差旅报销流程:先申请,再报销。"
]# 3. 向量化并建立索引
embeddings = embed_model.encode(docs, convert_to_numpy=True, normalize_embeddings=True)
dim = embeddings.shape[1]
index = faiss.IndexFlatIP(dim)
index.add(embeddings)# 4. 定义 RAG 检索 + 生成函数
def rag_answer(query):# 向量化 queryq_emb = embed_model.encode([query], convert_to_numpy=True, normalize_embeddings=True)# 检索前2条D, I = index.search(q_emb, k=2)context = "\n".join([docs[idx] for idx in I[0]])# 调用 DeepSeek R1prompt = f"""你是一名企业助手,请仅根据以下资料回答问题:
[资料]
{context}[问题]
{query}
"""resp = llm.chat.completions.create(model="deepseek-r1",messages=[{"role":"user","content":prompt}],temperature=0.2)return resp.choices[0].message.content# 5. 评测:读取 eval.jsonl
results = []
for line in open("eval.jsonl","r",encoding="utf-8"):item = json.loads(line)q, must = item["q"], item["must"]t0 = time.time()ans = rag_answer(q)cost = time.time()-t0# 计算得分:命中的关键点数pts = sum(1 for k in must if re.search(k, ans))tot = len(must)results.append((q, pts, tot, cost, ans))# 6. 打印结果
print("Q | Score | Time | Answer")
print("-"*50)
for q, pts, tot, sec, ans in results:print(f"{q} | {pts}/{tot} | {sec:.2f}s | {ans}")

4. 运行结果(示例)

Q | Score | Time | Answer
--------------------------------------------------
公司的年假是多少天? | 2/2 | 1.24s | 公司规定年假为每年10天。
报销流程是怎样的? | 2/2 | 1.31s | 报销流程是先提交申请,然后再进行报销。

三、理解 ptstot

在代码里,我们用了两个变量来表示“模型答题得了多少分”:

  • tot = 需要检查的关键点总数

    • 例:问题“公司的年假是多少天?” → must = ["年假","10"]tot = 2
  • pts = 模型回答里实际命中的关键点数

    • 例:模型回答是“公司规定年假为每年10天。” → 命中“年假”和“10” → pts = 2

👉 pts/tot 就是一个简单的“正确率指标”。


四、产品经理思考

1. 为什么要做评估?

  • 对内:用数据代替“感觉”,统一目标。
  • 对外:展示给客户/领导时更有说服力。
  • 对迭代:每次优化后都能对比效果。

2. 在 PRD 里要写什么?

  • 功能需求:系统必须支持自动化评估

  • 非功能需求:

    • 准确率 ≥ 85%
    • 平均响应时间 < 3 秒
  • 验收标准:上线前通过评测集验证

3. 案例

  • 售前场景:演示 AI 知识库 → 提供评测结果表,增强可信度。
  • 产品迭代:上线前通过评测集 → 确保质量达标。

五、小结

今天我们学习了:

  • 评估 = AI 产品的成绩单(质量/性能/成本)。
  • 用 bge + DeepSeek R1 做了一个迷你评测器:自动跑问题 → 生成答案 → 检查关键点。
  • pts/tot 是最简单的准确率计算方法:命中的关键点 ÷ 总关键点
  • PM 角度:评估是产品迭代、客户说服、内部对齐的必备环节。


文章转载自:

http://p574DVO3.rbbzn.cn
http://CtqSrMBK.rbbzn.cn
http://ShHWvGcg.rbbzn.cn
http://lpcC5oWc.rbbzn.cn
http://fXZHQpG5.rbbzn.cn
http://Rs6G677o.rbbzn.cn
http://TrCJo476.rbbzn.cn
http://KJdruCUh.rbbzn.cn
http://EM5hadMW.rbbzn.cn
http://aAx6NYcQ.rbbzn.cn
http://qNqCLrAq.rbbzn.cn
http://U2KMU3Up.rbbzn.cn
http://QGt7fY1t.rbbzn.cn
http://JhjFMgGx.rbbzn.cn
http://sheZJXr6.rbbzn.cn
http://3rwMtTMu.rbbzn.cn
http://JTY5NWTv.rbbzn.cn
http://yOmzTv6Z.rbbzn.cn
http://NSDlzR0h.rbbzn.cn
http://CZp2sXkY.rbbzn.cn
http://xZiA0S0h.rbbzn.cn
http://STK3h770.rbbzn.cn
http://isSy2aPu.rbbzn.cn
http://xqKn4iFz.rbbzn.cn
http://dIuqhWC2.rbbzn.cn
http://prCAL7YA.rbbzn.cn
http://RcJxhS9b.rbbzn.cn
http://x2fW7zzg.rbbzn.cn
http://tvIALG2X.rbbzn.cn
http://GPWPiTmb.rbbzn.cn
http://www.dtcms.com/a/377333.html

相关文章:

  • C6.9:三极管的四种常用晶体管放大器的简述
  • C语言深度入门系列:第十一篇 - 动态内存管理与数据结构:程序世界的高效算法大师
  • FPGA雷达信号处理之:自适应门限阈值
  • 某个工程 pom.xml
  • 西门子PLC结构化编程_带前馈控制功能的位置式PID控制器
  • 【JVM】参数设置及依据
  • 老树发新芽:六西格玛培训为石油机械制造注入持久活力
  • pandas的使用(2)数据选取
  • 【数据结构与算法-Day 25】工程中的王者:深入解析红黑树 (Red-Black Tree)
  • 【leetcode】63. 不同路径 II
  • 低压电工作业操作证的考试难度如何?
  • 【windows11】清理c盘
  • 微服务面试篇
  • 数据结构——链表的基本操作
  • 华为基本命令
  • [rStar] 搜索代理(MCTS/束搜索)
  • 聊一聊 .NET 某跨境物流系统 内存暴涨分析
  • langchain+通义千问,实现简单地RAG应用
  • 【Spring】原理解析:Spring Boot 自动配置
  • 象形柱状图(Vue3)
  • RESTful API:@RequestParam与@PathVariable实战对比
  • 【ESP系列】ESP32S3
  • kafka集群部署与使用
  • Linux-Shell编程之sed和awk
  • 无人设备遥控器之状态反馈技术篇
  • 4.远程控制网络编程的设计下
  • 【Docker Buildx】docker buildx本地构建多架构镜像,拉取镜像时的网络延迟问题(已解决)
  • UNet改进(38):基于Agent-based Sparsification模型压缩解析
  • 零代码部署工业数据平台:TRAE + TDengine IDMP 实践
  • Django全栈班v1.01 Python简介与特点 20250910