循序渐进 · 教学 · 用官方模型做语义搜索 Palantir-provided models

不自己部署模型,也能搭出语义搜索

这一篇用 Palantir 提供的嵌入模型,端到端搭一个语义搜索工作流。你会学到怎么生成嵌入、怎么用无码方案快速起步, 以及怎么写一个能按相关性排序的检索函数。

全部目录 ← 上一篇 用官方模型做语义搜索 下一篇 →
原文 Use Palantir-provided models to create a semantic search workflow 预计阅读 12 分钟 互动演示 + 6 道测验
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/ontology/using-palantir-provided-models-to-create-a-semantic-search-workflow/
原始标题:Use Palantir-provided models to create a semantic search workflow

一句话速览

不自己部署模型,也能搭出语义搜索:这一篇用 Palantir 提供的嵌入模型,端到端搭一个语义搜索工作流。你会学到怎么生成嵌入、怎么用无码方案快速起步,以及怎么写一个能按相关性排序的检索函数。

1 前置条件与这篇讲什么
用 Palantir 提供的语言模型前,原文要求两件事:你的 enrollment 上必须已启用 AIP,并且你要有使用 AIP 开…
2 三条搭建路线
原文把所有路线归纳成「一个前置 + 三种选项」
3 生成嵌入并建对象类型
无论走哪条路线,第一步都一样:先有「带向量的对象」
4 两种无码方案
原文提醒:KNN 对象集无法按相关性排序
1

前置条件与这篇讲什么

先确认 AIP 已开启,再决定走官方模型还是自定义模型。

用 Palantir 提供的语言模型前,原文要求两件事:你的 enrollment 上必须已启用 AIP, 并且你要有使用 AIP 开发者能力(AIP developer capabilities)的权限。

先分清路线:如果你要用的是自己的模型,请直接看本系列下一篇《用自定义模型做语义搜索》。 这一篇只讲「用 Palantir 提供的嵌入模型」。

整篇目标很明确:用官方嵌入模型,搭建一个端到端的语义搜索工作流。 核心思路是先生成嵌入、存进带 vector 类型属性的对象类型,再在 Workshop / AIP Logic 里使用。

2

总览:三条搭建路线

先有嵌入与对象类型,再选「无码」或「写函数」路线。

原文把所有路线归纳成「一个前置 + 三种选项」:

前置:生成嵌入 + 建对象类型
用 Pipeline Builder 把文本转成向量,落到本体的 vector 属性上(三条路线共用)。
选项 A:Workshop KNN 对象集(无码)
在 Workshop 里配一个 KNN 对象集,零代码做语义搜索。
选项 B:AIP Chatbot(无码)
在 AIP Chatbot Studio 里加「本体语义搜索」工具,让机器人代你搜。
选项 C:写检索函数
写函数跨对象做语义搜索,可在 Workshop 与 AIP Logic 复用,且能按相关性排序。
3

步骤一:生成嵌入并建对象类型

用 Pipeline Builder 的「Text to Embeddings」把文本变成向量。

无论走哪条路线,第一步都一样:先有「带向量的对象」。

  • Pipeline Builder 里,用 Text to Embeddings 表达式把数据集里的文本转成向量。
  • 该表达式接收一个字符串,用某个 Palantir 提供的模型把它变成向量;原文示例用的是 text-embedding-ada-002
  • 生成的嵌入要作为 vector 类型的属性加进本体(Ontology)。
想更可控:若需要对官方模型的嵌入生成有更多控制,原文指向「Python transforms 里的语言模型」用法, 可以在 Python transform 中调用 Palantir 提供的模型来生成嵌入。
4

步骤二:两种无码方案

Workshop KNN 对象集,或 AIP Chatbot——都不写代码。

方案 A:Workshop 里的 KNN 对象集

原文提醒:KNN 对象集无法按相关性排序。若你需要有序结果,要用后面的「函数方案」(TSv1 / TSv2,两者都支持相关性排序)。 配置步骤如下:

配置建对象集变量并选 embedding 属性
新建对象集变量 → 选含嵌入属性的对象类型 → 「+ On a property」选你的嵌入属性
选对属性后,KNN 配置面板会自动出现;若没出现,检查所选属性是否确为 embedding 类型。
参数K-value 与 Query
K-value:返回多少个对象;Query:用作查询的字符串变量
K-value 范围是 1–100。再建一个文本输入组件,把它的输出变量填进 KNN 的 Query。
展示对象表组件接 KNN 对象集
用户一输入,对象表就刷新出语义相关的结果
最后加一个 Object table 组件,输入变量选刚才的 KNN 对象集即可。

方案 B:AIP Chatbot(无码)

