82 LlamaIndex 忠实度评估器使用指南

LlamaIndex 忠实度评估器使用指南

在处理大型语言模型(LLM)时,确保生成的响应忠实于源文档是至关重要的。本文将介绍如何使用 LlamaIndex 的 FaithfulnessEvaluator 模块来评估查询引擎的响应是否与源节点匹配,从而检测是否存在幻觉现象。我们将以纽约市维基百科页面为例,展示整个评估过程。

安装依赖

首先,我们需要安装必要的依赖包:

%pip install llama-index-llms-openai pandas[jinja2] spacy

设置环境

为了在 Jupyter Notebook 中使用异步操作,我们需要应用 nest_asyncio

import nest_asyncio
nest_asyncio.apply()

同时,设置 OpenAI API 密钥:

import os
os.environ["OPENAI_API_KEY"] = "sk-..."

导入必要的模块

接下来,导入 LlamaIndex 和其他必要的模块:

from llama_index.core import (
    VectorStoreIndex,
    SimpleDirectoryReader,
    Response,
)
from llama_index.llms.openai import OpenAI
from llama_index.core.evaluation import FaithfulnessEvaluator
from llama_index.core.node_parser import SentenceSplitter
import pandas as pd

pd.set_option("display.max_colwidth", 0)

使用 GPT-4 进行评估

我们使用 GPT-4 作为评估模型:

gpt4 = OpenAI(temperature=0, model="gpt-4")
evaluator_gpt4 = FaithfulnessEvaluator(llm=gpt4)

加载文档并创建向量索引

加载纽约市维基百科页面的文档,并创建向量索引:

documents = SimpleDirectoryReader("./test_wiki_data/").load_data()
splitter = SentenceSplitter(chunk_size=512)
vector_index = VectorStoreIndex.from_documents(
    documents, transformations=[splitter]
)

定义显示评估结果的函数

定义一个函数,用于在 Jupyter Notebook 中显示评估结果:

from llama_index.core.evaluation import EvaluationResult

def display_eval_df(response: Response, eval_result: EvaluationResult) -> None:
    if response.source_nodes == []:
        print("no response!")
        return
    eval_df = pd.DataFrame(
        {
            "Response": str(response),
            "Source": response.source_nodes[0].node.text[:1000] + "...",
            "Evaluation Result": "Pass" if eval_result.passing else "Fail",
            "Reasoning": eval_result.feedback,
        },
        index=[0],
    )
    eval_df = eval_df.style.set_properties(
        **{
            "inline-size": "600px",
            "overflow-wrap": "break-word",
        },
        subset=["Response", "Source"]
    )
    display(eval_df)

运行评估

运行查询并评估响应:

query_engine = vector_index.as_query_engine()
response_vector = query_engine.query("How did New York City get its name?")
eval_result = evaluator_gpt4.evaluate_response(response=response_vector)
display_eval_df(response_vector, eval_result)

生成更多问题进行基准测试

生成更多问题,以便进行更全面的评估:

from llama_index.core.evaluation import DatasetGenerator

question_generator = DatasetGenerator.from_documents(documents)
eval_questions = question_generator.generate_questions_from_nodes(5)

print(eval_questions)

批量评估查询引擎

定义一个函数,用于批量评估查询引擎:

import asyncio

def evaluate_query_engine(query_engine, questions):
    c = [query_engine.aquery(q) for q in questions]
    results = asyncio.run(asyncio.gather(*c))
    print("finished query")

    total_correct = 0
    for r in results:
        eval_result = 1 if evaluator_gpt4.evaluate_response(response=r).passing else 0
        total_correct += eval_result

    return total_correct, len(results)

运行批量评估:

vector_query_engine = vector_index.as_query_engine()
correct, total = evaluate_query_engine(vector_query_engine, eval_questions[:5])

print(f"score: {correct}/{total}")

总结

通过 LlamaIndex 的 FaithfulnessEvaluator 模块,我们可以有效地评估查询引擎的响应是否忠实于源文档。这不仅有助于检测幻觉现象,还能提升模型的可靠性和准确性。希望本文能帮助你更好地理解和应用 LlamaIndex 的评估功能。如果你有任何问题或需要进一步的帮助,请随时联系我们。祝你在 LLM 开发的道路上取得成功!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Llamaindex是一个开源的搜索引擎,可以用于快速搜索和索引大型数据集。为了在本地部署Llamaindex,您需要按照以下步骤进行操作。 首先,您需要从Llamaindex的官方GitHub页面上下载源代码。确保您的计算机已安装了Git系统,然后使用命令行工具输入以下命令来克隆代码库: ``` git clone https://github.com/llama-lab/llamaindex.git ``` 下载完成后,进入项目文件夹并创建一个Python虚拟环境。使用以下命令可以创建一个虚拟环境: ``` python3 -m venv llama-env ``` 然后需要激活虚拟环境。在Mac和Linux系统下,使用以下命令: ``` source llama-env/bin/activate ``` 在Windows系统下,使用以下命令: ``` llama-env\Scripts\activate ``` 接下来,安装Llamaindex的依赖项。在虚拟环境中运行以下命令: ``` pip install -r requirements.txt ``` 等待依赖项安装完成后,可以开始配置Llamaindex。编辑`config.yaml`文件,根据您的需求进行相应的修改。您可以设置数据集的路径、索引文件的位置和其他相关参数。 完成配置后,运行以下命令来创建索引: ``` python3 llama.py -f path/to/dataset ``` 上述命令中的`path/to/dataset`应替换为实际的数据集路径。运行该命令后,Llamaindex会开始索引数据集。 当索引完成后,您可以使用以下命令来搜索索引中的数据: ``` python3 llama.py -s "your search query" ``` 您可以将`"your search query"`替换为实际的搜索关键字。Llamaindex将返回与关键字匹配的结果。 以上就是在本地部署Llamaindex的步骤。祝您在使用Llamaindex时取得成功!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值