You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于15k+食材字符串构建加权图实现相似食谱检索的算法咨询

食谱食材相似性检索的加权图构建与检索方案

一、先搞定食材标准化预处理

原始食材字符串格式杂乱,第一步必须把每个食材拆解并提取核心实体,才能区分易混淆食材、合并同食材的不同处理版本:

  • 剥离冗余信息:用正则去掉括号内的处理描述(比如把(diced)、(peeled and sliced)这类内容删除),剥离数量和单位(匹配数字、分数、cup/stalks/kg/ml等单位,只保留食材本身)
  • 核心实体归一:将同食材的不同表述统一,比如small-medium onion和onion都归一为onion;精准区分易混淆食材,比如boneless chicken thighs归为boneless chicken thigh,chicken stock归为chicken stock,避免鸡肉和鸡汤被误判为同一类
  • 同义词统一:如果有食材的不同叫法(比如celery stalks和celery),手动维护同义词表或用预训练词向量做同义词映射

二、构建加权食谱关联图

以每个食谱作为图的节点,节点间的边权重代表两个食谱的食材相似程度,权重计算要兼顾食材的稀有性:

  1. 计算食材的逆食谱频率(IRF):IRF = log(总食谱数 / 包含该食材的食谱数),稀有食材(比如松露)IRF值高,常见食材(比如洋葱、大蒜)IRF值低
  2. 计算两个食谱的加权相似度:取两者共同食材的IRF之和,除以两个食谱所有食材的IRF总和,结果作为边的权重(值越高,食材相似度越高)

三、适合的检索算法

1. 基于图遍历的精准检索

  • 加权优先队列遍历:从目标食谱节点出发,用优先队列按边权重从高到低遍历邻接节点,返回Top N相似度最高的食谱。适合需要精确结果的场景,但15k节点规模下,遍历效率一般,适合小规模检索。

2. 近似最近邻(ANN)算法(推荐大规模场景)

  • 局部敏感哈希(LSH):把每个食谱转化为食材TF-IDF向量,通过哈希函数将相似向量映射到同一哈希桶,快速召回候选食谱后,再计算精确相似度排序。实现简单,召回效率高。
  • HNSW(分层导航小世界):构建多层稀疏图,通过逐层筛选快速定位近似最近邻节点,检索速度极快,适合15k+规模的食谱库,能支持实时检索需求。

3. 嵌入向量检索

  • 食谱嵌入模型:把食材当作“词”,食谱当作“句子”,用FastText或BERT类模型训练食谱的低维嵌入向量,向量间的余弦相似度即为食谱的食材相似度。这种方法能自动捕捉食材的关联规律(比如土豆和胡萝卜常一起出现,对应的食谱向量会更相似),检索时直接用向量相似度排序即可。

四、优化细节

  • 食材实体精准识别:如果遇到歧义食材(比如chicken可能指整鸡或鸡肉块),可以用微调后的NER模型专门识别食材实体,提升核心食材提取的准确率
  • 动态维护图结构:新增食谱时,实时计算它与现有食谱的相似度,更新图的节点和边;定期重新计算IRF值,保证权重的时效性
  • 过滤低权重边:设置相似度阈值,只保留权重高于阈值的边,减少图的复杂度,提升检索速度

内容的提问来源于stack exchange,提问作者Omar Alhussani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:46:17