llama_index [Bug]: RAGAS与llamindex集成问题

jchrr9hc  于 10个月前  发布在  其他
关注(0)|答案(4)|浏览(98)

Bug描述

我希望从RAGAS获取指标,但是当我在EC2上本地下载模型时,指标给了我答案,但是当我使用Sagemaker端点作为LLM时,它会报错。

错误信息是asyncio错误,我需要使用nest.apply()。我已经这样做了,但实际的错误信息是无法重用已经等待的协程

版本

0.10.55

重现步骤

这里是可以运行以产生错误信息的代码:

  1. import nest_asyncio
  2. llm = SageMakerLLM(
  3. endpoint_name=<>,
  4. region_name=<>
  5. )
  6. embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/all-mpnet-base-v2", device="cuda")
  7. Settings.llm = llm
  8. Settings.embed_model = embed_model
  9. nest_asyncio.apply()
  10. storage_context = StorageContext.from_defaults(persist_dir=<>)
  11. index = load_index_from_storage(storage_context)
  12. # define evaluator
  13. evaluator = FaithfulnessEvaluator(llm=llm)
  14. # query index
  15. query_engine = index.as_query_engine()
  16. query = "What battles took place in New York City in the American Revolution?"
  17. response = query_engine.query("What battles took place in New York City in the American Revolution?")
  18. eval_result = evaluator.evaluate_response(query=query, response=response)
  19. print(str(eval_result.passing))

相关日志/回溯

  • 无响应*
ryhaxcpt

ryhaxcpt1#

要解决在将RAGAS与llama_index集成时,使用SageMaker端点作为语言模型时出现的"无法重用已等待的协程"错误,您需要确保每个协程只被等待一次。这种错误通常发生在一个协程被多次等待的情况下,而这在Python中是不允许的。

在您提供的代码中,异步方法achatastream_chatacompleteastream_complete没有实现,会引发NotImplementedError。您需要正确地实现这些方法。

以下是如何实现acomplete方法以避免"无法重用已等待的协程"错误的示例:

  1. def `acomplete`():
  2. # 实现或使用AWS客户端库中的假设异步方法`invoke_endpoint_async`,确保协程被正确地等待且仅等待一次。
  3. pass

如果您计划使用其他异步方法,请确保为它们也实现类似的更改。

此外,您还可以参考llama_index库中的SageMakerLLM类,以获取更多关于如何设置和使用SageMaker端点的上下文信息。以下是一个示例设置:

  1. from `llama_index` import `SageMakerLLM`
  2. # 创建一个`SageMakerLLM`示例并进行配置
  3. sagemaker_endpoint = `SageMakerLLM`(...)

为了进一步确保协程得到正确的管理,您可以使用来自llama_index库的实用函数,如run_async_tasksbatch_gather,它们有助于高效地运行多个异步任务:

  1. from `llama_index` import `run_async_tasks`, `batch_gather`
  2. # 使用这些实用程序函数来管理多个协程的执行,确保它们被正确地等待,避免出现"无法重用已等待的协程"错误。
展开查看全部
holgip5t

holgip5t2#

请检查一下,伙计?

ca1c2owp

ca1c2owp3#

忠实度评估器来自拉格斯?还是来自llamaindex?你漏掉了导入语句,以及应用nest asyncio后的堆栈跟踪。

nhaq1z21

nhaq1z214#

抱歉。我将尽快回复他们。
但是,从非常高的程度上来说,我正在使用lamindex的Sagemaker端点模块从Sagemaker端点加载我的LLM。
然后我运行ragas评估指标。它说没有为它实现一个完整的函数。

相关问题