LlamaIndex中的评估:提升LLM应用性能的关键
在LLM开发中,评估和基准测试是至关重要的概念。要提高LLM应用(如RAG、代理)的性能,你必须有一种测量它的方法。
LlamaIndex提供了关键模块来衡量生成结果的质量。我们还提供了关键模块来衡量检索质量。你可以在我们的模块指南中了解更多关于LlamaIndex中评估的工作原理。
响应评估
响应是否与检索到的上下文匹配?它是否也与查询匹配?它是否与参考答案或指南匹配?以下是一个简单的示例,评估单个响应的忠实度(Faithfulness),即响应是否与上下文一致,例如是否没有幻觉:
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 = index.as_retriever(similarity_top_k=2)
retriever = ...
retriever_evaluator = RetrieverEvaluator.from_metric_names(
["mrr", "hit_rate"], retriever=retriever
)
retriever_evaluator.evaluate(
query="query", expected_ids=["node_id1", "node_id2"]
)
这将比较为查询检索到的内容与预期检索到的节点集。
在现实中,你可能会希望评估一批检索;你可以在我们的检索评估模块指南中了解如何做到这一点。
相关概念
如果你正在调用托管的远程LLM,你可能有兴趣分析应用程序的成本。
通过LlamaIndex,我们不仅提供了一个强大的工具集,还构建了一个充满活力的社区,致力于推动LLMs在各种应用中的潜力。无论你是初学者还是经验丰富的开发者,LlamaIndex都为你提供了探索和实现上下文增强LLM应用的途径。