现在,让我们通过具体示例来看看 Phoenix 是如何识别错误 Embeddings 的。我们需要先回顾一下之前使用的 IMDB 数据集。记得我们之前是如何使用 sentence-transformers 库生成 Embeddings 的吗?
from datasets import load_dataset
from sentence_transformers import SentenceTransformer
# load the IMDB dataset
dataset = load_dataset("imdb", split="test")
# instantiate the model
model = SentenceTransformer("intfloat/e5-small-v2")
def generate_embeddings(dataset):
"""Generates embeddings for the input dataset. """
global model
return model.encode([row["text"] for row in dataset])
# generate embeddings
embeddings = generate_embeddings(dataset)
将数据集加载到 pandas dataframe 中。
import pandas as pd
# create the pandas dataframe
df = pd.DataFrame({"embedding": embeddings.tolist()})
df["text"] = [row["text"] for row in dataset]
df["label"] = [row["label"] for row in dataset]
直接在 Phoenix 中使用加载完毕的数据。
! pip install -U arize-phoenix
import phoenix as px
# create the schema
schema = px.Schema(
feature_column_names=["text"],
actual_label_column_name="label",
embedding_feature_column_names={
"text_embedding": px.EmbeddingColumnNames(
vector_column_name="embedding",
#link_to_data_column_name="text",
),
},
)
ds = px.Dataset(df, schema)
session = px.launch_app(primary=ds)
session.url
我们首先创建了一个 Schema 对象。Schema 定义了与每个 Embedding 相关联的数据,也就是文本和标签。这一步完成后,我们指定了之前创建的 dataframe 及 Schema 以供 Phoenix 使用。接着,启动应用。
import os
os.environ["OPENAI_API_KEY"] = "your-openai-key"
!pip install ragas
from ragas.metrics import context_recall, context_precision
amnesty_qa = load_dataset("explodinggradients/amnesty_qa", "english_v2")
amnesty_qa
DatasetDict({
eval: Dataset({
features: ['question', 'ground_truth', 'answer', 'contexts'],
num_rows: 20
})
})
from ragas import evaluate
result = evaluate(
amnesty_qa["eval"],
metrics=[
context_precision,
context_recall,
],
)
result
本文介绍了评估 Embedding 模型的一些方法。正确选择合适的文本 Embedding 模型需要考量众多因素——您需要了解每个模型的训练数据和训练方法。在详细了解底层任务的需求后,您可以利用可视化 Embeddings 的工具(例如 Arize-Phoenix 或 Ragas)提升 Embeddings 的质量。
推荐阅读