跳到内容

评估#

评估和基准测试是 LLM 开发中的关键概念。为了提高 LLM 应用(RAG、代理)的性能,必须有衡量其性能的方法。

LlamaIndex 提供了关键模块来衡量生成结果的质量。我们也提供了衡量检索质量的关键模块。您可以在我们的模块指南中了解更多关于 LlamaIndex 如何进行评估的信息。

响应评估#

响应是否与检索到的上下文匹配?它是否也与查询匹配?它是否与参考答案或指南匹配?这里有一个简单的例子,评估单个响应的忠实度,即响应是否与上下文一致,例如没有幻觉。

from llama_index.core import VectorStoreIndex
from llama_index.llms.openai import OpenAI
from llama_index.core.evaluation import FaithfulnessEvaluator

# create llm
llm = OpenAI(model="gpt-4", temperature=0.0)

# build index
...
vector_index = VectorStoreIndex(...)

# define evaluator
evaluator = FaithfulnessEvaluator(llm=llm)

# query index
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

# define retriever somewhere (e.g. from index)
# 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,您可能会对分析应用程序的成本感兴趣。