返回知识库

AI 与提示 · 知识与检索

向量数据库Vector Database

向量数据库把高维向量、可过滤 payload 和近似最近邻索引放在一起:payload 先划定权限与业务边界,ANN 再访问少量候选取 top-k,并返回 id、分数与来源。它擅长大规模找“最像的几个”,但过滤写错会在检索前误伤正确记录。

让一次搜索请求穿过向量索引货架

同一条退款查询,先正常命中,再故意收紧 payload 过滤观察正确记录如何被误伤,最后恢复范围并保持查询不变复测。

这是一条真实语义搜索请求:向量库先用 payload 划定可见记录,再沿 ANN 索引访问少量格位,最后把 top-k 结果连同 id、分数和来源交给 RAG。

HNSW INDEX / support-kb向量索引货架ANN 已访问 4 / 8 格位
  1. V01GUIDE
    重置登录密码perm=public · cos 0.31已访问
  2. V02POLICY
    退款申请流程perm=public · cos 0.93命中
  3. V03GUIDE
    账户注销说明perm=public · cos 0.38未访问
  4. V04POLICY
    退款审核规则perm=internal · cos 0.89不在范围
  5. V05GUIDE
    双因素认证perm=public · cos 0.26未访问
  6. V06FAQ
    退款到账时间perm=public · cos 0.81命中
  7. V07POLICY
    数据保留期限perm=internal · cos 0.22不在范围
  8. V08FAQ
    订单号在哪里perm=public · cos 0.62已访问
payload filterperm = public
SEARCH REQUEST / req-2048“购买后怎么申请退款?”2 条可靠命中
query vector
[0.18, -0.47, … 1536 维]
top-k / distance
2 / cosine
payload
perm = public
RESULT TRAY
  1. 01
    V02 · 退款申请流程POLICY · perm=public
    0.93
  2. 02
    V06 · 退款到账时间FAQ · perm=public
    0.81

✓ 可回答:top-1 同时包含退款条件和申请路径,并保留记录 id 与来源。

V02 · 退款申请流程 · 0.93

公开范围保留了正确政策片段,ANN 沿索引只访问 4 个格位就把 V02 排到第 1。

公开范围保留了正确政策片段,ANN 沿索引只访问 4 个格位就把 V02 排到第 1。 现在故意把 payload 过滤误设为 FAQ only,观察正确记录如何在检索前消失。

从货架和托盘,记住四件事

向量数据库不是只存一串数字;它把向量、索引、payload 与可追溯结果放进同一套检索契约。

记录 = 向量 + id + payload
向量用来比较语义距离;id 用于更新和删除;来源、权限、版本、时间等 payload 用来过滤和回链。
ANN 索引让查询不必全表扫
HNSW、IVF 等索引只访问一部分候选,把大规模近邻搜索的延迟压下来,代价是可能漏掉少量真近邻。
payload 在检索前划边界
权限和租户过滤应进入数据库查询,避免不可见记录参与召回;但过滤条件写错也会像面板一样误伤正确结果。
返回的不只是分数
top-k 应带 id、score 与 payload,方便上层引用、重排序、校验和删除;高相似度本身不是答案。

什么时候用,什么时候不必上向量库

当核心问题是“大规模找最像的几个”,向量库才值得承担额外索引和一致性成本。

适合大规模语义相似搜索

RAG 召回、推荐、语义去重、以图搜图和语义缓存;查询与库记录都能转成同维向量。

不适合单用精确键、关系与范围查询

订单号、外键联表、金额范围和强事务写入,关系数据库或倒排索引通常更准、更便宜。

怎么用:从写入到可解释取回

写入端和查询端要共享模型、维度、距离度量与 payload 约定。

  1. 1upsert 记录写入 id、固定维向量和 source / perm / version 等 payload。
  2. 2建立 ANN 索引选 HNSW / IVF 等结构并记录可调候选范围,不把默认参数当永恒答案。
  3. 3过滤后取 top-k把租户与权限条件放进查询,返回 id、score、payload 和访问范围。
  4. 4评测与维护用真实查询测延迟、召回和过滤误伤;文档删除或版本切换时同步更新向量。

同一查询,只改过滤范围

都检索「购买后怎么申请退款」;差别只在 payload 是否正确表达公开可见范围。

正例perm=public → ANN → top-k

V02 公开政策进入候选并以 0.93 排第一,结果带 id、来源和分数,可继续交给 RAG。

反例source=faq 误当权限边界

正确的 policy 记录被提前过滤,只剩“退款到账时间”这一条偏题 FAQ;降低阈值也救不回已移除的 V02。

快速自测

向量库里 V02 与查询最相似,却始终没有出现在结果中;日志显示 filter=source:faq。第一步该查什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。