向量与语义相似度:EmbeddingIndex 的应用与指标
similar › 向量与语义相似度:EmbeddingIndex 的应用与指标 (第 1 章)
语义相似度依赖外部模型把文本变成向量;similar 的 semantic 模块不下载、不运行模型,只负责接收固定维度向量,做点积 / 余弦相似度和精确 Top-K。它适合小规模语义检索、基准验证和候选重排。
应用场景
- 向量相似度打分:
embedding_cosine()计算两个同维向量的余弦。 - 小规模向量检索:
EmbeddingIndex精确 Top-K。 - 混合检索第二段:BM25 / ANN 召回候选后,用精确余弦重排。
- Python 侧
cross_encoder_rerank():用批量回调做交叉编码器重排,不绑定推理框架。
性能指标
| 操作 | 复杂度 | 本机参考耗时 |
|---|---|---|
| 向量写入 | O(d) | 5,000 个 64 维向量约 53.9 ms |
| 精确 Top-K 查询 | O(N × d) | 5,000 × 64 约 0.443 ms/op |
| 单次余弦 | O(d) | 微秒级 |
耗时是本地 libsimilar_c.so + Python ctypes 冒烟值。EmbeddingIndex 是线性扫描,查询时间随文档数和维度线性增长。
效果指标
- 余弦相似度:范围通常为 [-1, 1],常用 0~1;用于相同量纲的向量比较。
- 精确 Top-K:结果是精确的,不受近似索引召回率影响。
- ANN 场景:先用 HNSW / IVF / DiskANN 召回候选,再测量
Recall@K;候选不足时再回退到更多检索路径。 - 交叉编码器:通常精度更高但更慢,只对少量候选重排,不作为全库扫描器。
推荐配置与阈值
- 所有向量必须同维;创建索引时固定
dim。 - 全库文档小于几万到几十万、且延迟预算允许时,可直接精确扫描。
- 大规模集合:ANN 召回 100~1000 个候选,再用本模块精确打分或交叉编码器重排。
- 余弦阈值需要按业务标注集标定,不宜直接照搬其他语料。
边界与误区
- 本模块不提供 ANN 索引,超大向量库应使用专业向量引擎。
- 它不负责文本到向量的推理;向量质量决定语义效果。
- 有状态句柄必须调用
close(),避免释放时机不确定。
一句话记住:向量质量来自模型,similar 只做同维精确打分和重排;大规模召回交给 ANN。
⚠️ 版权声明
本文为免费文章,欢迎转载。转载请注明出处:一木科技(https://www.pingquan.vip/2026/10/09/similar-scene-vector/),并保留原文链接。
还没有评论,来说两句?