网站有风险提示怎么办,军事新闻最新消息11,广州网站制作托管,做电脑租赁网站day26 回答准确率测试
回答准确率测试
1️⃣ 定义#xff08;通俗版#xff09;
回答准确率测试#xff0c;就是#xff1a;
给模型一批「有标准答案的问题」#xff0c;看它给出的回答有多少是“对的”本质是一个 评测#xff08;Evaluation#xff09;问题。2️⃣ 数学…day26 回答准确率测试回答准确率测试1️⃣ 定义通俗版回答准确率测试就是给模型一批「有标准答案的问题」看它给出的回答有多少是“对的”本质是一个 评测Evaluation问题。2️⃣ 数学定义简单版假设你有N 个问题模型答对了 K 个那么Accuracy K / N例如100 个问题答对 83 个 准确率 83%3️⃣ 在 LLM 领域的特殊性和传统分类不同LLM 的回答是 自然语言❌ 不是 “A / B / C” ✅ 而是 “一段文本”因此 “什么叫答对” 就成了核心难点。二、回答准确率测试的关键概念LLM 视角1️⃣ 三种常见“准确”的定义✅ 1. Exact Match严格匹配模型回答 标准答案✔ 简单❌ 对 LLM 非常不友好✅ 2. 语义等价Semantic Match含义一致即可例如标准答案“巴黎是法国的首都”模型回答“法国的首都是巴黎”✔ 更符合人类判断❌ 需要额外模型判断✅ 3. LLM-as-a-Judge主流方案用 另一个 LLM 来判断“模型回答是否正确”这是目前工业界、论文里最常见的方法。2️⃣ 回答准确率 ≠ 检索准确率如果你用了 RAG检索增强生成要分清指标衡量什么检索准确率找到的文档对不对回答准确率最终回答对不对三、整体 Demo 架构┌────────────┐ │ Questions │ └─────┬──────┘ │ ┌─────────▼─────────┐ │ Chroma 向量数据库 │ ← 知识库 └─────────┬─────────┘ │ ┌─────────▼─────────┐ │ Qwen-Plus │ ← 生成回答 └─────────┬─────────┘ │ ┌─────────▼─────────┐ │ Accuracy Judge │ ← 再用 Qwen-Plus └─────────┬─────────┘ │ Accuracy四、 Demo可运行Step 0准备 requirements.txtopenai1.0.0 chromadb0.4.22 tqdm python-dotenv安装pipinstall-r requirements.txtStep 1配置 Qwen-Plus⚠️ Qwen 使用 阿里云 DashScopeOpenAI 兼容接口importosfromopenaiimportOpenAI clientOpenAI(api_keyos.getenv(DASHSCOPE_API_KEY),base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1)Step 2构建一个最小知识库Chromaimportchromadb chroma_clientchromadb.Client()collectionchroma_client.create_collection(namedemo_kb)docs[巴黎是法国的首都。,东京是日本的首都。,北京是中国的首都。]collection.add(documentsdocs,ids[fdoc{i}foriinrange(len(docs))])Step 3定义测试问题带标准答案eval_set[{question:法国的首都是哪里,answer:巴黎},{question:日本的首都是哪里,answer:东京},]Step 4RAG Qwen-Plus 生成回答defanswer_question(question):# 1. 检索resultscollection.query(query_texts[question],n_results1)contextresults[documents][0][0]# 2. 生成promptf 已知信息{context}问题{question}请给出简洁准确的回答。 respclient.chat.completions.create(modelqwen-plus,messages[{role:user,content:prompt}])returnresp.choices[0].message.content.strip()Step 5用 LLM 判断“是否正确”核心defjudge_answer(question,gt_answer,model_answer):judge_promptf 你是一个严格的评测员。 问题{question}标准答案{gt_answer}模型回答{model_answer}请判断模型回答是否正确。 只回答 YES 或 NO。 respclient.chat.completions.create(modelqwen-plus,messages[{role:user,content:judge_prompt}])returnresp.choices[0].message.content.strip().upper()YESStep 6计算准确率correct0foritemineval_set:model_ansanswer_question(item[question])is_correctjudge_answer(item[question],item[answer],model_ans)print(item[question],model_ans,is_correct)ifis_correct:correct1accuracycorrect/len(eval_set)print(fAccuracy:{accuracy:.2%})