使用RAGAS评估LLM RAG应用时触发AttributeError报错求助
解决RAGAS evaluate函数触发AttributeError: 'TestDataset' object has no attribute 'column_names'的问题
问题场景
使用RAGAS的TestsetGenerator生成测试数据集后,调用evaluate函数时触发如下报错:
AttributeError: 'TestDataset' object has no attribute 'column_names'
问题原因
ragas的evaluate函数仅支持接收Hugging Face Dataset格式的输入,而TestsetGenerator.generate()返回的是TestDataset类型对象,两者格式不兼容,导致验证阶段无法找到column_names属性。
解决方案
将TestDataset转换为Hugging Face Dataset格式即可解决,具体步骤:
- 导入Hugging Face的
Dataset类 - 调用
TestDataset的to_dict()方法转为字典,再通过Dataset.from_dict()转换为标准Dataset对象 - 使用转换后的Dataset对象调用
evaluate函数
修改后的完整代码
# 生成测试数据集(移除冗余导入,保留核心逻辑) from ragas.testset import TestsetGenerator from langchain.embeddings import OpenAIEmbeddings from langchain.chat_models import ChatOpenAI from ragas.llms import LangchainLLM from langchain.document_loaders import PyPDFDirectoryLoader llm_wrapper = ChatOpenAI(model="gpt-3.5-turbo") generator_llm = LangchainLLM(llm=llm_wrapper) critic_llm = LangchainLLM(llm=llm_wrapper) embeddings_model = OpenAIEmbeddings() testset_distribution = { "simple": 0.25, "reasoning": 0.5, "multi_context": 0.0, "conditional": 0.25, } chat_qa = 0.2 test_generator = TestsetGenerator( generator_llm=generator_llm, critic_llm=critic_llm, embeddings_model=embeddings_model, testset_distribution=testset_distribution, chat_qa=chat_qa, ) data_file = "/content/" loader = PyPDFDirectoryLoader(data_file+"/") documents = loader.load() testset = test_generator.generate(documents, test_size=2) # 新增格式转换逻辑 from datasets import Dataset testset_dataset = Dataset.from_dict(testset.to_dict()) # 执行评估 from ragas import evaluate from ragas.metrics import context_precision, faithfulness, answer_relevancy, context_recall result = evaluate( testset_dataset, metrics=[ context_precision, faithfulness, answer_relevancy, context_recall, ], )
额外提示
原代码中存在重复导入from ragas.llms import LangchainLLM的冗余代码,可删除以保持代码整洁。
内容的提问来源于stack exchange,提问作者zainul abid
相关产品推荐
相关产品推荐

