低成本搭建零食推荐系统

37 阅读3分钟

先放成果地址 snackbuddy.idagou.com/

起因

我在一家软件公司工作,每个月公司会补充一些零食供大家填牙缝。每当采购的时候,我都曾看到管后勤的同事为选品花费好久时间。后面甚至放弃思考,完全重复上个月的订单。

能否创建一个系统,给定预算和需求,即能自动的帮我搭配零食?

尝试

第一次尝试做此类系统已经是多年之前了,当时我只会增删改查,向量数据库、推荐系统、人工智能更是仅仅听说过名字。我把从电商页面抓取来的商品,一个个的塞入关系数据表,幻想着用一套复杂的 if/else 来解决这个问题。

很快我发现这个系统的难度超过了我当时的能力水平,遂作罢。但依然每年都会重新思考该系统的可行性。

转机

这几年 AI 应用越来越火,我也参与了一些 AI 集成相关的项目。渐渐在运用中解了相关的知识。我突然意识到用向量数据库和大语言模型可以实现这个零食推荐系统了。

入库端:

  • LLM 对商品特征进行提取,生成描述字符串。
  • Embedding 将商品描述字符串转换为向量。
  • 向量数据库存储向量和相关元数据。

查询端:

  • LLM 对用户需求进行拆解,生成描述字符串。
  • Embedding 转换为查询向量
  • 从向量数据库搜索该查询向量,得到潜在匹配的商品。
  • 对匹配到的商品进行组合。

制作

由于我是个穷 B ,能有免费的就不想掏一分钱。 于是我盯上了大善人 Cloudflare:

  • Pages 服务,用来展现前端页面、响应查询 API 。
  • Vectorize ,向量数据库。我选用的是 1024 维度余弦库。
  • D1 ,关系数据库,用来存储查询记录。
  • Workers AI ,提供在线文本嵌入和文本生成服务。我选用的嵌入模型是 @cf/baai/bge-m3,生成模型是 @cf/openai/gpt-oss-20b

虽然上面的服务都有一定免费额度,但我希望把这有限的额度都投入到查询端(客户端)上。入库时的 AI 算力怎么办呢?

于是我买了台搭载 AMD AI 395 处理器,128G 内存的迷你主机来解决入库 AI 算力问题。( PS:AMD 生态还是不太好。其实用自己的老机器也能跑下面的本地模型。)

每天定时从京东联盟和淘宝联盟抓取热门商品列表,调用本地模型,最后发布到 Cloudflare 向量数据库里。 本地 AI 模型包括:

  • mineru-vllm 做图文识别
  • qwen/qwen3-next-80b 做描述字符串提取

(为了确保文本嵌入一致,入库流程仍调用 Cloudflare 的 @cf/baai/bge-m3 模型)

整个制作过程充分依靠了 AI 开发:

  • Shotgun code 能将整个代码库打包成一个提示词,再利用 Gemini 的超长上下文来一口气输出 diff 指令。再回到任意 AI IDE 或插件( Cline 之类)让他们帮忙把 diff 指令应用到代码上即可。
  • AI Studio 免费试用 Gemini 3 Pro ,虽然数据可能会被拿去训练。
  • VS Code 的 Cline 插件,搭配 DeepSeek 或 Gemini 。
  • VS Code 的通义灵码插件。简单修改还挺方便的。

成果

image.png

断断续续制作了两三个月,加上了导出 CVS 列表、换一个商品、限定单价、限定平台、历史记录等功能。现在终于可以见人了。元旦节宅家的零食就是用它帮忙选的。

起了个诨名 零食搭子 snackbuddy.idagou.com/

欢迎各路好汉光临!