使用模式(检索)#
使用 RetrieverEvaluator
#
这将在给定检索器的单个查询 + 真实文档集上运行评估。
标准做法是使用 from_metrics
指定一组有效的指标。
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"]
)
构建评估数据集#
您可以手动策划一个问题 + 节点 ID 的检索评估数据集。我们还提供了在现有文本语料库上进行合成数据集生成的功能 generate_question_context_pairs
:
from llama_index.core.evaluation import generate_question_context_pairs
qa_dataset = generate_question_context_pairs(
nodes, llm=llm, num_questions_per_chunk=2
)
返回的结果是一个 EmbeddingQAFinetuneDataset
对象(包含 queries
、relevant_docs
和 corpus
)。
将其插入 RetrieverEvaluator
#
我们提供了一个方便的函数,可以批量模式下运行 RetrieverEvaluator
。
eval_results = await retriever_evaluator.aevaluate_dataset(qa_dataset)
这应该比您尝试对每个查询分别调用 .evaluate
要快得多。