跳到内容

rg.Vector

向量是 Record 字段或属性的数值表示,通常是记录的文本。向量可用于通过 UI 或 SDK 搜索相似的记录。向量可以直接添加到记录中,也可以作为字典添加,字典的键与 rg.VectorField 名称匹配。

使用示例

要在数据集内使用向量,您必须在数据集设置中定义一个向量字段。向量字段是可以附加到记录的向量字段列表。以下示例演示了如何将向量添加到数据集以及如何从记录对象访问向量

import argilla as rg

dataset = Dataset(
    name="dataset_with_metadata",
    settings=Settings(
        fields=[TextField(name="text")],
        questions=[LabelQuestion(name="label", labels=["positive", "negative"])],
        vectors=[
            VectorField(name="vector_name"),
        ],
    ),
)
dataset.create()

然后,您可以将记录添加到数据集,其中的向量与数据集设置中定义的向量字段相对应

dataset.records.log(
    [
        {
            "text": "Hello World, how are you?",
            "vector_name": [0.1, 0.2, 0.3]
        }
    ]
)

向量可以使用映射传递,其中键是数据源中的键,值是数据集设置的 rg.VectorField 对象中的名称。例如,以下代码使用映射添加带有向量的记录

dataset.records.log(
    [
        {
            "text": "Hello World, how are you?",
            "x": [0.1, 0.2, 0.3]
        }
    ],
    mapping={"x": "vector_name"}
)

或者,可以实例化向量并直接添加到记录中,就像这样

dataset.records.log(
    [
        rg.Record(
            fields={"text": "Hello World, how are you?"},
            vectors=[rg.Vector("embedding", [0.1, 0.2, 0.3])],
        )
    ]
)

Vector

基类: Resource

用于与 Argilla 向量交互的类。向量通常用于表示记录的嵌入或特征。Vector 类用于将向量传递到 Argilla 服务器。

属性

名称 类型 描述
名称 str

向量的名称。

list[float]

向量的值。

源代码在 src/argilla/vectors.py
class Vector(Resource):
    """ Class for interacting with Argilla Vectors. Vectors are typically used to represent \
        embeddings or features of records. The `Vector` class is used to deliver vectors to the Argilla server.

    Attributes:
        name (str): The name of the vector.
        values (list[float]): The values of the vector.
    """

    _model: VectorModel

    def __init__(
        self,
        name: str,
        values: list[float],
    ) -> None:
        """Initializes a Vector with a name and values that can be used to search in the Argilla ui.

        Parameters:
            name (str): Name of the vector
            values (list[float]): List of float values

        """
        self._model = VectorModel(
            name=name,
            vector_values=values,
        )

    def __repr__(self) -> str:
        return repr(f"{self.__class__.__name__}({self._model})")

    ##############################
    # Properties
    ##############################

    @property
    def name(self) -> str:
        """Name of the vector that corresponds to the name of the vector in the dataset's `Settings`"""
        return self._model.name

    @property
    def values(self) -> list[float]:
        """List of float values that represent the vector."""
        return self._model.vector_values

    ##############################
    # Methods
    ##############################

    @classmethod
    def from_model(cls, model: VectorModel) -> "Vector":
        return cls(
            name=model.name,
            values=model.vector_values,
        )

    def serialize(self) -> dict[str, Any]:
        dumped_model = self._model.model_dump()
        name = dumped_model.pop("name")
        values = dumped_model.pop("vector_values")
        return {name: values}

name: str property

向量的名称,与数据集 Settings 中向量的名称相对应

values: list[float] property

表示向量的浮点值列表。

__init__(name, values)

初始化一个带有名称和值的 Vector,可用于在 Argilla UI 中搜索。

参数

名称 类型 描述 默认
名称 str

向量的名称

必需
list[float]

浮点值列表

必需
源代码在 src/argilla/vectors.py
def __init__(
    self,
    name: str,
    values: list[float],
) -> None:
    """Initializes a Vector with a name and values that can be used to search in the Argilla ui.

    Parameters:
        name (str): Name of the vector
        values (list[float]): List of float values

    """
    self._model = VectorModel(
        name=name,
        vector_values=values,
    )