首页/AI/RAG 与向量库速查/半精度与降维(halfvec / Matryoshka)
本包目录(229 条)
架构与流程30 条解析与切分33 条Embedding 与检索50 条
向量数据库49 条
重排与生成32 条评估与优化35 条

半精度与降维(halfvec / Matryoshka)

两个省空间的工程手段:半精度(float16 / halfvec)把每维从 4 字节降到 2 字节,精度损失小;Matryoshka 类模型支持截断维度(如 1024→512),用少量召回损失换存储与计算下降。

RAG 与向量库速查AI更新于 2026-10-12

pgvector halfvec 示例

pgvector halfvec 示例
CREATE TABLE kb16 (id bigserial PRIMARY KEY, embedding halfvec(1024));
CREATE INDEX ON kb16 USING hnsw (embedding halfvec_cosine_ops);

-- 查询时用 halfvec 表达
SELECT id FROM kb16 ORDER BY embedding <=> $1::halfvec LIMIT 10;

Matryoshka 截断(示意)

Matryoshka 截断(示意)
full = model.encode(text)          # 1024 维
short = full[:512]                 # 截断后重新归一化再入库
short = short / np.linalg.norm(short)
降维与截断都会改变相似度分布:阈值与重排门限需要重新校准,并重新跑评测集。

易错点

  • 截断后不重新归一化,内积检索的排序被模长带偏
  • 已入库全精度向量与新查询用截断维度比较,维度不匹配直接报错

数据来源与参考

  • pgvector README(halfvec)
  • Kusupati et al., Matryoshka Representation Learning (arXiv:2205.13147)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