You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

大规模数据集下基于余弦相似度的用户-商品向量匹配系统优化与落地咨询

大规模数据集下基于余弦相似度的用户-商品向量匹配系统优化与落地咨询

我正在开发一个基于Python和NumPy的系统,通过余弦相似度计算用户向量与商品向量之间的匹配度。当前代码在小数据集上运行正常,但面对百万级别的用户和商品时,性能和内存占用都开始拉胯了,尤其是点积计算和内存消耗这两块,成了明显的瓶颈。

我已经尝试过的优化方向

  • 用np.argsort查找最相似的商品,但矩阵规模一大就变得异常缓慢
  • 尝试过通过重塑和广播处理用户元数据,但内存占用会随着数据集规模暴涨,根本扛不住

当前代码实现

import time
from numpy.linalg import norm
import numpy as np

start_time = time.time()

# 计算商品与用户向量的点积
dot_pdt_vectors = (product_catalog_emb_vector @ user_emb_vector.T).T

# 计算商品向量的范数
product_vector_norm = norm(product_catalog_emb_vector, axis=1)

# 计算用户向量的范数
user_vector_norm = norm(user_emb_vector, axis=1)

# 计算余弦相似度
similarity = (
    dot_pdt_vectors /
    (product_vector_norm * user_vector_norm[:, np.newaxis])
)
cosine_distance_vector = 1 - similarity

# 筛选最相似的前50个商品
product_recommended_idx = (
    np.argsort(cosine_distance_vector, axis=1)[:, :50]
)
product_recommended_vector = product_catalog_vector[product_recommended_idx]

# 处理用户元数据并拼接
bq, r, _ = product_recommended_vector.shape
user_data_vector = (
    np.repeat(
        user_metadata_vector, r, axis=0
    ).reshape(
        bq, r, user_metadata_vector.shape[-1]
    )
)

# 拼接用户元数据和推荐商品向量
product_recommended_vector = np.concatenate(
    (user_data_vector, product_recommended_vector), axis=2
)
cols_pr_v = product_recommended_vector.shape[-1]

# 重塑最终输出向量
product_recommended_vector = (
    product_recommended_vector.reshape(-1, cols_pr_v)
)

logger.info(
    f'Product Recommended Vector Succesfully Created: {product_recommended_vector.shape}'
)
logger.info(
    f'Function execution time: {(time.time() - start_time):.4f} seconds'
)

我需要的帮助

性能优化

如何优化余弦相似度的计算逻辑,同时降低内存占用?比如是否应该考虑稀疏矩阵、批量处理,或者换用其他更高效的算法?

内存高效处理

有没有更省内存的方式来处理这些嵌入向量?比如用np.memmap,或者Dask这类分布式框架?

横向扩展

怎么把这套逻辑扩展到百万级别的用户和商品规模,还能保持高效运行?

核心问题其实是:面对大规模稠密矩阵,做这类计算的最优方案是什么?还有哪些替代思路可以探索?

任何针对大规模数据场景的代码优化建议都非常感谢!

感谢大家的帮助!


备注:内容来源于stack exchange,提问作者SanchoH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:02:59