循序渐进 · 教学 · 语义搜索 Semantic search

用"意思"来搜,而不是用"字"

语义搜索(semantic search)按文本的内在含义来检索,而不是只靠关键词匹配。这一篇讲它背后的嵌入(embedding)原理, 以及怎样把搜索结果和本体对象连起来,让运营工作流更聪明。

原文 Semantic search · Overview 预计阅读 10 分钟 互动演示 + 6 道测验
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/ontology/overview-semantic-search/
原始标题:Semantic search · Overview

一句话速览

用"意思"来搜,而不是用"字":语义搜索(semantic search)按文本的内在含义来检索,而不是只靠关键词匹配。这一篇讲它背后的嵌入(embedding)原理,以及怎样把搜索结果和本体对象连起来,让运营工…

1 这一篇在讲什么
传统搜索靠"关键词匹配"——你输入什么字,系统就去找含这些字的文档
2 关键词搜索的局限
假设一份知识库里写着"面部遮挡物使用指南",而用户搜的是"口罩"
3 嵌入模型把文本变成向量
语义搜索靠 AI 模型把文本转换成向量(vector)——也就是一串数字组成的数组,也叫"嵌入(embedding)"
4 两条搭建路径(概览)
原文把后续学习资料分成两条线,本系列后面也会专门讲
1

这一篇在讲什么?

语义搜索:按含义检索,而非仅靠关键词或传统方法。

传统搜索靠"关键词匹配"——你输入什么字,系统就去找含这些字的文档。但用户的真实意图常常换了一种说法。 语义搜索(semantic search)要解决的正是这个问题:它根据文本的内在含义或上下文来检索, 而不只是依赖字面关键词。

Semantic search is a way to search for text based on the inherent meaning or context, rather than relying solely on keywords or other traditional search methods. 语义搜索是一种基于文本内在含义或上下文来检索的方式,而非仅仅依赖关键词或其他传统搜索方法。

这一篇是概览:先把"向量 / 嵌入"的直觉讲清楚,再告诉你怎么把搜索结果挂到本体对象上。 具体的搭建步骤(用官方模型、用自定义模型、做分块)留在本系列的后续几篇。

2

关键词搜索的局限

字面匹配会漏掉"同义但不同字"的相关内容。

假设一份知识库里写着"面部遮挡物使用指南",而用户搜的是"口罩"。关键词搜索只会找含"口罩"二字的文档,于是这篇指南被漏掉了——尽管它正是用户想要的。

✗ 关键词搜索
查询:口罩 命中:标题里出现"口罩"的文档 漏掉:面部遮挡物 / 呼吸防护 (同义,但字不一样 → 找不到)
✓ 语义搜索
查询:口罩 命中:意思相近的文档 包括:面部遮挡物 / 呼吸防护 (理解含义 → 找得到)

语义搜索不是要取代关键词搜索,而是补上"按意思找"这一层——尤其适合海量非结构化文本(PDF、工单、报告)。

3

核心原理:嵌入模型把文本变成向量

embedding model 输出一串数字(向量),意思越近、向量越近。

语义搜索靠 AI 模型把文本转换成向量(vector)——也就是一串数字组成的数组,也叫"嵌入(embedding)"。 如果模型够好,那么在一个 N 维空间里,彼此靠近的向量,就代表含义相近的文本

输入一段文本
原始的句子 / 段落 / 文档
例如:"face mask"(口罩)、"face covering"(面部遮挡物)、"respirator"(呼吸器)。
模型嵌入模型 embedding model
把文本编码成一串数字
每个文本变成一个长度为 N 的向量。模型的质量决定了"近义文本是否真的向量相近"。
空间N 维空间里的最近邻
向量越近 = 含义越近
原文例子:"face mask" 的向量,比 "respirator" 更接近 "face covering"。检索 = 找最近的向量。
If the model is effective, the vectors, each of size N, that are close to each other in N-dimensional space are the ones that have similar underlying or semantic meaning. For example, the embedding vector of "face mask" will be closer to the embedding vector of "face covering" than it is to "respirator." 如果模型有效,那么在 N 维空间里彼此靠近的向量,正代表含义相近的文本。例如 "face mask" 的嵌入向量比 "respirator" 更接近 "face covering"。
4

