RAG 中级 18分钟

语义商品搜索引擎

基于向量搜索的商品推荐系统,支持自然语言描述搜索,理解用户真实意图。

PineconeSentence-TransformersFastAPINext.jsTailwind

项目概述

传统电商搜索依赖关键词精确匹配。用户搜"红色连衣裙"搜不到标注为"Scarlet Dress"的商品。电商平台平均有 30% 的搜索因为无精确匹配而返回空结果。

本案例构建了一个语义商品搜索引擎。利用 Sentence-Transformers 将商品描述和用户查询映射到同一向量空间,实现语义级别的匹配。

关键指标

88%
语义匹配准确率
从30%降至5%
搜索无结果率
< 100ms
搜索延迟 (P99)
+22%
搜索转化率提升

系统架构

搜索引擎建立在分层过滤 + 向量召回 + 精排的三阶段检索架构上。

(diagram)

实现细节

1

商品数据加工

多模态商品索引

每个商品生成统一的 Embedding:文本用 text-embedding-3-small 向量化,图片用 CLIP ViT-L/14 向量化,加权融合。

属性标签体系

建立多层级标签体系。NER 模型从搜索词中自动提取属性约束,用于 Elasticsearch 预过滤。

增量同步

通过 Kafka 消息队列监听商品变更。新商品上线后 30 秒内完成向量化并入索引。

2

检索与排序

混合检索

先过一层属性过滤(ES 精确匹配),再对结果做向量语义召回。两者结合大幅提升准确率。

商品属性提取

搜索词通过 NER 提取品牌、品类、价格范围、颜色等属性。提取到的属性用于 ES 过滤。

个性化排序

精排结合用户历史数据。搜索"理由"让用户理解为什么推荐这个商品。

3

搜索体验优化

搜索纠错

基于编辑距离和拼音相似度做拼写纠错。用户输入"运到鞋"提示"你是不是想找:运动鞋"。

同义词扩展

维护电商同义词库:"笔记本 ↔ 笔记本电脑 ↔ laptop"。搜索时自动扩展查询词。

搜索推荐

实时弹出搜索推荐词(基于前缀匹配 + 热搜排行)。无结果时展示相关度最高的替代商品。

语义搜索核心实现

from sentence_transformers import SentenceTransformer
from pinecone import Pinecone

model = SentenceTransformer("all-MiniLM-L6-v2")
pc = Pinecone(api_key=os.getenv("PINECONE_API_KEY"))
index = pc.Index("ecommerce-products-v2")

query_vec = model.encode(query).tolist()
results = index.query(vector=query_vec, top_k=50, include_metadata=True)

经验教训

  • 属性过滤比语义搜索更重要
  • 向量维度不是越高越好
  • 季节性商品的 Embedding 会漂移
  • 搜索理由展示大幅提升点击率

更多案例

查看其他 AI 工程化落地案例

返回案例库