从模糊搜索到 AI RAG:商品搜索的三种演进思路
商品搜索表面上是“用户输入一句话,系统返回一些商品”,但真实场景会复杂很多。
用户可能输入关键词:
苹果 手机
也可能直接表达需求:
推荐 5 款 2000 元以内的大存储苹果手机
这里面既有品牌、品类、价格、数量,也有“大存储”这种偏好。如果只靠关键词匹配,很容易漏掉用户真正想要的东西。
商品搜索通常可以分成三个阶段:
- 模糊搜索:提供稳定、可控的检索和筛选能力
- AI 结构化搜索:降低用户表达成本,提升搜索效率
- AI 结构化 + 向量库搜索:解决语义召回和 RAG 回答
一、模糊搜索:稳定可控的基础搜索
模糊搜索不只是简单的关键词包含匹配。一个成熟的模糊搜索系统,本身也可以支持筛选、排序、分页、价格区间、品牌过滤、类目过滤等能力。
比如用户可以先搜索:
苹果 手机
再通过筛选条件缩小范围:
品牌:苹果
价格:2000 元以内
排序:价格从低到高
规格:大存储
这些能力并不依赖 AI。传统搜索系统完全可以通过规则、表单、筛选器和排序器完成,而且通常更稳定、更快、更可控。
模糊搜索的优点是:
- 简单
- 快
- 成本低
- 可解释
- 行为稳定
- 适合承接确定性过滤和排序
它真正的问题不是“不能筛选排序”,而是用户必须用系统能理解的方式表达需求。
比如:
- 用户要知道去哪里点价格筛选
- 用户要把多个条件拆开输入
- 用户要理解“排序”和“筛选”的区别
- 用户要不断调整关键词,才能逼近想要的结果
所以模糊搜索不是能力弱,而是交互成本高。它适合做底层检索能力,但不一定是最高效的用户入口。
二、AI 结构化搜索:提升搜索效率
引入 AI 结构化搜索,主要不是为了证明传统搜索不行,而是为了让用户少操作几步。
用户不用再手动拆条件、点筛选、调排序,而是可以直接说完整需求。
例如:
推荐 5 款便宜点的苹果手机
可以被理解成:
| 信息 | 含义 |
|---|---|
| 意图 | 推荐 |
| 品牌 | 苹果 |
| 商品类型 | 手机 |
| 数量 | 5 |
| 价格偏好 | 便宜 |
这样,“5 款”就不再是关键词,而是返回数量;“便宜点”也不再是普通文本,而是排序偏好。
AI 在这里更像一个自然语言入口。它把用户一句话拆成系统可以执行的条件,再交给搜索、过滤和排序模块处理。
它提升的是:
- 输入效率:用户一句话表达多个条件
- 理解效率:系统自动识别数量、品牌、价格和偏好
- 交互效率:用户可以继续追问和修改条件
比如用户上一轮说:
推荐几款苹果手机
下一轮只说:
便宜点
系统如果能理解上下文,就应该在上一轮“苹果手机”的基础上调整排序或价格偏好,而不是把“便宜点”当成一次全新的搜索。
这就是 AI 搜索真正有价值的地方:它让搜索从“用户操作筛选器”变成“用户和系统对话”。
但它仍然有边界:AI 负责理解和转译,不应该替代底层搜索逻辑。
比如用户说:
apple 手机
模型可能理解出品牌是 Apple。但如果商品数据里品牌存的是“苹果”,普通文本匹配仍然可能搜不到。
所以 AI 结构化解决的是“查询理解”,不是“语义召回”。
三、向量搜索:解决字面不同但意思接近
向量搜索关注的不是两个文本是否完全一样,而是语义是否接近。
它依赖 embedding。embedding 可以把文本转换成一组数字,也就是向量。语义越接近的文本,向量距离通常越近。
比如在商品搜索语境下:
- 苹果手机
- Apple 手机
- iPhone 手机
- 苹果品牌智能手机
这些表达字面不同,但语义接近,所以可能被映射到相近的向量空间。
向量库负责存储商品向量。搜索时,用户问题也会被转换成查询向量,然后系统去找距离最近的商品。
这就是为什么“Apple 手机”有机会召回“苹果手机”。不是因为系统建立了 Apple 等于苹果的硬规则,而是因为 embedding 模型认为它们在当前语境下相似。
四、RAG:让模型基于真实数据回答
当向量搜索和生成式 AI 结合起来,就形成了 RAG。
RAG 可以拆成三步:
| 阶段 | 作用 |
|---|---|
| Retrieval | 先召回相关商品 |
| Augmented | 把商品作为上下文交给模型 |
| Generation | 模型基于上下文生成回答 |
在商品搜索里,RAG 的重点不是让模型凭空推荐,而是让模型基于真实商品结果回答。
这点很重要。否则模型可能会编造不存在的商品、价格或规格。
RAG 的价值在于:召回由数据负责,表达由模型负责。
五、三种方案对比
| 方案 | 核心能力 | 优点 | 局限 | 适合场景 |
|---|---|---|---|---|
| 模糊搜索 | 检索、筛选、排序 | 快、便宜、可控、稳定 | 用户交互成本较高 | 基础搜索和硬条件过滤 |
| AI 结构化搜索 | 自然语言转查询条件 | 输入效率高,支持追问 | 依赖底层召回和规则执行 | 多条件搜索、对话式搜索 |
| AI + 向量搜索 | 语义召回 | 能处理同义词、跨语言、模糊表达 | 不适合单独做硬过滤 | 推荐、相似商品、开放式需求 |
可以简单理解为:
- 模糊搜索解决“怎么稳定地查、筛、排”
- AI 结构化解决“怎么让用户更快表达需求”
- 向量搜索解决“意思像不像”
六、向量搜索不是万能的
向量搜索适合处理:
- 相似商品
- 模糊需求
- 口语表达
- 中英文混合
- 同义词和近义词
但它不适合单独处理强约束:
- 价格必须小于 3000
- 品牌必须是苹果
- 存储必须是 512GB
- 只返回 5 条
- 只看有库存的商品
这些条件应该交给确定性过滤,而不是完全依赖向量相似度。
更稳的方式是分层:
| 层次 | 处理内容 |
|---|---|
| 硬过滤 | 品牌、价格、库存、规格 |
| 软召回 | 拍照好、轻薄办公、学生党 |
| 排序 | 低价优先、旗舰优先、综合排序 |
| 生成 | 推荐理由、差异解释、下一步建议 |
七、一个更完整的购物助手还缺什么
搜索只是第一步。真正好用的购物助手还需要补齐几类能力。
1. 完整意图处理
用户不只会搜索,还会筛选、排序、对比、追问、解释和重置。
比如:
便宜点
这不是一个全新的搜索,而是对上一轮结果继续筛选。
第二款和第四款比一下
这也不是重新搜索,而是基于上一轮结果做对比。
系统要能判断用户是在开启新任务,还是继续修改当前任务。
2. 上下文记忆
多轮购物对话需要记住三类信息:
- 当前查询条件:品牌、价格、规格、数量
- 上一轮结果:哪些商品排在第几位
- 用户偏好:预算、品牌倾向、是否偏好大存储
有了这些记忆,系统才能理解“这个”“第二款”“再便宜点”“换个品牌”这类表达。
3. 条件继承和覆盖
用户连续输入时,系统要判断条件是新增、覆盖还是删除。
例如:
推荐苹果手机
2000 以内
这里应该继承“苹果手机”,追加“价格小于 2000”。
但如果用户说:
算了,看看小米
这更像是把品牌从苹果切换成小米。
4. 标准化
用户表达和商品数据经常不一致:
- Apple、iPhone、苹果
- 512G、512GB
- 2k、2000 元、两千
- 手机、智能手机
如果系统内部没有标准词表,查询会不稳定。
标准化的目标是:用户可以用不同方式表达,但系统内部尽量落到统一的品牌、类目、规格和价格结构。
5. 无结果降级
没有结果时,不应该只说“没找到”。
更好的回答是指出可能原因,并给出放宽建议:
没有找到 2000 元以内的大存储苹果手机。可以放宽到 3000 元以内,或者保留预算但改看其他品牌。
这比单纯报空更像助手。
6. 结果质量评估
AI 搜索不能只看回答是否流畅,还要看结果是否满足约束。
可以关注:
- 价格有没有超预算
- 品牌有没有跑偏
- 规格是否满足
- 排序是否合理
- 推荐理由是否来自真实商品信息
RAG 的质量很大程度取决于召回和过滤,而不是最后那段文字。
八、推荐的演进路径
如果从零构建,可以按这个顺序推进:
- 先做模糊搜索,保证基础搜索可用。
- 加 AI 结构化,理解自然语言里的条件。
- 把品牌、价格、规格、库存交给硬过滤。
- 引入 embedding 和向量库,增强语义召回。
- 加上下文记忆,支持连续追问、筛选和对比。
- 补齐标准化、降级策略和结果评估。
- 最后用 RAG 把结果组织成自然语言回答。
每一步都解决一个明确问题,不要一开始就把所有复杂度堆在一起。
总结
商品搜索的演进,本质上不是简单地用 AI 替代传统搜索,而是在传统搜索的稳定能力上,补上自然语言交互和语义召回。
模糊搜索让系统稳定地完成检索、筛选和排序。
AI 结构化搜索让用户更快表达需求,并支持连续追问。
向量搜索让系统能找到语义相近的商品。
RAG 让模型基于真实商品结果组织回答。
职责边界要清楚:
- 数据库和过滤器负责确定性条件
- 向量库负责语义召回
- 生成式模型负责理解意图和组织表达
这样系统才会既聪明,又可控。