使用模式(检索)
使用 RetrieverEvaluator
Section titled “Using 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函数实现:
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)。
将其接入 RetrieverEvaluatorRetrieverEvaluator
Section titled “Plugging it into RetrieverEvaluator”我们提供了一个便捷函数,用于在批处理模式下对数据集运行 RetrieverEvaluator。
eval_results = await retriever_evaluator.aevaluate_dataset(qa_dataset)这应该比你尝试对每个查询单独调用 .evaluate 要快得多。