🎫 使用向量#
反馈数据集#
注意
本节中介绍的数据集类是 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]
}
)