向量检索的原理是什么?

考查重点:向量表示、相似度与近似搜索。把问题与文档映射到同一向量空间,按余弦或距离找相近向量;大规模时用近似索引缩小搜索,再看召回与延迟

本题目录

参考答案

核心回答

向量检索先用Embedding模型把文档与查询映射到可比较的向量空间,再按余弦相似度、内积或距离,找出与查询最接近的文档向量。离线阶段处理文档、生成向量并建立索引;在线阶段编码用户问题,检索Top-K候选,再按ID取回原文和元数据。

它能把一些不同措辞但意思接近的表达联系起来。例如“关闭自动续费”可以匹配“取消订阅”的说明,但效果依赖模型及业务数据。向量相似表示检索信号,不等于候选已经回答问题,也不保证错误码、版本号等精确条件都正确。

相似度为什么有意义

Embedding模型通过相应训练目标,让相关查询与文档的表示更接近。数据库不负责重新理解文本,而是按照选定度量在这些向量中搜索。建库与查询应使用兼容的模型版本、维度、归一化和编码约定;非对称检索还可能分别使用query/document提示或编码路径。

余弦比较方向,内积同时受向量长度影响,欧氏距离比较空间距离;应按照模型训练与索引约定选择。当非零向量都归一到单位长度时,余弦与内积相同,欧氏距离平方也满足 ||q-d||²=2-2×cos(q,d),因而对应排序一致。

用二维单位向量作计算示意:q=(1,0),A=(0.8,0.6),B=(0,1)。余弦相似度分别为0.8与0,A排在B之前。这里的数值是说明度量方法,实际文本向量由模型产生,不能据此给每一维指定固定语义。

怎样从全量比较加速到索引

精确搜索逐个计算查询与所有向量的相似度,可作为小数据集或离线评估的基线。N条D维向量的全量距离计算约为O(ND),此外还要选择Top-K结果;向量数量与维度增长都会增加成本。

大规模时可采用ANN近似最近邻索引。例如IVF先寻找相关分桶,再在选中桶里扫描;HNSW利用多层邻接图导航,逐步接近查询附近的候选。减少计算的代价是可能漏掉真正最近邻,还要承担建索引、内存和更新维护成本。

因此搜索范围与返回K是不同参数。不能只增大最终K而不检查索引搜索预算,也不能把近似索引找出的Top-K当作全库精确Top-K。

工程上还要保存什么

向量随片段ID、文档版本、来源和权限元数据保存,查询结果才能取回正确原文并校验访问范围。更新Embedding模型时通常需要重建相应文档向量,避免在同一索引里混合不可比较的空间。

过滤条件会改变有效候选集合,过严过滤或过滤后的候选不足,都可能造成漏召回。实际选型要用业务问题同时测量证据覆盖、精确检索对照召回、延迟和资源;需要精确实体匹配时可以结合关键词检索,排序仍不佳时再评估重排。

常见追问

一定要单独的向量数据库吗? 不一定。可以采用带向量索引能力的现有数据库、检索引擎或专用向量库,按规模、筛选、更新和运维条件比较。

相似度很高为什么仍然答错? 可能只是主题相似,缺少所问条件,也可能片段不完整、版本过期或生成阶段误解。需要沿编码、索引召回、排序与生成分别定位。

对应教程

参考资料

相关面经

5 篇

百度

后端开发工程师
一面
查看原面经 →
语义查询的底层原理讲一下。

字节跳动

前端开发工程师
一面
查看原面经 →
向量检索的算法

百度

面经合集
查看原面经 →
讲一下你说的向量检索的原理

百度

Agent 应用开发工程师
秋招一面、二面、三面
查看原面经 →
讲一下你说的向量检索的原理

字节跳动

全栈开发工程师(Agent)
一面
查看原面经 →
embedding,rag如何检索向量?

收录题集

3 个来源,共5 份题集

检索与知识工程问答

Guide · JavaGuide · 1 条原题

查看题集 →

Agent开发面试题

摸鱼酱mio · 个人整理 · 1 条原题

查看题集 →

阿里巴巴问答汇编

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

数据库高频知识点

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

字符串与高级索引

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

相关题目

4 题