找回密码
 立即注册
首页 业界区 业界 大模型评测之幻觉检测hallucination_evaluation_model ...

大模型评测之幻觉检测hallucination_evaluation_model

决台 2025-6-2 00:01:40
大背景:


  • 2025开年deepseek铺天盖地的新闻
  • 参会代表已经表明,年度主线就是以AI为基础
  • Manus于3月初横空出世
  • 国内各种模型竞赛的现状,只要是和科技沾边的公司不可能没有大模型,哪怕是里三层外三层套壳也得上
  • 东升西降,宏观使然,竞争中必然有科技竞争
小背景 


  • 本公司自研大模型rd,在模型排名中必有一席之地
  • 除了加大力度研发,还需各种评测
  • 正好,吾就是一名专业的模型评测员
  • 随着各种假信息的泛滥,模型越来越不清楚安全的边界、真实的边界,只是于铺天盖地的网页中查找然后总结,算不上一个优秀的大模型
幻觉检测

  什么是幻觉检测?
  官网中介绍到:“HHEM模型系列旨在检测 LLM 中的幻觉。它们在构建检索增强生成 (RAG) 应用程序的背景下特别有用,其中 LLM 总结了一组事实,并且 HHEM 可用于衡量该总结与事实在事实上的一致程度。”
  说人话,就是检测一下大模型对事实的认知能力如何。
  大模型地址:https://huggingface.co/vectara/hallucination_evaluation_model
如何做幻觉检测


  • 仔细阅读中大模型地址的Model Card部分,这对你理解 “事实但是幻觉” 很重要。 
    1.png

  • 把项目克隆下来,待会儿要用到里面的模型进行计算
  • 下载官方数据集,https://huggingface.co/datasets/vectara/leaderboard_results/tree/main ,数据集是一个很大的csv文件,里面是用于测试幻觉的各种问题,用于模型的输入
  • 使用提示语,提示语要和问题进行拼接
    2.png

  • 编写一个脚本,从csv中读取问题,请求大模型,再将大模型的答案追加到后一列。参考如下: 
    1. def huan_jue():
    2.     df = pd.read_csv('leaderboard_summaries.csv', encoding='utf-8')
    3.     df = df[df['model'] == 'deepseek/deepseek-v3']
    4.     data = {"source": [], 'ori_summary': [], "rendu_summary": []}
    5.     for index, row in df.iterrows():
    6.         source = row[0]
    7.         ori_summary = row[1]
    8.         msg = f'Provide a concise summary of the following passage, covering the core pieces of information described in english. {source}'
    9.         con = rendu(msg)
    10.         try:
    11.             con = con['choices'][0]['message']['content']
    12.         except IndexError:
    13.             con = ''
    14.         print(index, con[:100])
    15.         data["source"].append(source)
    16.         data["ori_summary"].append(ori_summary)
    17.         data["rendu_summary"].append(con)
    18.     df2 = pd.DataFrame(data)
    19.     df2.to_csv('output.csv', index=False)
    复制代码
  • 上面的过程可能很漫长,建议放到服务器后台进行,后台命令参考,如果不打算用服务器跑,这一步忽略。
    1. nohup python hallucination_test.py > nohup.out 2>&1 &
    复制代码
  • 下载依赖的模型,参考代码如下(如果已配置梯子,这一步可以忽略)
    1. import os
    2. os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
    3. from huggingface_hub import snapshot_download
    4. snapshot_download(
    5.   repo_id="microsoft/OmniParser-v2.0",
    6.   # repo_type="dataset",  # 下载数据集时才需要
    7.   local_dir="../hallucination_evaluation_model/google/flan-t5-base",
    8.   # proxies={"https": "http://localhost:7890"},
    9.   # max_workers=8,
    10.   etag_timeout=180
    11. )
    复制代码
  • 使用大模型地址的Model Card部分提到的计算方式进行计算,这也是为什么第一步让大家熟读Model Card。我用的是Pipline方式计算的。计算也很耗时,建议放在服务器进行。
    3.png

  •  分数转化为排行榜支持的形式,首先我们看一下排行榜 https://huggingface.co/spaces/vectara/leaderboard ,首列分数越低代表该大模型致幻程度越小,说明模型越好。那四列的意思分别为:
    转换分数脚本参考

    • 幻觉率:幻觉评分低于0.5的摘要百分比
    • 事实一致率:幻觉率的补充,以百分比表示。
    • 回答率:非空摘要的百分比。这要么是模型拒绝生成响应,要么是由于各种原因抛出错误。(例如,模型认为文档包含不恰当的内容)
    • 平均摘要长度:生成的摘要的平均字数

    1. import pandas as pd
    2. result = {
    3.     'Hallucination Rate': 0,
    4.     'Factual Consistency Rate': 0,
    5.     'Answer Rate': 0,
    6.     'Average Summary Length': 0
    7. }
    8. with open('result.json', 'r') as f:
    9.     con = eval(f.read())
    10. hr = fcr = ar = 0
    11. df = pd.read_csv('hallu_rendu/rendu_summary.csv')
    12. asl = []
    13. for i in df['rendu_summary'].tolist():
    14.     j = i.split(' ')
    15.     sm = 0
    16.     sm += len(j)
    17.     asl.append(sm)
    18. for i in con:
    19.     if i < 0.5:
    20.         hr += 1
    21.     if not i:
    22.         ar += 1
    23. hr = round(hr/len(con), 2)
    24. fcr = 1-hr
    25. hr = str(hr * 100) + '%'
    26. fcr = str(fcr * 100) + '%'
    27. ar = str((len(con) - ar) / len(con) * 100) + '%'
    28. asl = str(sum(asl)/len(asl))
    29. result['Hallucination Rate'] = hr
    30. result['Factual Consistency Rate'] = fcr
    31. result['Answer Rate'] = ar
    32. result['Average Summary Length'] = asl
    33. print(result)
    复制代码
聊一聊我们的模型评测结果

  我们的rd模型在评测中各项评分如下:{'Hallucination Rate': '16.0%', 'Factual Consistency Rate': '84.0%', 'Answer Rate': '100.0%', 'Average Summary Length': '102.68190854870775'}
  这个结果算不上好,但至少上榜了。
  你们的呢,评论区聊一聊
出处:https://www.cnblogs.com/teark本文版权归作者-博客园测神 独有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册