在搜索结果中插入嵌入

对于搜索结果中的每一条记录,将数据从源字段发送到嵌入模型,并将返回的向量表示插入目标字段。

选项 

  • 账户名是用于 AI 账户名的文本表达式。在当前文件中,使用配置 AI 账户脚本步骤设置账户,并在此脚本步骤运行之前随时为其分配此名称。

  • 嵌入模型是生成嵌入向量的模型的名称。将模型名称指定为文本表达式。有关支持的模型,请参阅 FileMaker 技术规格

  • 来源字段是此脚本步骤将其值发送到模型以转换为嵌入向量的文本字段或容器字段。如果字段为空,则不会向模型发送任何内容,且目标字段保持不变。

  • 目标字段指定要插入返回的嵌入向量的字段。如果您指定文本字段,返回的数据将存储为文本。如果您指定容器字段,则返回的数据将存储为二进制数据,该数据可能比存储为文本时小,并且可以改进使用嵌入向量执行的任何进一步处理。

  • 替换目标内容将替换目标字段的内容(如果有的话)。若此选项关闭,则仅当字段为空时,才会将结果添加到目标字段中;否则,该字段保持不变。如果源字段的内容频繁更改,则打开此选项很有用。

  • 发生错误时继续即使在某些记录中遇到错误后,也会继续处理搜索结果。选择此选项后,出现错误的记录将保持为空,使其更容易找到和解决。如果未选择,脚本步骤在出现错误时停止。

  • 显示摘要在插入嵌入向量完成后显示对话框。对话框总结已更新、已跳过或遇到错误的记录数量。

  • 参数是 JSON 对象的文本表达式,可以包括:

    • FileMaker 特定的参数,用于指定发送到模型的请求的大小、数量和频率的限制。根据数据量、使用的模型、模型提供商的令牌限制以及模型运行的机器的技术规格(核心、RAM 等),使用这些来优化脚本。

    • 直接传递给模型提供商的模型提供商特定参数。有关您正在使用的模型支持的参数和值,请参阅模型提供商的文档。当 AI 账户为“模型提供商”选项指定“自定义”时,不支持这些参数。

    详情请参阅“说明”。

兼容性 

产品 是否支持
FileMaker Pro
FileMaker Go
FileMaker WebDirect
FileMaker Server
FileMaker Cloud
FileMaker Data API
自定义 Web 发布

原始版本 

21.0

说明 

对于当前搜索结果中的每个记录,此脚本步骤将源字段中的值发送到指定的模型,以转换为保存在目标字段中的嵌入向量。

如何使用嵌入向量的一个例子是执行语义查找脚本步骤,它可以查询此脚本步骤或插入嵌入脚本步骤产生的向量数据。

对于图像和文本嵌入向量,您可以使用 Claris AI Model Server 支持的模型。请参阅 FileMaker Server 帮助中的配置 AI 服务

对于参数选项,如果需要,可以使用 JSON 对象中的以下 FileMaker 特定键和值来调整此脚本步骤的行为。如果未指定密钥或未使用参数选项,则使用默认值。

参数键

说明

默认值

值范围

仅限 OpenAI

MaxRecPerCall

每次 API 调用要处理的最大记录数量

20

1 到 500

MaxRetryPerWorker

API 调用失败时重试的最大次数

5

1 到 100

MaxWaitPerRetry

OpenAI API 调用之间的最长等待时间(以毫秒为单位)。仅当 OpenAI 每分钟收到太多请求时才使用。在这种情况下,此脚本步骤的 OpenAI API 调用之间最长等待 MaxWaitPerRetry。如果等待时间超过此最大值,此脚本步骤将停止并返回错误。

60,000

20 到 3,600,000

TruncateTokenLimit

TruncateEnabled 打开时从源字段中截断输入的标记数量。

8,185

0 到 100,000

TruncateEnabled

1 (true) 在向 OpenAI 发送之前,从来源字段中截断输入到 TruncateTokenLimit

注释  如果输入被截断,执行语义查找可能会提供不太准确的结果。

1

0 或 1

RetryOnError

当一组记录中遇到错误时,1 (true) 单独重新尝试组中的记录,为那些没有错误的记录插入数据,并跳过那些会造成错误的记录。0 (false) 跳过遇到错误的整组记录,并且不生成数据。

