当前位置: 首页 > news >正文

基于DWS的向量计算功能实现简单的商品搜索推荐系统

本文分享自华为云社区《基于DWS的向量计算功能实现简单的商品搜索推荐系统》

1. 前言

  • 适用版本:【9.1.1.200(及以上)】

在生成式 AI 与大模型(LLM)重塑技术栈的今天,数据处理的需求已经从单一的“精确匹配”转向了“语义理解”。传统的数据库系统在处理结构化数据(如订单金额、用户ID)方面表现完美,但在面对 AI 时代爆发的非结构化数据(文本、图像、音视频)时,基于关键词搜索的传统方式由于无法理解数据本身背后的“意思”从而显得力不从心。

核心痛点:传统数据库本质上依赖精确匹配(exact match)或字段索引查询,缺少以“含义”为中心的模糊相似搜索能力。AI相关应用与推荐系统场景带来了海量向量检索需求,相似性搜索是核心需求,对向量数据库常见应用场景:

  • 以文搜图/以图搜图: 找到与输入图片最相似的图片

  • 智能问答/RAG:在知识库中找到与用户问题最相关的文档片段

  • 推荐系统:找到与用户兴趣向量最相似的商品

解决方案:DWS集成 pgvector(0.8.0) 插件,可插拔式加载,实现库内向量计算检索能力。

定义: DWS向量计算并非独立的数据库系统,而是通过插件形式扩展传统数据库功能,使其能够处理高维向量数据,无需用户迁徙数据或重构应用架构,即可在现有系统中实现向量检索相关功能。

2. DWS向量计算功能简介

1、向量数据类型:

2、向量距离/相似度操作符:

3、索引类型:

3. 完整示例

假设我们正在做一个商品推荐搜索系统:

  • 商品本身有标题、描述、分类、价格等字段

  • 借助大模型embedding能力,我们能够将商品描述编码为向量

  • 同样的,将用户的搜索关键字也转化为向量

  • 目的:通过相似性搜索找出最符合用户搜索意图的商品

如需使用向量计算功能,请联系技术支持修改feature_support_options参数, 开启enable_pgvector选项。详细语法介绍,请参考DWS产品文档 向量计算章节

3.1 基础查询

  1. 安装扩展:

    create extension pgvector;
  2. 创建商品表,储存向量embedding:

    CREATE TABLE products ( id bigserial PRIMARY KEY, title text, description text, price numeric, embedding vector(768) --768维向量,由商品描述(description)生成 );
  3. 插入数据

    INSERT INTO products (title, description, price, embedding) VALUES ('Wireless Earbuds', 'Bluetooth wireless earbuds with charging case', 59.9, '[0.12, 0.34, -0.21, ...]'), ('Noise Cancelling Headphones', 'Over-ear headphones with active noise cancellation', 129.9, '[0.11, 0.36, -0.19, ...]'), ('Gaming Headset', 'Wired gaming headset with microphone', 79.9, '[0.10, 0.33, -0.25, ...]'), ('Smartphone Stand', 'Adjustable phone stand for desk use', 12.9, '[0.45, -0.12, 0.08, ...]'), ('USB-C Charger', 'Fast charging USB-C power adapter', 19.9, '[0.42, -0.15, 0.05, ...]'), ('Mechanical Keyboard', 'Mechanical keyboard with blue switches', 89.9, '[0.55, 0.02, -0.31, ...]'), ('Wireless Mouse', 'Ergonomic wireless mouse', 29.9, '[0.53, 0.01, -0.28, ...]'), ('Laptop Backpack', 'Water-resistant laptop backpack', 49.9, '[0.60, -0.05, -0.10, ...]'), ('4K Monitor', '27-inch 4K UHD computer monitor', 299.9, '[0.58, 0.04, -0.35, ...]'), ('Webcam', 'HD webcam for video conferencing', 39.9, '[0.52, -0.01, -0.20, ...]'), ('Bluetooth Speaker', 'Portable Bluetooth speaker with deep bass', 45.9, '[0.14, 0.30, -0.18, ...]'), ('Smart Watch', 'Fitness tracking smart watch', 99.9, '[0.20, 0.40, -0.22, ...]'), ('Fitness Tracker', 'Lightweight activity and sleep tracker', 49.9, '[0.22, 0.38, -0.24, ...]'), ('Tablet Stylus', 'Stylus pen for tablets', 25.9, '[0.48, -0.10, 0.12, ...]'), ('Laptop Cooling Pad', 'Cooling pad with dual fans', 34.9, '[0.57, -0.02, -0.15, ...]');
  4. 相似度查询:

    通过以下查询,能够获取与用户向量相似度最高/距离最近的topk个商品

    SELECT id, title, price FROM products ORDER BY embedding <-> '[0.091, -0.054, 0.92, ...]' -- 用户向量, 通过L2距离计算相似度 LIMIT 10;
  5. 混合查询:

    DWS向量计算支持传统过滤方式及语义相似度查询的混合使用

    SELECT id,title,price FROM products WHERE price < 2000 ORDER BY embedding <-> '[0.091, -0.054, 0.92, ...]' LIMIT 10;

