在 RAG、知识库、智能客服等场景中,“向量”“相似度”“召回”“重排序”经常成套出现。它们并不是玄妙的新术语,而是在解决一个很朴素的问题:怎样从大量资料里,先找出最可能回答当前问题的少数几段。
一、从关键词匹配到语义相似
传统搜索很擅长找“字面上相同”的内容。输入“订单取消”,包含这两个词的文档会优先被找出。它简单、快速、可解释,但遇到同义表达时会有局限:
- 用户说“退掉刚买的商品”,文档写“订单撤销”;
- 用户说“忘了密码怎么办”,文档写“账号凭证重置”;
- 用户使用口语、简称或错别字。
语义检索试图补足这一点。它不只看词是否一样,也尝试判断两段文字表达的含义是否接近。Embedding,通常译作“向量化”或“嵌入”,就是把文本转换成一串数值的过程。
二、什么是 Embedding?
可以把 Embedding 想象成给每段文本分配一个很长的坐标。现实中的地图用二维坐标标识位置;文本向量通常有数百甚至更多维度,人无法直接画出来,但计算机可以比较这些坐标之间的距离或夹角。
经过训练的向量模型,会让语义相近的文本在“向量空间”里更靠近,让差异较大的文本更远离。于是:
“取消订单的条件” → 一个向量
“订单撤销流程说明” → 另一个相近向量
“如何修改头像” → 一个较远向量
这里有一个重要边界:向量不是文本的加密副本,也不是模型“理解一切”的证明。它是从文本中提取的一种数值表示,擅长比较相关性,却不天然保证事实正确、时间最新或权限合规。
三、RAG 中的向量检索到底在做什么?
一个典型流程可以拆成六步:
- 文档切分:把长文档拆成适合检索的片段;
- 文档向量化:为每个片段生成并保存向量;
- 问题向量化:用户提问时,用同类模型把问题也转成向量;
- 近邻搜索:在大量文档向量中找出与问题最接近的一批候选片段;
- 重排序:对候选片段做更细致的相关性判断;
- 生成回答:把少数高相关片段连同问题交给大模型组织答案。
阿里云百炼的知识检索服务采用的就是类似的分层思路:可先做 Query 改写,再结合向量检索、关键词检索与排序模型,最后返回按相关性排序的切片。阿里云百炼:知识检索
四、为什么长文档要先切分?
一份 100 页的操作手册通常不会整体变成一个向量。因为“整本书”里包含太多主题,最终向量会过于宽泛,难以对应一个具体问题。
更合理的做法是按标题、段落或固定长度切成多个片段,再为每个片段生成向量。用户问“退款时限”时,系统就有机会找出“退款规则”那一段,而不是把整份手册塞给模型。
但切分也不能太随意:
- 太长:一个片段包含多个主题,检索会变模糊;
- 太短:必要的上下文被拆开,片段本身读不懂;
- 无重叠:刚好跨越边界的关键信息容易丢失;
- 全靠固定字数:标题、表格、代码块等结构可能被破坏。
因此,好的切分不是追求某个固定长度,而是尽量让每个片段表达一个相对完整的小主题。
五、相似度高,就一定相关吗?
不一定。向量检索是“先筛选”,不是最终裁判。
例如,用户问“取消已发货订单”,系统可能召回“未发货订单取消规则”,因为两者主题高度接近;但关键条件“已发货”不同,结论可能完全不同。又如,文档里有历史政策和新政策,旧版本也可能因表达相似而被召回。
这就是重排序(Rerank)的价值。它会对初步召回的一小批候选片段进行更细的比较,把真正更贴合问题的内容排到前面。百炼的向量与重排序模型说明中提到,重排序可在 Embedding 检索之后对 Top-N 结果重新排序,以提高 RAG 的检索精度。向量与重排序模型
在实践里,还常会加入关键词匹配、字段过滤、时间范围和权限过滤。因为有些条件并非“语义接近”就能替代,例如产品型号、合同编号、日期和用户所属部门。
六、向量检索、关键词检索和重排序如何分工?
| 方法 | 擅长什么 | 容易忽略什么 |
| 关键词检索 | 精确名称、型号、编号、专有名词 | 同义表达与口语化提问 |
| 向量检索 | 语义相近、表达多样的问题 | 精确条件、版本差异、时间变化 |
| 重排序 | 从候选中挑出更相关的片段 | 候选集里根本没有正确内容 |
三者组合通常比只依赖其中一种更稳。关键词保证精确约束不被忽略;向量扩大语义召回范围;重排序负责精细筛选。百炼知识库也支持向量召回数、相似度阈值、排序模型与字段过滤等配置,以适配不同资料类型和检索要求。阿里云百炼:知识库
七、检索错了,先检查哪里?
当 RAG 回答不理想时,很多人会先改提示词。提示词当然重要,但检索问题常常更早发生。可以按这条顺序排查:
- 资料是否存在:知识库里是否真的有答案,且版本最新?
- 切分是否合理:关键句是否被拆散,标题是否和正文一起保留?
- 查询是否明确:用户的“它”“那个”是否需要结合多轮上下文改写?
- 候选是否正确:初步召回里有没有真正相关片段?
- 排序是否准确:正确片段是否被排到足够靠前的位置?
- 模型是否忠实回答:模型是否基于证据作答,而不是自行补全?
这个顺序很重要:如果正确资料从未被召回,再好的生成模型也无法凭空引用它。
八、Embedding 不是只用于文本
向量化也可以用于图片、音频等多模态内容。核心思想不变:把不同类型的内容转换为可比较的数值表示,再做相似度检索。
例如,图片知识库可以从一张图片中提取特征并保存向量;之后用户用文字描述或另一张图片发起查询,系统便能尝试找到风格、对象或语义相近的内容。阿里云百炼知识库支持文本、图片等不同来源,并可使用多模态向量能力进行检索。知识库与多模态向量说明
不过,跨模态检索同样需要明确业务标准:所谓“相似”是颜色相近、商品类别相近,还是使用场景相近?不同目标需要不同数据和评测方式。
九、三个常见误解
误解 1:向量维度越高,检索一定越好
不一定。维度只是表示容量的一部分。数据质量、切分方式、模型适配性、排序和过滤策略都会影响结果。
误解 2:相似度分数可以当作绝对真相
不可以。分数更适合在同一配置下比较候选结果,而不是脱离业务语境给出“正确或错误”的唯一判定。
误解 3:有向量检索就不需要维护文档
不可以。过期、矛盾、重复或没有权限控制的资料,会被更高效地检索出来,却不会因此变得更可信。
结语
Embedding 让文本能够以“语义接近度”的方式被比较;向量检索负责从海量资料里初步找线索;重排序和业务过滤再帮助系统把线索变成更可靠的证据。
对 OPC中国 而言,理解这些基础概念的意义不在于亲手实现一个向量数据库,而在于知道 RAG 什么时候值得信任、什么时候需要继续核验。检索系统最理想的状态,不是“永远猜对”,而是能把相关证据准确地送到模型和用户面前。