汽车零部件 AI 语义搜索
买家和供应商需要用自己的语言输入普通的词语,为具体的车型找到准确的零件。我端到端地构建了这套搜索,并开发了一套测试套件,证明它达到了政府研发计划要求的 95% 准确率。
- 我的角色
- 公司唯一的 AI/ML 工程师。我负责设计、向量嵌入、实体识别、LLM 步骤、评估和生产环境的运维。
- 成果
- 在一个政府研发计划的 3000 个零件测试中准确率达 95%+。项目已获批准。
- 技术栈
- Python、Django REST Framework、Weaviate、spaCy、OpenAI API(GPT-4o-mini)、Celery、PostgreSQL、AWS S3
- 规模
- 超过 200 万条零件记录的目录,以及超过 30 万条在售且可搜索的商品信息,覆盖 Kia、Hyundai、SsangYong 和 Chevrolet 车型
问题
人们对同一个零件有很多种说法:“headlight”或“head lamp”、非正式的叫法,或者其他语言。但正确答案只有一个:一辆确切车型对应的一个零件编号,涉及品牌、车型、年份、燃料、变速箱、代次和位置(左或右、前或后)。
僵硬的关键词过滤无法应对这种情况。公司需要一种能理解日常语言、几乎每次都能返回正确零件的搜索。此外,这套搜索属于公司向政府研发计划申报的一个项目。要获得批准,它必须在一个固定的 3000 个零件测试中达到 95% 的准确率。
查询的处理流程
- 语言检测 先运行一个小型语言检测器,只在需要时才调用 LLM。
- LLM 规范化 非英语查询会被翻译并清洗(GPT-4o-mini)。
- 实体抽取 spaCy NER 识别品牌、车型、年份、燃料、变速箱、零件名称、位置和代次。
- 带过滤的向量搜索 识别出的实体成为 Weaviate 语义搜索之上的精确过滤条件。
- LLM 重排序 LLM 后置过滤器剔除明显错误的结果,并对其余结果重新排序。
- 结果 为买家提供商品搜索,为供应商提供目录匹配。
- Django REST API为商城和后台工具提供两种搜索模式
- 准确率测试套件在固定测试集上运行同一条流水线
- S3 报告每次测试运行都会被保存,重新部署后也不会丢失
示例:一条查询的处理过程
- 用韩语输入的查询 현대 쏘나타 2019 왼쪽 헤드라이트
-
LLM 规范化之后
Hyundai Sonata 2019 left headlight -
抽取出的实体,用作精确过滤条件
brand: Hyundaimodel: Sonatayear: 2019side: leftpart: headlight
-
向量搜索和 LLM 重排序之后的结果
-
Head Lamp Assembly · Left排在第一 -
Fog Lamp · Left被 LLM 剔除
-
我构建了什么
- 向量搜索核心。我把零件目录嵌入到 Weaviate 中,并用 Django REST Framework 构建了搜索服务。我为每个零件挑选了要嵌入的文本,例如字段标签、零件位置、车辆年份和精选的同义词,这样能找到更多正确的零件。
- 实体作为硬过滤条件。spaCy 从自由文本查询中提取结构化信息,并把它们变成精确的过滤条件。向量搜索负责处理措辞差异,过滤条件则确保车型和位置正确。
- 两种搜索模式。买家使用商品搜索。供应商使用自动匹配:他们上传一个零件后,搜索会把它与目录记录匹配,每个不同的零件编号都成为一条单独的结果。
- 多语言查询。一个 LLM 负责翻译并清洗非英语查询。把它从 GPT-3.5-Turbo 换成 GPT-4o-mini 后,质量更好、成本更低,而语言检测让 LLM 的调用次数保持在低水平。
- 相关性调优。LLM 重排序器会剔除明显错误的结果。一份别名列表把日常用词映射到目录名称,因此“headlight”能找到 Head Lamp Assembly。这提高了日常说法的准确率。
- 前端对接。我把商城和后台工具接入了搜索 API。页面上的筛选条件会传入查询,匹配结果会自动填写供应商的表单,搜索结果按相关性排序,低于置信度阈值的会被截掉。
衡量准确率
准确率必须靠测量,而不是靠猜测。我构建了一个内部测试页面,在一个固定的、精心整理的测试集上运行与生产搜索相同的流水线。
- 指标:accuracy@1 和 accuracy@3、精确率、召回率、F1、混淆矩阵和交叉验证。
- 可重复运行:自动或手动运行。每次运行都会记录运行者,以及是否开启了 LLM 步骤。
- 安全设计:测试数据存放在独立的集合中,并设有防护措施,确保测试绝不会触碰生产数据。
- 错误分析:当一条查询没有返回结果时,我会追查原因,例如过期的测试记录、与目录条目不匹配的商品信息、两个相互冲突的实体模式,或者查询中出现的车身颜色,然后逐一修复。
结果
- 95%+在政府研发计划的 3000 个零件测试中的准确率
- 已获批准研发项目,在它通过测试之后
- 30 万+在售且可搜索的商品信息,来自超过 200 万条零件记录的目录
该搜索已面向买家和供应商在生产环境上线。我还在生产环境中运行了自动化准确率测试,并修复了测试发现的问题。
本页面略去了雇主代码、内部数据和私有网址。