把嵌入文本关联到本体对象

检索到的"近邻向量"一旦对应到对象,工作流就能直接用了。

光有向量还不够。原文强调:如果嵌入后的文本关联到本体(Ontology)里的某个对象, 你的"搜索驱动型运营工作流"会变得非常有用。

因为"找和某条查询相关的实体",本质上就变成了"在 N 维空间里找最近的向量"。 于是:

找相关实体
给定一段查询,返回向量最接近的本体对象列表。
找与某实体相关的
给定一个对象,返回和它语义相近的其他对象。
关键一步:嵌入向量必须和本体对象"绑"在一起(每个对象有自己的嵌入表示),语义搜索才能在 Workshop、Vertex 等应用里直接驱动检索与工作流。
5

两条搭建路径(概览)

用 Palantir 提供的模型,或用你自己的自定义模型。

原文把后续学习资料分成两条线,本系列后面也会专门讲:

路径适合本系列后续
用 Palantir 提供的模型 想快速起步、省去选模型与部署的麻烦 semantic-search-palantir-models.html
用自定义模型 已有自有嵌入模型、需要更可控 semantic-search-custom-models.html

练一练:该走哪条线?

配合 PDF 使用:原文还提到,做语义搜索时可以把长文档分块(chunking)再分别嵌入,效果更好——这正好衔接本系列下一篇《文档处理》。
6

动手演示:相似度排序

点一个查询,看结果按"向量距离 / 相似度"重新排序。

下面是一份知识库(8 篇)。点一个查询,右侧会按"与查询的相似度"从高到低排出结果, 并用横条显示相似度。越靠前 = 在向量空间里离查询越近 = 含义越相关。

动手试试 · 语义检索的相似度排序
点上方查询词,看结果如何按相似度排序

说明:这是教学用简化模型——真实语义搜索由嵌入模型算出查询与每篇文档的向量,再用余弦相似度排序。这里用预设的近似分数,只为你直观感受"意思越近排越前"。

一页带走

① 按意思找
语义搜索基于含义 / 上下文,不只靠关键词。
② 向量即含义
嵌入模型把文本编码成向量,近邻 = 近义。
③ 绑到对象
嵌入关联本体对象,检索直接驱动工作流。
④ 两条路径
官方模型快速起步;自定义模型更可控。

延伸阅读 · 相关页面

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

常见问题速答 · FAQ

关于「用"意思"来搜,而不是用"字"」,读者最常问的几个问题。

这一篇在讲什么?
传统搜索靠"关键词匹配"——你输入什么字,系统就去找含这些字的文档。但用户的真实意图常常换了一种说法。语义搜索(semantic search)要解决的正是这个问题:它根据文本的内在含义或上下文来检索,而不只是依赖字面关键词。
关键词搜索的局限是什么?
假设一份知识库里写着"面部遮挡物使用指南",而用户搜的是"口罩"。关键词搜索只会找含"口罩"二字的文档,于是这篇指南被漏掉了——尽管它正是用户想要的。
核心原理:嵌入模型把文本变成向量是什么?
语义搜索靠 AI 模型把文本转换成向量(vector)——也就是一串数字组成的数组,也叫"嵌入(embedding)"。如果模型够好,那么在一个 N 维空间里,彼此靠近的向量,就代表含义相近的文本。
把嵌入文本关联到本体对象是什么?
光有向量还不够。原文强调:如果嵌入后的文本关联到本体(Ontology)里的某个对象,你的"搜索驱动型运营工作流"会变得非常有用。