在搜索结果中插入嵌入
对于搜索结果中的每一条记录,将数据从源字段发送到嵌入模型,并将返回的向量表示插入目标字段。
另请参阅
选项
- 
                                                
账户名是用于 AI 账户名的文本表达式。在当前文件中,使用配置 AI 账户脚本步骤设置账户,并在此脚本步骤运行之前随时为其分配此名称。
 - 
                                                
嵌入模型是生成嵌入向量的模型的名称。将模型名称指定为文本表达式。有关支持的模型,请参阅 FileMaker 技术规格。
 - 
                                                
来源字段是此脚本步骤将其值发送到模型以转换为嵌入向量的文本字段或容器字段。如果字段为空,则不会向模型发送任何内容,且目标字段保持不变。
 - 
                                                
目标字段指定要插入返回的嵌入向量的字段。如果您指定文本字段,返回的数据将存储为文本。如果您指定容器字段,则返回的数据将存储为二进制数据,该数据可能比存储为文本时小,并且可以改进使用嵌入向量执行的任何进一步处理。
 - 
                                                
替换目标内容将替换目标字段的内容(如果有的话)。若此选项关闭,则仅当字段为空时,才会将嵌入数据添加到目标字段中;否则,该字段保持不变。如果源字段的内容频繁更改,则打开此选项很有用。
 - 
                                                
“发生错误时继续”即使在某些记录中遇到错误,也继续获取搜索结果的嵌入向量。选择此选项后,出现错误的记录将保持为空,使其更容易找到和解决。如果未选择,脚本步骤在出现错误时停止。
 - 
                                                
显示摘要在插入嵌入向量完成后显示对话框。对话框总结已更新、已跳过或遇到错误的记录数量。
 - 
                                                
参数是 JSON 对象的文本表达式,用于指定对发送到模型的请求的大小、数量和频率的限制。根据数据量、使用的模型、模型提供商的令牌限制以及模型运行的机器的技术规格(核心、RAM 等),使用这些来优化脚本。详情请参阅“说明”。
 
兼容性
| 产品 | 是否支持 | 
| FileMaker Pro | 是 | 
| FileMaker Go | 是 | 
| FileMaker WebDirect | 是 | 
| FileMaker Server | 是 | 
| FileMaker Cloud | 是 | 
| FileMaker Data API | 是 | 
| 自定义 Web 发布 | 是 | 
原始版本
21.0
说明
对于当前搜索结果中的每个记录,此脚本步骤将源字段中的值发送到指定的模型,以转换为保存在目标字段中的嵌入向量。
如何使用嵌入向量的一个例子是执行语义查找脚本步骤,它可以查询此脚本步骤或插入嵌入脚本步骤产生的向量数据。
对于图像和文本嵌入向量,您可以使用与 FileMaker Server 一起安装的 AI 模型服务器所支持的模型。请参阅 FileMaker Server 帮助中的配置 AI 服务。
对于参数选项,如果需要,可以使用 JSON 对象中的以下键和值来调整此脚本步骤的行为。如果未指定密钥或未使用参数选项,则使用默认值。
| 
                                                         参数键  | 
                                                    
                                                         说明  | 
                                                    
                                                         数据类型1  | 
                                                    
                                                         默认值  | 
                                                    
                                                         值范围  | 
                                                    
                                                         仅限 OpenAI  | 
                                                
| 
                                                         
  | 
                                                    
                                                         每次 API 调用要处理的最大记录数量  | 
                                                    
                                                         
  | 
                                                    
                                                         20  | 
                                                    
                                                         1 到 500  | 
                                                    — | 
| 
                                                         
  | 
                                                    
                                                         API 调用失败时重试的最大次数  | 
                                                    
                                                         
  | 
                                                    
                                                         5  | 
                                                    
                                                         1 到 100  | 
                                                    — | 
| 
                                                         
  | 
                                                    
                                                         OpenAI API 调用之间的最长等待时间(以毫秒为单位)。仅当 OpenAI 每分钟收到太多请求时才使用。在这种情况下,此脚本步骤的 OpenAI API 调用之间最长等待   | 
                                                    
                                                         
  | 
                                                    
                                                         60,000  | 
                                                    
                                                         20 到 3,600,000  | 
                                                    
                                                         是  | 
                                                
| 
                                                         
  | 
                                                    
                                                         当   | 
                                                    
                                                         
  | 
                                                    
                                                         8,185  | 
                                                    
                                                         0 到 100,000  | 
                                                    
                                                         是  | 
                                                
| 
                                                         
  | 
                                                    
                                                         1 (true) 在向 OpenAI 发送之前,从来源字段中截断输入到  注释 如果输入被截断,执行语义查找可能会提供不太准确的结果。  | 
                                                    
                                                         
  | 
                                                    
                                                         1  | 
                                                    
                                                         0 或 1  | 
                                                    
                                                         是  | 
                                                
| 
                                                         
  | 
                                                    
                                                         当一组记录中遇到错误时,将参数设为 1 (true) 可对组内记录逐一进行重试:对于未引发错误的记录,插入其嵌入向量;对于引发错误的记录,则跳过不处理。若设为 0 (false),则会跳过整个出现错误的记录组,且不生成任何嵌入向量。 *默认禁用 AI 账户中指定的所有模型提供商,”自定义“除外,其默认启用  注释 启用此参数会覆盖”发生错误时继续“选项。  | 
                                                    
                                                         
  | 
                                                    
                                                         0*  | 
                                                    
                                                         0 或 1  | 
                                                    
                                                         —  | 
                                                
- 
                                                
如果使用 JSONSetElement函数创建 JSON 对象,请使用指示的常量来设置
type参数。 
例如,此 JSON 对象设置参数选项中的所有键:
{
    "MaxRecPerCall" : 40,
    "MaxRetryPerWorker" : 10,
    "MaxWaitPerRetry" : 300000,
    "TruncateTokenLimit" : 4000,
    "TruncateEnabled" : 1
}
                                            注释
- 
                                                
为了定期自动更新托管 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://my-server.example.com:8080/" ; 验证 SSL 证书 ;  API 密钥: Global::API_Key ]
        转到布局["会议详细信息"(会议); 动画: 无 ]
        显示所有记录
        在搜索结果中插入嵌入 [ 账户名称: "my-account"; 嵌入模型: "clip-ViT-L-14" ; 来源字段: Meetings::Image; 目标字段: Meetings::Image_Embedding; 替换目标内容 ; 发生错误时继续 ]