链载Ai

标题: 使用RAG技术构建企业级文档问答系统之使用GPT4进行评估 [打印本页]

作者: 链载Ai    时间: 1 小时前
标题: 使用RAG技术构建企业级文档问答系统之使用GPT4进行评估

上篇内容介绍了如何使用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

1 环境准备

1.1 安装Python依赖

pipinstalllangchain_openai

版本为:0.1.7

1.2 准备测试集和预测结果

本次使用下图所示的样例数据进行测试,总共100条


字段介绍:

测试集,是使用下文介绍的方法构建的,感兴趣的朋友可以查看

使用RAG技术构建企业级文档问答系统之QA抽取gen_answer是对之前介绍的基础流程效果的打分,感兴趣的朋友可以参考下文:

使用RAG技术构建企业级文档问答系统之基础流程

2 示例代码

需要换用千问、智谱等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])

检查一下模型响应,是不是按Prompt要求返回了

prediction_df[].unique()

array(['是', '否'], dtype=object)

计算最终得分

prediction_df.loc[:,]=prediction_df[].replace({:,:})
_=prediction_df.pop()
(prediction_df[].mean())

0.74

如果你觉得我的文章对你有用的话,欢迎点赞、关注?






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5