在电商领域,搜索功能从来都不只是一个简单的文本框加查询按钮。作为连接用户意图与商品池的核心枢纽,搜索质量直接决定了转化率和用户体验。过去十年间,我参与过多个大型电商平台的搜索系统改造,亲眼见证了从传统关键词匹配到现代语义搜索的技术演进。
传统基于BM25算法的关键词搜索系统(如Apache Solr、Elasticsearch)在处理精确匹配时表现出色。当用户搜索"iPhone 13 Pro Max 256GB"这类明确商品型号时,它能毫秒级返回准确结果。但现实中的用户查询往往充满模糊性和多样性:
这些场景下,单纯的关键词匹配就像用渔网捞沙子——看似动作到位,实际收获寥寥。我曾为某服装电商平台分析过搜索日志,发现超过43%的零结果查询都属于这类"语义鸿沟"问题。
解决方案是构建混合搜索系统,同时保留两种搜索范式的优势:
关键创新点在于二者的协同方式。常见的静态权重融合(如固定70%关键词+30%语义)存在明显缺陷——对"B08J5F3G18"这类商品编号查询,语义搜索完全是噪声;而对"适合油性皮肤的护肤品"这种概念性查询,关键词匹配反而会漏掉优质结果。
我们开发了一个基于RoBERTa的查询分类器,其工作原理类似于交通指挥系统:
这个动态路由机制使得系统可以智能调整策略。实测显示,相比固定权重方案,动态路由能将nDCG提升8-12个百分点。
Qdrant向量库的构建需要特别注意文本表征方式:
python复制# 商品文本特征拼接示例
def generate_product_text(item):
return f"{item['title']} {item['brand']} {item['color']} {item['material']}"
# 使用E5模型生成嵌入
from sentence_transformers import SentenceTransformer
encoder = SentenceTransformer('intfloat/multilingual-e5-base')
vectors = encoder.encode(product_texts)
我们采用以下优化策略:
int8量化减少75%内存占用训练数据准备是关键难点。我们的方案:
模型结构采用RoBERTa-base微调:
python复制from transformers import RobertaForSequenceClassification
model = RobertaForSequenceClassification.from_pretrained(
"roberta-base",
num_labels=2,
problem_type="single_label_classification"
)
训练时特别处理了类别不平衡问题:
python复制# 根据样本比例设置类别权重
weights = torch.tensor([1.0, 2.5])
criterion = torch.nn.CrossEntropyLoss(weight=weights)
搜索API的处理时序如下:
python复制def hybrid_score(solr_hit, qdrant_hit):
norm_solr = (solr_hit['score'] - solr_min) / (solr_max - solr_min)
norm_qdrant = (qdrant_hit['score'] - qdrant_min) / (qdrant_max - qdrant_min)
return w_lex * norm_solr + w_vec * norm_qdrant
在千万级商品库的测试环境中:
| 组件 | 平均延迟 | 峰值QPS |
|---|---|---|
| 路由模型 | 28ms | 1200 |
| Solr搜索 | 45ms | 800 |
| Qdrant搜索 | 52ms | 700 |
| 整体系统 | 78ms | 500 |
通过以下优化控制延迟:
初期我们直接使用点击数据作为"理想结果",导致:
解决方案:
文本拼接方式显著影响向量质量:
text复制"标题:{title} 品牌:{brand} 颜色:{color}
类别:{category} 材质:{material}"
建立的三层监控体系:
在3个月的A/B测试中:
| 指标 | 纯关键词 | 混合搜索 | 提升 |
|---|---|---|---|
| nDCG@10 | 0.289 | 0.348 | +20% |
| 首结果CTR | 18.2% | 23.7% | +30% |
| 零结果率 | 12.4% | 8.1% | -35% |
| 搜索转化率 | 3.1% | 3.8% | +23% |
同义词场景:
概念扩展:
拼写容错:
这套系统最终帮助合作电商平台年GMV提升2.3%,客户服务投诉下降17%。最让我欣慰的是后台看到的用户搜索词变化——从刻意的关键词组合(如"女装 雪纺 连衣裙 夏季")逐渐变为更自然的表达方式(如"适合约会穿的清凉裙子"),这正说明系统真正理解了用户意图。