首页/AI/RAG 与向量库速查/NumPy 矩阵化相似度计算
本包目录(229 条)
架构与流程30 条解析与切分33 条
Embedding 与检索50 条
向量数据库49 条重排与生成32 条评估与优化35 条

NumPy 矩阵化相似度计算

小规模或本地原型可以直接用 NumPy 做批量向量检索:对文档矩阵做 L2 归一化后,一次矩阵乘法求出全部查询的内积,配合 argpartition 取 top-k,省去引入向量库的成本。

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

归一化 + 矩阵乘法 + top-k

归一化 + 矩阵乘法 + top-k
import numpy as np

def l2norm(x):
    return x / np.linalg.norm(x, axis=1, keepdims=True)

docs = l2norm(np.random.rand(50000, 384).astype("float32"))
q = l2norm(np.random.rand(1, 384).astype("float32"))
scores = (docs @ q.T).ravel()
top = np.argpartition(-scores, 10)[:10]
top = top[np.argsort(-scores[top])]
print(top, scores[top])
数万条以内的原型场景可用内存矩阵;规模再大或需要过滤与更新时,再迁移到向量库。

易错点

  • 忘记归一化就把内积当余弦用,长文档向量模长更大被系统性高估
  • 每次查询重算文档矩阵的范数,带来不必要的重复计算

数据来源与参考

  • NumPy 官方文档(argpartition / 矩阵乘法)
  • FAISS wiki(Flat 索引即精确暴力检索)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