3.2 使用索引

DWS向量计算默认使用精确近邻搜索,提供百分之百召回率但查询速度较慢。可以按需使用近似相邻搜索索引来牺牲部分召回率以提高查询速度。不同于传统索引,近似搜索索引可能会返回不同的查询结果。DWS向量计算目前支持的索引类型包括HNSW和IVFFlat。

  1. 创建索引
    -- HNSW 索引 CREATE INDEX ON products USING hnsw (embedding vector_l2_ops) WITH (m = 16, ef_construction = 200); -- 或者 IVFFlat 索引 CREATE INDEX ON products USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
  2. 使用索引 创建索引后执行topk查询,在距离操作符匹配的场景下会使用index scan,可以通过explain观察计划
    id | operation ----+------------------------------------------------------------------ 1 | -> Limit 2 | -> Streaming (type: GATHER) 3 | -> Limit 4 | -> Index Scan using products_embedding_idx on products

3.3 结果解读

  • 用户搜索词为wireless audio headset

SELECT id, title FROM products ORDER BY embedding <-> '[0.13, 0.35, -0.20, ...]' --用户搜索词的embedding LIMIT 10;

查询结果: 商品名为耳机、音响类型的数据相较于表中其他商品类别与用户搜索词在语义上更为接近,即便没有精确包含headset仍然会在结果中排序更靠前

  • 用户正在浏览Noise Cancelling Headphones商品,根据相关性进行推荐:

SELECT p2.title, p2.price FROM products p1 JOIN products p2 ON p1.id <> p2.id WHERE p1.title = 'Noise Cancelling Headphones' ORDER BY p2.embedding <-> p1.embedding LIMIT 10;

查询结果: 耳机音响类商品与用户正在浏览的Noise Cancelling Headphones产品相关性更高

4 性能

以下图示展示了dws pgvector插件在不同数据集及索引下的检索性能

实测表明,dws pgvector插件能够做到千万级向量数据:

  1. 低于小时级索引构建时间

  2. 毫秒级查询

  3. 稳定高召回率,按需调参控制

对比两种索引,我们可以发现:

  • hnsw索引构建时间与数据量和维度强相关。相同数据量和维度场景下构建时间相较ivfflat显著增加,换取更快得查询速度和更好的召回率

  • ivfflat索引构建时间更短,主要受构建参数lists影响,对数据量不敏感。相同数据量和维度场景下查询耗时及召回率表现低于hnsw

因此,两者的推荐使用场景分别为: HNSW

  • 线上实时检索 搜索 / 推荐 / RAG

  • 高召回要求 Recall ≥ 0.9

  • 多租户/长期运维系统