AIP Chatbot Studio 里建一个 Chatbot,添加 Ontology context, 或一个 Ontology semantic search 工具(tool)。这样用户就能直接让机器人对对象做语义搜索了。

5

步骤三:写检索函数(TSv1 / TSv2 / Python)

函数能按相关性排序,且可在 Workshop 与 AIP Logic 复用。

要「按相关性排序」或做更复杂逻辑,就得写函数,对对象类型跑 KNN 搜索。三种版本差别如下:

版本查询嵌入怎么来邻居数 k相关性排序
TypeScript v1 用同款官方模型自己先嵌入查询,再把向量传给 nearestNeighbors 0 < K ≤ 100 额外调用 .orderByRelevance()
TypeScript v2 把用户文本直接传给 nearestNeighbors(它接受向量或文本) numNeighbors 1–500 fetchPage()$orderBy:"relevance"
Python 同样把查询文本传给 nearest_neighbors 由搜索范围约束 返回对象带 _score 字段
TSv1 专属配置:函数代码仓库的 functions.json 里必须有 "enableVectorProperties": true 这一项, 否则 KNN 搜不动。这是 TSv1 仓库的产物;TSv2 / Python 没有等价设置,文档未说明可直接沿用。
代码组织差异:TSv1 函数是导出类上的方法(通常在 functions-typescript/src/index.ts); TSv2 是文件默认导出(位于 typescript-functions/src/functions,且文件名须与函数名一致); Python 用 @function(beta=True) 声明(beta 特性)。
6

步骤四:发布并用于 Workshop / AIP Logic

发布函数后,在应用中调用;在 AIP Logic 里作为工具。

函数写好后,记得发布(publish)它,才能在 Foundry 各处使用。两种用法:

在 Workshop 用
加一个文本输入组件当函数入参;再加一个对象列表组件,输入选「函数生成的对象集」。邻居数(TSv1 的 kValue / Python 的 k_value)按上限填即可。
在 AIP Logic 用
把发布的函数作为工具(tool)加进 AIP Logic,用类似下面的提示让 LLM 调用它:
Use the findRelevantObjects tool with a kValue of 5...(注意查询加引号)。
7

动手演示:点开每步看完整配置流程

下面是把这一篇串起来的分层流程,点每层展开细节。

官方模型方案的完整路径就这五层。逐层点开,把每步该做什么记下来——它就是你在 Foundry 里真正要点的按钮。

第 1 层确认 AIP 已启用 + 有权限
enrollment 开启 AIP,且你有 AIP developer capabilities 权限
这是所有后续步骤的前提;权限不够时函数与模型都调不动。
第 2 层Pipeline Builder 生成嵌入 + 建对象类型
Text to Embeddings 表达式(模型:text-embedding-ada-002)→ vector 属性
把文本的嵌入作为 vector 类型属性写进本体对象;这是三条路线共用的基础。
第 3 层选无码方案(可选)
Workshop KNN 对象集(K 1–100,不排序)或 AIP Chatbot 工具
零代码即可起步;若要相关性排序,跳过这层直接写函数。
第 4 层写检索函数(要排序就上这层)
TSv1 自嵌查询 / TSv2·Python 直传文本;KNN 搜索对象
TSv1 需 functions.json 里 enableVectorProperties:true;k 上限 100(TSv1)/500(TSv2)。
第 5 层发布并在 Workshop / AIP Logic 使用
发布函数 → Workshop 文本输入+对象列表;或 AIP Logic 加为工具
在 AIP Logic 里用提示让 LLM 调工具,例如 kValue of 5 找最相关对象。

一页带走

① 先开 AIP
启用 AIP + 开发者权限,是前提。
② 嵌入进本体
Pipeline Builder 生成向量,存为 vector 属性。
③ 无码或写函数
KNN/Chatbot 零代码;要排序就写函数。
④ 发布复用
函数发布后可在 Workshop 与 AIP Logic 使用。

延伸阅读 · 相关页面

按主题横向跳转,不必顺着目录一篇篇读。

常见问题速答 · FAQ

关于「不自己部署模型,也能搭出语义搜索」,读者最常问的几个问题。

前置条件与这篇讲什么?
用 Palantir 提供的语言模型前,原文要求两件事:你的 enrollment 上必须已启用 AIP,并且你要有使用 AIP 开发者能力(AIP developer capabilities)的权限。
总览:三条搭建路线是什么?
原文把所有路线归纳成「一个前置 + 三种选项」。
步骤一:生成嵌入并建对象类型是什么?
无论走哪条路线,第一步都一样:先有「带向量的对象」。
动手演示:点开每步看完整配置流程是什么?
官方模型方案的完整路径就这五层。逐层点开,把每步该做什么记下来——它就是你在 Foundry 里真正要点的按钮。