使用 ai.similarity 函数计算相似性

ai.similarity 函数使用 Generative AI 来比较两个字符串表达式,然后计算语义相似性分数,所有这些表达式都有一行代码。 可以将数据帧的一列的文本值与单个通用文本值进行比较,也可以将另一列中的文本值与成对文本值进行比较。

通过向你提供 Fabric 内置大语言模型的强大功能,AI 函数可强力推动数据工程的发展。 若要了解详细信息,请访问此概述文章

重要

此功能在 预览版中,用于 Fabric 1.3 运行时 及更高版本。

  • 请查看此概述文章中的先决条件,包括使用 AI 函数暂时需要的库安装
  • 默认情况下,AI 函数目前由 gpt-3.5-turbo (0125) 模型提供支持。 若要详细了解计费和消耗率,请访问本文
  • 尽管基础模型可以处理多种语言,但大多数 AI 函数经过优化,可用于英语文本。
  • 在 AI 功能初始推出期间,使用 Fabric 内置 AI 终结点的用户每分钟暂时限制为 1,000 次请求。

ai.similarity 与 pandas 配合使用

ai.similarity 函数扩展了 Pandas Series 类。 对 pandas DataFrame 文本列调用函数,以计算每个输入行相对于单个公共文本值的语义相似性。 或者,该函数可以针对另一列中与输入列具有相同维度的对应成对值,计算每一行的语义相似度。

该函数返回包含相似性分数的 pandas 系列,该分数可以存储在新的 DataFrame 列中。

语法

df["similarity"] = df["col1"].ai.similarity("value")

参数

名称 说明
other
必填
一个 字符串,其中包含一个通用文本值,用于计算每个输入行的相似性分数;或者另一个 pandas 系列,其维度与输入相同,其中包含用于计算每个输入行的成对相似性分数的文本值。

退货

一个 pandas Series,其中包含每个输入文本行的相似度分数。 输出相似性分数是相对的,最适合用于排名。 分数范围从 -1(相反)到 1(相同)。 0 的分数表示值在含义上不相关。

# This code uses AI. Always review output for mistakes. 
# Read terms: https://azure.microsoft.com/support/legal/preview-supplemental-terms/

df = pd.DataFrame([ 
        ("Bill Gates"), 
        ("Satya Nadella"), 
        ("Joan of Arc")
    ], columns=["name"])
    
df["similarity"] = df["name"].ai.similarity("Microsoft")
display(df)

ai.similarity 与 PySpark 配合使用

ai.similarity 函数同样适用于 Spark 数据帧。 必须将现有输入列的名称指定为参数。 还必须为比较指定单个通用文本值,或指定另一列的名称进行成对比较。

该函数返回一个新的 DataFrame,其中包含存储在输出列中的每一行输入文本的相似性分数。

语法

df.ai.similarity(input_col="col1", other="value", output_col="similarity")

参数

名称 说明
input_col
必填
一个字符串,其中包含用于计算相似度分数的输入文本值的现有列名称。
otherother_col
必填
只需要其中一个参数。 other 参数是一个 字符串,其中包含一个通用文本值,用于计算每行输入的相似性分数。 other_col 参数是一个 字符串,它指定第二个现有列的名称,以及用于计算成对相似性分数的文本值。
output_col
自选
一个 字符串,其中包含新列的名称,用于存储每个输入文本行的计算相似性分数。 如果未设置此参数,则会为输出列生成默认名称。
error_col
自选
一个 字符串,该字符串包含新列的名称,该列存储因处理每个输入文本行而导致的任何 OpenAI 错误。 如果未设置此参数,则会为错误列生成默认名称。 如果输入行没有错误,则此列具有 null 值。

返回

Spark 数据帧,其中新增了一列,包含为每个输入文本行生成的相似性分数。 输出相似性分数是相对的,最适合用于排名。 分数范围从 -1(相反)到 1(相同)。 0 的分数表示值在含义上不相关。

# This code uses AI. Always review output for mistakes. 
# Read terms: https://azure.microsoft.com/support/legal/preview-supplemental-terms/

df = spark.createDataFrame([
        ("Bill Gates",), 
        ("Sayta Nadella",), 
        ("Joan of Arc",) 
    ], ["names"])

similarity = df.ai.similarity(input_col="names", other="Microsoft", output_col="similarity")
display(similarity)