*默认禁用 AI 账户中指定的所有模型提供商,”自定义“除外,其默认启用 RetryOnError

注释  启用此参数会覆盖”发生错误时继续“选项。

0*

0 或 1

注释  如果使用 JSONSetElement函数创建 JSON 对象,请使用 JSONNumber 常量来设置 type 参数。

例如,这个 JSON 对象在“参数”选项中设置了以下键:

复制
{
    "MaxRecPerCall" : 40,
    "MaxRetryPerWorker" : 10
}

上表中列出的参数是管理处理多个记录的 FileMaker 特定参数。在将 JSON 对象中包含的任何其他参数直接传递给模型提供商之前,这些参数将被处理和删除。

注释 

  • 为了定期自动更新托管 FileMaker Pro 文件中的目标字段,您可以在主机上设置一个时间表,以在没有用户交互的情况下运行 FileMaker 脚本。请参阅 FileMaker Server 帮助FileMaker Cloud 帮助中的 FileMaker 脚本时间表。

示例 1

配置 AI 账户,转到会议详细信息布局,显示所有记录,然后在 Meetings::Note 字段中获取文本的嵌入向量,并将其作为二进制数据存储在 Meetings::Note_Embedding 容器字段中。由于替换目标内容选项已打开,因此即使已经包含数据,Meetings::Note_Embedding 也会更新。

复制
配置 AI 账户 [ 账户名称: "my-account" ; 模型提供商: OpenAI ; API 密钥: "sk-RZCtpWT..." ]

转到布局 [ "会议详细信息" (会议) ; 动画: 无 ]
显示所有记录

在搜索结果中插入嵌入 [ 账户名称: "my-account" ; 嵌入模型: "text-embedding-3-small" ; 源字段: Meetings::Note ; 目标字段: Meetings::Note_Embedding ; 替换目标内容 ]

示例 2 

配置 AI 账户,转到“会议详细信息”布局,然后找到 Meetings::Title 字段包含“状态”的记录。对于此搜索结果,获取 Meetings::Note 字段中文本的嵌入向量,如果没有数据(替换目标内容已关闭),将其作为二进制数据存储在 Meetings::Note_Embedding 容器字段中。另请设置参数选项,以增加每次调用的记录数、重试次数和重试之间的时间,并降低令牌限制。

复制
配置 AI 账户 [ 账户名称: "my-account" ; 模型提供商: OpenAI ; API 密钥: "sk-RZCtpWT..." ]

转到布局 [ "会议详细信息" (会议) ; 动画: 无 ]
进入查找模式 [ 暂停: 关闭 ]
设置字段 [ Meetings::Status ; "完成" ]
执行查找 [ ]

在搜索结果中插入嵌入 [ 账户名称: "my-account" ; 嵌入模型: "text-embedding-3-small" ; 源字段: Meetings::Note ; 目标字段: Meetings::Note_Embedding ; 
参数: JSONSetElement ( "" ;
    ["MaxRecPerCall" ; 40 ; JSONNumber] ; 
    ["MaxRetryPerWorker" ; 10 ; JSONNumber] ; 
    ["MaxWaitPerRetry" ; 300000 ; JSONNumber] ;
    ["TruncateTokenLimit" ; 4000 ; JSONNumber] ;
    ["TruncateEnabled" ; 1 ; JSONNumber]
) ]

示例 3

为自定义模型提供商配置 AI 账户,转到会议详细信息布局,显示所有记录,然后对于每个记录使用图像嵌入模型在 Meetings::Image 容器字段中获取图像的嵌入向量,并将其作为二进制数据存储在 Meetings::Image_Embedding 容器字段中。如果在获取记录的嵌入向量时遇到错误,脚本步骤将继续到下一个记录。

复制
配置 AI 账户 [ 账户名称:"my-account";模型提供商: 自定义; 端点: "https://myserver.example.com/llm/v1/" ; 验证 SSL 证书 ;  API 密钥: Global::API_Key ]

        转到布局["会议详细信息"(会议); 动画: 无 ]
        显示所有记录

        在搜索结果中插入嵌入 [ 账户名称: "my-account"; 嵌入模型: Global::ModelName ; 来源字段: Meetings::Image; 目标字段: Meetings::Image_Embedding; 替换目标内容 ; 发生错误时继续 ]