Evaluating
概念解释
Evaluating(评估):在LLM(大型语言模型)开发中,评估和基准测试是至关重要的概念。为了提高LLM应用(如RAG、代理)的性能,必须有一种方法来衡量其表现。
Response Evaluation(响应评估):评估生成的响应是否与检索到的上下文匹配,是否与查询匹配,是否与参考答案或指南匹配。
Retrieval Evaluation(检索评估):评估检索到的来源是否与查询相关。
响应评估
响应评估的一个简单示例是评估单个响应的忠实度(Faithfulness),即响应是否与上下文一致,是否没有幻觉(hallucinations)。
示例代码:
from llama_index.core import VectorStoreIndex
from llama_index.llms.openai import OpenAI
from llama_index.core.evaluation import FaithfulnessEvaluator
# 创建LLM
llm = OpenAI(model="gpt-4", temperature=0.0)
# 构建索引
vector_index = VectorStoreIndex(...)
# 定义评估器
evaluator = FaithfulnessEvaluator(llm=llm)
# 查询索引
query_engine = vector_index.as_query_engine()
response = query_engine.query(
"What battles took place in New York City in the American Revolution?"
)
eval_result = evaluator.evaluate_response(response=response)
print(str(eval_result.passing))
在这个示例中,响应包含响应本身和生成响应的来源;评估器比较它们,并确定响应是否忠实于来源。
检索评估
检索评估的一个简单示例是评估单个检索:
示例代码:
from llama_index.core.evaluation import RetrieverEvaluator
# 定义检索器(例如从索引中)
retriever = ...
retriever_evaluator = RetrieverEvaluator.from_metric_names(
["mrr", "hit_rate"], retriever=retriever
)
retriever_evaluator.evaluate(
query="query", expected_ids=["node_id1", "node_id2"]
)
这个示例比较了为查询检索到的内容与预期应检索到的节点集。
在实际应用中,通常需要评估一批检索;可以参考检索评估模块指南了解如何进行批量评估。
相关概念
如果应用中调用了托管的远程LLM,可能还对分析应用的成本感兴趣。
总结
通过本课程,我们详细讲解了Evaluating的概念及其在LlamaIndex中的应用。我们介绍了响应评估和检索评估的基本步骤和示例代码。这些内容将帮助学生更好地理解和应用LlamaIndex中的评估功能。