跳到内容

使用 RetrieverEvaluator#

它在给定检索器的情况下,对单个查询 + 真实文档集运行评估。

标准做法是使用 from_metrics 指定一组有效指标。

构建评估数据集#

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"]
)

您可以手动整理一个包含问题 + 节点 ID 的检索评估数据集。我们还提供使用 generate_question_context_pairs 函数在现有文本语料库上生成合成数据集的功能

返回结果是一个 EmbeddingQAFinetuneDataset 对象 (包含 queriesrelevant_docscorpus)。

from llama_index.core.evaluation import generate_question_context_pairs

qa_dataset = generate_question_context_pairs(
    nodes, llm=llm, num_questions_per_chunk=2
)

将其接入 RetrieverEvaluator#

我们提供了一个便捷函数,用于在批量模式下对数据集运行 RetrieverEvaluator

这比您尝试单独对每个查询调用 .evaluate 要快得多。

eval_results = await retriever_evaluator.aevaluate_dataset(qa_dataset)

返回顶部