为什么一个简单的字符串匹配,打败了 Apple 的 nlembedding(本地 RAG 实战)
-
来源:Dev.to
社区热议:
-
“garbage in, garbage out”——计算机科学最古老的规则又一记暴击。Metal GPU 内核算得再快,nlembedding 出来的向量是垃圾也没用。算余弦相似度到纳秒级,算的却是垃圾 —— 共鸣的读者
-
Metal 内核因为 SwiftPM 资源 bundle 路径问题静默返回 nil 这个踩坑太真实了。device.makeDefaultLibrary() 只在 bundle.main 的顶层 Resources 找编译好的 metal library,但 SwiftPM 把包目标的 .metal 文件塞进自己嵌套的 resource bundle 里,makeDefaultLibrary() 根本不查。聪明的 GPU 代码默默返回 nil 几个月 —— Swift 开发者读者
-
混合搜索(关键词 + embedding)这个方案优雅。专有名词或具体事实——比如“turgay”“cv”“apple”——embedding 会泛化成“人”“文档”“公司”,但用户搜的是自己 CV 上的公司,字面匹配比语义相似有价值得多。两者结合才是正解 —— RAG 实践者
-
stop-word 过滤这步不能省。“and”“of”“which”“a”几乎每个文档都有,给它们加分那个 .ds_store 列表又会跳回顶部毒化结果。两层过滤(土耳其语+英语)加上 count > 2 自动滤掉 1–2 字母碎片,很务实 —— 关注搜索质量的读者
-
bonus 上限设 0.6 是关键微调。不限的话,一个有 10 个随机匹配但零相关性的长文档会人为推高分盖过一切。封顶让关键词匹配给强推力但不能完全劫持系统,语义打分仍有话语权 —— 认同作者权重的读者
海外技术社区热点采集。
-