IVFFLAT

  • 离线 / 批量检索

  • 检索成本优先

  • 作为多级检索的第一层粗筛

5 总结

通过在 DWS 向量计算扩展能力,我们将传统以结构化查询为核心的数据库系统升级为能够具备语义理解与相似度计算能力的统一数据底座。系统不仅支持向量数据的存储与高效相似度检索,还允许业务方直接通过标准 SQL 完成语义搜索、推荐与相似内容匹配,无需引入额外的向量引擎或复杂的数据同步链路。

依托 HNSW、IVFFlat 近似最近邻索引,向量查询在大规模数据场景下依然具备可控的性能与稳定的响应能力。同时,向量检索能力与传统结构化查询、过滤条件、JOIN 逻辑的深度融合,使得搜索推荐、个性化分析以及 RAG 等 AI 应用可以自然落地在现有数仓与业务体系之上。

最终,这一能力扩展不仅降低了系统架构复杂度,也显著提升了数据平台对新一代智能应用的支撑能力,实现了从“数据查询”向“语义计算与业务决策支持”的演进。

http://www.jsqmd.com/news/367488/

相关文章:

  • 〖短线强弱界定〗副图与选股指标,一眼看穿强弱本质,不管做波段还是抓反弹,让你心里更有底!
  • 稳定细胞系(Stable Cell Line)是什么?从瞬时模型到长期可重复细胞工程体系的系统理解
  • 电影票房数据采集分析可视化系统 | Python Flask Echarts requests爬虫 大数据 人工智能 毕业设计源码
  • 2026年诚信的东城区医院跑腿公司选型决策指南 - 品牌鉴赏师
  • JDBC - 数据库连接池 - 实践
  • Ethernet loopback mode 10分钟讲清楚
  • AT AGC D - Game on Tree
  • 第3章:开发环境搭建项目实战 / 《使用 LangGraph, FastAPI, MCP and Docker 构建通用 AI 智能体》
  • OpenResearcher:全开源的长周期DeepResearch轨迹生成方案
  • YOLOV8模型训练 智慧工地 工地围挡围栏检测数据集 目标检测、工地安全监控等计算机视觉任务。木板 切割机 手推车安全帽 反光衣 人员 脚手架
  • SerDes IP基础概念浅谈
  • 2026年比较好的海淀区老人保姆家政,通州区老人保姆家政公司优质供应商推荐 - 品牌鉴赏师
  • 2026年专业的4对平行铁,7对平行铁厂家行业实力名录 - 品牌鉴赏师
  • 直播提词器推荐:高效提升直播专业度的神器教程
  • 完整教程:侠客行・iOS 26 Liquid Glass TabBar 破阵记
  • Kotlin 作用域函数完全指南
  • Azure数据中心断电导致Windows更新服务暂停
  • 在 Android 14 上使用 scrcpy 的投屏问题与解决方案
  • 2026年可靠的北京亲和住家保姆,北京勤快住家保姆公司口碑推荐榜 - 品牌鉴赏师
  • 灰狼算法优化相关向量机(GWO-RVM)的锂电池健康状态预测SOH+剩余寿命预测附Matlab代码
  • 2026刷桶机厂家推荐,节能环保型设备专业厂商盘点 - 品牌鉴赏师
  • 2026年评价高的东城区老人保姆家政公司推荐榜单 - 品牌鉴赏师
  • 构建之法阅读笔记2
  • Xcode 26.3 AI编程搭档深度解析:如何用自然语言10分钟开发完整iOS应用
  • 2.2 隐微分
  • 如何优雅处理多条件组合场景
  • NexaVM瞄准VMware退出用户市场,阿里巴巴加持助力扩张
  • OpenAI被传“泄露“的超级碗广告为虚假信息
  • 基于非线性干扰观测器的自适应滑模反演控制:机械臂模型与Matlab仿真探索
  • 2026年2月农业灌溉制造商推荐,节水灌溉系统性能实测解析 - 品牌鉴赏师