🎫 使用向量#
反馈数据集#
注意
本节中介绍的数据集类是 FeedbackDataset。这个完全可配置的数据集将取代 Argilla 2.0 中的 DatasetForTextClassification、DatasetForTokenClassification 和 DatasetForText2Text。不确定要使用哪个数据集?请查看我们关于选择数据集的部分。
定义 vectors_settings#
要在 UI 和 Python SDK 中使用相似性搜索,您需要配置向量设置。这些设置在使用 SDK 创建 FeedbackDataset 或将它们添加到已存在的 FeedbackDataset 时定义为最多 5 个向量的列表。它们具有以下参数
name:向量的名称,它将出现在记录中。dimensions:此设置中使用的向量的维度。title(可选):向量的名称,用于在 UI 中显示,以提高可读性。
vectors_settings = [
rg.VectorSettings(
name="my_vector",
dimensions=768
),
rg.VectorSettings(
name="my_other_vector",
title="Another Vector", # optional
dimensions=768
)
]
添加 vectors_settings#
如果您想在创建数据集时添加向量设置,您可以将它们作为 VectorSettings 实例的列表传递给 FeedbackDataset 构造函数的 vector_settings 参数,如此处所示。 有关端到端示例,请查看我们的关于添加向量的教程。
vector_settings = rg.VectorSettings(
name="sentence_embeddings",
title="Sentence Embeddings",
dimensions=384
)
dataset.add_vector_settings(vector_settings)
添加向量设置后,您可以使用 vector_settings_property_by_name 检查其定义。
dataset.vector_settings_property_by_name("sentence_embeddings")
# rg.VectorSettings(
# name="sentence_embeddings",
# title="Sentence Embeddings",
# dimensions=768
# )
更新 vectors_settings#
您可以通过赋值来更新 FeedbackDataset 的向量设置。如果数据集已推送到 Argilla 并且您正在使用 RemoteFeedbackDataset,则可以使用 update_vector_settings 方法更新它们。
注意
尚未推送到 Argilla 或从 HuggingFace Hub 拉取的数据集是 FeedbackDataset 的实例,而从 Argilla 拉取的数据集是 RemoteFeedbackDataset 的实例。
vector_config = dataset.vector_settings_by_name("sentence_embeddings")
vector_config.title = "Embeddings"
dataset.update_vectors_settings(vector_config)
删除 vectors_settings#
如果您需要从已配置的 FeedbackDataset 中删除向量设置,可以使用 delete_vector_settings 方法。
dataset.delete_vectors_settings("sentence_embeddings")
格式化 vectors#
您可以将向量(如文本嵌入)与您的记录关联。这将启用 UI 和 Python SDK 中的语义搜索。这些向量保存为字典,其中键对应于为您的数据集配置的向量设置的 name,值是浮点数列表。确保列表的长度与向量设置中设置的维度相对应。
提示
向量应具有以下格式 List[float]。如果您正在使用 numpy 数组,只需使用 .tolist() 方法转换它们即可。
record = rg.FeedbackRecord(
fields={...},
vectors={"my_vector": [...], "my_other_vector": [...]}
)
添加 vectors#
一旦定义了 vector_settings,要将向量添加到记录,这稍微取决于您使用的是 FeedbackDataset 还是 RemoteFeedbackDataset。 有关端到端示例,请查看我们的关于添加向量的教程。
注意
尚未推送到 Argilla 或从 HuggingFace Hub 拉取的数据集是 FeedbackDataset 的实例,而从 Argilla 拉取的数据集是 RemoteFeedbackDataset 的实例。 两者之间的区别在于,前者是本地数据集,对其所做的更改保留在本地。 另一方面,后者是远程数据集,对其所做的更改直接反映在 Argilla 服务器上的数据集上,这可以使您的过程更快。
for record in dataset.records:
record.vectors["my_vectors"] = [0.1, 0.2, 0.3, 0.4]
modified_records = []
for record in dataset.records:
record.vectors["my_vectors"] = [0.1, 0.2, 0.3, 0.4]
modified_records.append(record)
dataset.update_records(modified_records)
注意
您也可以遵循相同的策略来修改现有向量。
添加 Sentence Transformers vectors#
您可以使用基于 sentence-transformers 库的 SentenceTransformersExtractor 轻松地将语义嵌入添加到您的记录或数据集。 此提取器在 Python SDK 中可用,可用于配置数据集的设置并从记录列表中提取嵌入。 SentenceTransformersExtractor 具有以下参数
model_name:用于提取嵌入的模型名称。您可以在此处找到可用模型的列表。show_progress(可选):提取指标时是否显示进度条。默认为True。
有关实际示例,请查看我们的关于添加 sentence transformer 嵌入作为向量的教程。
这可以用于使用 FeedbackDataset 或 RemoteFeedbackDataset 中 Fields 的 VectorSettings 更新数据集和配置。
from argilla.client.feedback.integrations.sentencetransformers import SentenceTransformersExtractor
dataset = ... # FeedbackDataset or RemoteFeedbackDataset
tde = SentenceTransformersExtractor(
model="TaylorAI/bge-micro-v2",
show_progress=True,
)
dataset = tde.update_dataset(
dataset=dataset,
fields=None, # None means using all fields
update_records=True, # Also, update the records in the dataset
overwrite=False, # Whether to overwrite existing vectors
)
这可以用于使用 FeedbackRecords 列表中的 Fields 的 vector 值更新记录。
from argilla.client.feedback.integrations.textdescrisentencetransformersptives import SentenceTransformersExtractor
records = [...] # FeedbackRecords or RemoteFeedbackRecords
tde = SentenceTransformersExtractor(
model="TaylorAI/bge-micro-v2",
show_progress=True,
)
records = tde.update_records(
records=records,
fields=None # None means using all fields
overwrite=False # Whether to overwrite existing vectors
)
其他数据集#
注意
本节中介绍的记录类对应于三个数据集: DatasetForTextClassification、DatasetForTokenClassification 和 DatasetForText2Text。 这些数据集将在 Argilla 2.0 中弃用,并由完全可配置的 FeedbackDataset 类取代。 不确定要使用哪个数据集? 请查看我们关于选择数据集的部分。
添加 vectors#
您可以将向量添加到 TextClassificationRecord、TokenClassificationRecord 或 Text2TextRecord。 向量是一个字典,其中名称作为键,向量作为值。
record = rg.TokenClassificationRecord(
text = "Michael is a professor at Harvard",
tokens = ["Michael", "is", "a", "professor", "at", "Harvard"],
vectors = {
"bert_base_uncased": [3.2, 4.5, 5.6, 8.9]
}
)