🎉 新版站点已上线 — 新用户请在 v2.cloudmist.cloud 注册使用,本站教程均以新站地址为准 · 老用户账号已迁移完成,用原用户名/邮箱 + 原密码可直接登录 新站(登不上请在用户名后加 _82350),原站余额可继续在 api.cloudmist.cloud 用完,新站需重建令牌并改用新站 base_url
首页 › 教程 · 文章 › Embeddings 向量怎么做相似度检索?从索引配对到结果验收

Embeddings 向量怎么做相似度检索?从索引配对到结果验收

云岚API · 教程 · 更新于 2026-10-25

先把向量与原文正确配对,再确认可比较的向量空间,最后计算相似度并用真实问题验收。接口返回一串数字,只证明拿到了数据;排出了前几个结果,也不证明其中存在答案。下面把“收到 embedding”到“交出可用候选”的检查拆开,避免直接把最高分材料送进回答流程。

本文由云岚API整理,官方资料核对日期为 2026 年 10 月 24 日。附带工具只运行人工向量的本地演练,没有调用真实模型,也不代表任何中转接口的兼容测试。

第一步:保留输入清单,核对每条向量对应谁

以 OpenAI Embeddings 响应为例,data 项包含 index 和 embedding,响应还提供 model。输出可为浮点数组或 base64 编码;先确认实际格式,再处理数值。接口字段说明

发起批量请求前,保存该批输入的顺序与唯一文档 ID。收到响应后按接口的索引约定配对,检查数量是否完整、索引是否重复或越界。自己的并发合并、排序和存储同样可能打乱位置,不能把“数组第一项”永远当作“文档第一篇”。

需要保留的内容 用于核对什么
批次 ID、输入位置、文档 ID 返回向量与原文一一对应
原文版本、切分及清理规则 找到的是哪一版、哪一段材料
模型及版本、实际维度、编码配置 查询与文档能否直接比较
请求时间与必要的响应记录 失败后定位,不靠猜测补数据

不同批次的 index 可能都从 0 开始,不能当作全库唯一 ID。若接口采用别的配对方式,应遵循其协议;缺失对应关系时停止入库,不补零向量占位。路径或协议尚未确认,可先看接口地址与协议检查。

例如第二批的第一个输入,对应的是“第二批清单中的文档”,而非第一批的首篇。原文更新后,即使文档 ID 没变,旧向量也可能已过时;保留内容版本,才能区分检索算法问题与索引没有更新。

第二步:同维度还不够,要属于同一向量空间

查询和文档需要按同一套兼容的模型与编码流程得到向量。同为 1024 个数字,并不能说明来自不同模型的两组坐标可比较;修改输出维度也应建立对应的新索引并重新验收。OpenAI 向量指南

这里的“一套流程”不要求两端文字处理完全相同。有的模型区分短查询与长文档,需要配套的 query/document 提示或编码方法。Sentence Transformers 对这类非对称检索推荐使用相应的 encode_query 与 encode_document;应按模型规定配对使用。语义检索说明

入库和查询都检查三件事:每条长度符合声明维度;分量是有限数字,不是字符串、布尔值或 NaN/Infinity;向量不是全零。本文工具把零向量视作需排查的数据,直接拒绝计算余弦。不要用截断、补零或把异常值改成 0 来掩盖问题。

第三步:计算余弦,先验证排序代码

余弦相似度是点积除以两条向量长度的乘积:cos(a,b) = dot(a,b) / (norm(a) × norm(b))。对非零向量,它衡量方向接近程度;分数不是答案正确概率。只有满足单位长度归一化等条件,才能把点积直接当余弦使用。计算定义

下载向量检查与相似度演练包,解压后在目录里运行:

python3 embedding_check.py example-synthetic.json --top-k 3

包内只有 Python 标准库代码、人工向量、说明和空白验收表,无需 API Key。人工查询 [1,0,0] 对应三个文档向量,预期顺序是 doc-a: 1、doc-b: 0、doc-c: -1。输入故意打乱 data 顺序,检查程序能否仍把分数归到正确文档 ID。

工具采用自定义清单,并非直接接收所有服务商响应。它检查完整索引、数值、维度和 space_id,再计算前 K 项;标记相同只证明你填写一致,不能验证真实模型身份。详细字段和限制见包内 README,base64 需先正确解码,跨批数据需先恢复明确映射。

第四步:用真实查询验收候选,不只看最高分

数值演练通过后,才开始对自己的语料评估。先准备真实问题及其相关文档 ID,包含同义表达、容易混淆的内容和库中没有答案的问题,再固定语料版本、编码配置与 K 比较。检索评价需要查询、语料和相关性标注;不是用模型自己给出的相似度代替标签。检索评价所需数据

查询类型 重点记录
同义表达 相关材料是否进入前 K,排在何处
名字相近但条件不同 是否把过期规则或不同产品混进来
库中没有答案 是否正确保留“无合格候选”这一结果

包内 retrieval-acceptance.csv 可填写预期文档、实际候选、分数、相关条数及接纳理由。先人工标注再对照结果;调整阈值时使用一组样本,另留未参与调整的问题检查,避免只把已知示例调好。

比较两次结果时,一次只改一个主要因素,例如模型或切分方式,并保留各自配置。若相关材料没有进入候选,先检查配对、语料版本和编码;若进入候选却不能回答问题,则回到原文确认是否缺少必要条件。增加 K 会多取材料,也可能增加干扰,不能只记录“返回条数更多”。

交给后续流程的记录至少带查询 ID、文档 ID、原文定位、版本、分数及接纳理由。这样即使生成答案有误,也能回查是没有检索到材料,还是后续误读了材料,而不是把整条链路统一归为“模型不好”。

前 K 排序会从现有向量中选出最近的项,不能据此认定它们合格。阈值要结合模型、语料和错误代价验证,不设通用的“0.8 即通过”。送入重排或回答流程前,再核对原文、版本、访问权限;最终输出仍可按JSON 与事实验收检查。重复生成向量的用量则单独按账单核对方法记录,不从相似度推断费用。

常见问题

维度相同就能混用不同模型的向量吗?

不能。长度相同不代表坐标含义相同。查询与文档应使用兼容的同一空间;更换模型后分别重建、比较,不直接混排旧向量。

余弦 0.8 是 80% 准确吗?

不是。它是向量方向的相似度数值。是否相关需要业务标签验证,不同模型和语料不能照搬同一阈值。

已返回前 K 条,为什么仍可能没有答案?

排序只回答“谁更近”,语料可能根本没有相关内容。保留无答案测试和拒绝候选的规则,不强制把第一条当依据。

这个演练能证明 API 或模型效果正常吗?

不能。它只验证本地数值检查、索引配对与余弦排序。真实语义效果需用实际生成的向量和标注查询另行评估。

已有候选片段,怎样再做重排序?

向量检索取得候选后,可按任务考虑重排序。参见Rerank 结果配对与检索验收:保持候选 ID、核对返回索引、比较同一组查询的结果。重排序不能补回未进入候选集的证据,相关性分数也不等于答案准确率。

注册后查看试用额度与领取条件

按当前模型列表选择服务,先核对令牌分组、接口协议与价格,再用自己的任务验证。

注册并查看试用条件 →已有账号?进入控制台创建令牌 · 调用报错先排查
注册、充值和调用均在云岚API 新业务站完成
相关内容
本站为云岚API 注册、登录与充值入口站点 · 模型与价格以控制台实时数据为准 · 更新于 2026-10-25
Claude、GPT、Gemini 等名称为各自权利人商标,本站为独立第三方 API 中转/聚合服务,与上述厂商无隶属或授权关系。