|
上篇内容介绍了如何使用TruLens进行RAG效果评估,本文介绍如何使用GPT-4进行打分,这也是目前常用的一种RAG自动化评估方法,比较适合有参考答案的RAG系统构建项目 虽然标题是说使用GPT4进行评估,但其实下文介绍的方法可以使用千问、智谱、百川等提供的模型,甚至Ollama本地部署的模型。实际情况中,大家可以根据实际情况灵活选择,总的来说是要选择相对较强的模型,因为要靠这个指标指导后续迭代方向。本文实际会使用GPT-4o-mini进行打分,使用Deepbricks所提供的服务,它可以使用支付宝付款,而且价格会比官方便宜不少 本文代码已开源,地址在:https://github.com/Steven-Luo/MasteringRAG/blob/main/evaluation/02_gpt_evaluation.ipynb pipinstalllangchain_openai 本次使用下图所示的样例数据进行测试,总共100条 
字段介绍:测试集,是使用下文介绍的方法构建的,感兴趣的朋友可以查看 使用RAG技术构建企业级文档问答系统之QA抽取gen_answer是对之前介绍的基础流程效果的打分,感兴趣的朋友可以参考下文: 需要换用千问、智谱等API,只需要替换base_url和相应的api_key即可,需要使用Ollama,可以使用注释部分的代码 ChatOpenAI
judge_llm=ChatOpenAI(
api_key=os.environ[],
base_url=os.environ[],
model_name=
)
(question,ref_answer,gen_answer):
prompt=
{{question}}
{{ref_answer}}
{{gen_answer}}
.replace(,question).replace(,(ref_answer)).replace(,gen_answer).strip()
result=judge_llm.invoke(prompt).content
result={}
idx,rowintqdm(prediction_df.iterrows(),=len(prediction_df)):
=row[]
questioninscore_dict:
=answer_dict[question][]
=answer_dict[question][]
score_dict[question]=evaluate(question,ref_answer,gen_answer)
prediction_df.loc[:,]=prediction_df[].apply(lambdaq:score_dict[q])array(['是', '否'], dtype=object)
prediction_df.loc[:,]=prediction_df[].replace({:,:})
_=prediction_df.pop()
(prediction_df[].mean())如果你觉得我的文章对你有用的话,欢迎点赞、关注? |