不自己部署模型,也能搭出语义搜索
这一篇用 Palantir 提供的嵌入模型,端到端搭一个语义搜索工作流。你会学到怎么生成嵌入、怎么用无码方案快速起步, 以及怎么写一个能按相关性排序的检索函数。
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 提供的嵌入模型,端到端搭一个语义搜索工作流。你会学到怎么生成嵌入、怎么用无码方案快速起步,以及怎么写一个能按相关性排序的检索函数。
前置条件与这篇讲什么
先确认 AIP 已开启,再决定走官方模型还是自定义模型。
用 Palantir 提供的语言模型前,原文要求两件事:你的 enrollment 上必须已启用 AIP, 并且你要有使用 AIP 开发者能力(AIP developer capabilities)的权限。
整篇目标很明确:用官方嵌入模型,搭建一个端到端的语义搜索工作流。
核心思路是先生成嵌入、存进带 vector 类型属性的对象类型,再在 Workshop / AIP Logic 里使用。
总览:三条搭建路线
先有嵌入与对象类型,再选「无码」或「写函数」路线。
原文把所有路线归纳成「一个前置 + 三种选项」:
步骤一:生成嵌入并建对象类型
用 Pipeline Builder 的「Text to Embeddings」把文本变成向量。
无论走哪条路线,第一步都一样:先有「带向量的对象」。
- 在 Pipeline Builder 里,用 Text to Embeddings 表达式把数据集里的文本转成向量。
- 该表达式接收一个字符串,用某个 Palantir 提供的模型把它变成向量;原文示例用的是 text-embedding-ada-002。
- 生成的嵌入要作为 vector 类型的属性加进本体(Ontology)。
步骤二:两种无码方案
Workshop KNN 对象集,或 AIP Chatbot——都不写代码。
方案 A:Workshop 里的 KNN 对象集
原文提醒:KNN 对象集无法按相关性排序。若你需要有序结果,要用后面的「函数方案」(TSv1 / TSv2,两者都支持相关性排序)。 配置步骤如下:
方案 B:AIP Chatbot(无码)
在 AIP Chatbot Studio 里建一个 Chatbot,添加 Ontology context, 或一个 Ontology semantic search 工具(tool)。这样用户就能直接让机器人对对象做语义搜索了。
步骤三:写检索函数(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 字段 |
functions.json 里必须有 "enableVectorProperties": true 这一项,
否则 KNN 搜不动。这是 TSv1 仓库的产物;TSv2 / Python 没有等价设置,文档未说明可直接沿用。
functions-typescript/src/index.ts);
TSv2 是文件默认导出(位于 typescript-functions/src/functions,且文件名须与函数名一致);
Python 用 @function(beta=True) 声明(beta 特性)。
步骤四:发布并用于 Workshop / AIP Logic
发布函数后,在应用中调用;在 AIP Logic 里作为工具。
函数写好后,记得发布(publish)它,才能在 Foundry 各处使用。两种用法:
kValue / Python 的 k_value)按上限填即可。Use the findRelevantObjects tool with a kValue of 5...(注意查询加引号)。动手演示:点开每步看完整配置流程
下面是把这一篇串起来的分层流程,点每层展开细节。
官方模型方案的完整路径就这五层。逐层点开,把每步该做什么记下来——它就是你在 Foundry 里真正要点的按钮。
一页带走
延伸阅读 · 相关页面
按主题横向跳转,不必顺着目录一篇篇读。
常见问题速答 · FAQ
关于「不自己部署模型,也能搭出语义搜索」,读者最常问的几个问题。