前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9899
  • Claude 水印去除工具问世,发布仅一天
  • 研究证实:AI生成的安全补丁超半数有缺陷
  • AI功能的核心难题:知道哪里不该用它
  • Node.js物流评分场景下三大AI网关的成本控制实战
  • AI coding agent写的Postgres迁移看着安全,实际会锁表
  • Agent Plugins 1.0 发布:一次开发横跨 VS Code / Copilot CLI / Copilot
  • Grok 4.6 性能持平 GPT-5.6,价格低 60%
  • DuckDB替代Pandas:让Python分析不再爆内存
  • Zod Schema作为LLM输出的类型契约
  • 新模型发布对代码的影响:四类变更分类法
  • 月一教训:流式取消/重试/数据库一致性的踩坑总结
  • 如何写出AI能准确引用的页面内容
  • AI 编程助手公司 Cognition 正以 400 亿美元估值融资
  • 模型微调、去对齐与未对齐的区别与后果
  • AI Agent 反模式:无限循环问题
  • Pydantic/Zod 统一 Schema 解决 LLM 输出漂移
  • 统一多 LLM 提供商的类型化客户端设计
  • LLM 延迟指标拆解:首Token时间与生成速率的优化逻辑
  • LLM 返回截断的根因诊断:别再误判为 Prompt 问题
  • Hinton、Fei-Fei Li、吴恩达论战:AI开源与安全如何平衡
  • 文本相似度:四类问题与五大类算法全解
  • 文本预处理哪些步骤对LLM有害无益
  • 搜索文本规范化:核心是决定丢失哪些信息
  • 不用LLM做文本分类:成本差三个数量级
  • 文本分块大小与重叠的取舍逻辑
  • 利用Athena和CUDOS实现Amazon Bedrock成本归属可视化
  • Claude Code 自动模式 93% 批准率下的安全设计
  • 从脏文档提取结构化数据的完整管道
  • 选什么协议传 AI 响应:WebSocket/SSE/轮询的真实决策框架
  • 用 AllenAI Open Instruct 构建 RLVR/GRPO 后训练流水线
  • 研究证实:LLM 输出可反推原始 prompt,精度近完美
  • 自托管vs API的真正盈亏平衡点
  • 向团队提供Open Model的工程指南
  • Self-Consistency:采样多次取多数票的推理术
  • 缓存贵的、重算便宜的:LLM输出缓存策略
  • Agent工具调用的安全防护要点
  • 搜索延迟拆解:毫秒级预算分配实战
  • 推理模型延迟预算分析
  • 推理 Effort 档位实际控制什么
  • 推理模型性价比曲线:如何算清每分正确率成本
  • 为什么推理能力在数学好过代码好过文本
  • 通过所有测试的代码仍可能让AI代理崩溃
  • Cursor 修 IDOR 易漏同文件其他路由
  • 可信数据是AI Agent规模化的关键瓶颈
  • Anthropic为Agent引入梦境推理能力引热议
  • Python 中缓存 LLM 响应:细节决定成败
  • Harness Engineering:打造 AI 编程助手的工作环境
  • 加向量数据库前,先用 NumPy 搞定 Embedding
  • 自实现令牌桶限流:比等 429 更优
  • 长时 AI 任务用后台任务队列:状态机比框架重要
  • asyncio 并发调用 40 个 LLM:代码少但坑多
  • 已加载 51 / 9899
8.0
热点
AI SCORE
编程提效2026-08-13 01:49

文本相似度:四类问题与五大类算法全解

dev.to · AI#算法#NLP#信息检索
Editor brief · 编辑速览

区分字符级、表层、词集、语义四类相似度问题,梳理从SHA-256哈希到语义嵌入的完整方法论,并给出成本对比与选择指南。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

先说清楚你指的是哪种相似度

四个不同的概念,在打开一个库之前先明确自己的需求是值得的:

表面相似度。 字符是否几乎相同?Jonathan Smith 对比 Jonathon Smtih。拼写错误、OCR 识别错误、音译。

集合相似度。 内容是否大部分相同?一篇改了标题的文章的两个副本。这是近重复检测。

主题相似度。 讨论的是同一件事吗?两篇关于利率政策的文档,词汇有重叠但并非副本。

语义等价性。 含义相同吗?how do I cancel 对比 ending your subscription,没有任何实词重叠。

没有任何单一指标能覆盖这四种。一个擅长检测前者的方法,在设计上对后者必然是盲的,反之亦然。

The methods, by what they detect

Complexity, and why all-pairs is out

这个算术规律支配着每一个实际系统:对 n 个文档的全量两两比对,比较次数为 n(n−1)/2。n = 1,000 时约 50 万次——微不足道。n = 100,000 时是 50 亿次。n = 1,000,000 时约 5000 亿次,即使以每次比较最优的 100 纳秒计算,最便宜的方法也需要约 14 小时 CPU 时间。如果用编辑距离,每次比较需要 10 微秒,那就超过 150 年了。

这就是为什么上表中的每种方法都分属两个家族,这也是本文最有用的区分方式。可索引的方法——哈希、MinHash、SimHash、稀疏向量、稠密向量——通过倒排索引或近似最近邻结构在亚线性时间内找到候选集,从不枚举全部 pair。而只能逐对计算的方法——编辑距离、Jaro-Winkler、cross-encoder——是对已有的一对文本生成分数。架构总是如此:先建索引获取候选,再对候选精确打分。试图用只能逐对计算的方法来做搜索,是把两小时能完成的任务变成不可能的任务的常见错误。

The cost column, derived

假设均可替换: 100 万文档,每篇 300 token,共 3 亿 token。一台 4 核 vCPU 机器,假设费用为每小时 $0.05。

MinHash 去重。 Shingling 和哈希的复杂度与字符数成线性关系。百万级文档在一台机器上需要几分钟到几小时,计算成本不到 $1,加上签名存储——每文档 128 个 32 位哈希值共 512 字节,总共约 512 MB。

TF-IDF 索引和余弦搜索。 一次遍历构建,之后查询从倒排索引提供。计算成本与上述方案相当。内存占用是稀疏矩阵,对于 3 亿 token 和剪枝后的词表,完全在普通服务器的容量范围内。

稠密向量嵌入。 3 亿 token,按每百万 token $0.02 的嵌入成本计算,一次约 $6——加上语料库或模型更新时需要重新嵌入的成本,这是人们常忽略的部分。768 维 float32 存储每文档 3 KB,约 3 GB,再加上 ANN 索引。了解向量存储的实际成本以及维度数为何是预算决策。

Cross-encoder 重排。 按 pair 计费而非按文档计费,所以成本由候选数量决定。对 100 万次查询各取前 50 名重排,就是 5000 万次模型调用,与上面所有方法不在同一个量级,这也是它只应该在短列表上运行的原因。

值得提取的核心规律:便宜的方法便宜几百倍,而不是几个百分点;昂贵的方法之所以还能承受,是因为先跑了某个便宜的方法。

Choose by the failure you cannot afford

准确性不是正确的衡量轴,因为每种方法都有特征性的失效方向。问自己:哪种错误最不能接受?

如果合并两个不同客户是不可接受的,就需要一种能看到字符的方法——嵌入模型会兴高采烈地把 Invoice 4471 和 Invoice 4417 给出 0.99 的余弦相似度。如果遗漏改写是不可接受的,就需要嵌入,因为再多的词项加权也无法建立 cancel 到 terminate 的联系。如果需要向监管者或客户解释决策,稀疏加权是唯一能把分数分解成可解释项的方法。如果语料库大到全量两两比对不可行——根据上面的算术,任何超过约十万文档的语料库都是如此——那么可索引性不是偏好,而是约束条件,它会让表格中一半的方法失效。

表格中只有一行有按 token 计的价格,值得去核实而不是假设:嵌入的计费方式和其他一样按每百万 token 计,通常只是聊天价格的一小部分,所以上面那个每百万文档 $6 的数字只需一次乘法就能得到你的真实成本。不过,如果任务是去重,实话是 MinHash 的成本只有其百分之一,检测的正是去重真正需要的东西,而且在模型版本更新时不需要重新运行。

TF-IDF Explained and Implemented

Spell Correction and Fuzzy Matching

Topic Modelling: LDA vs Embedding Clustering

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
Hinton、Fei-Fei Li、吴恩达论战:AI开源与安全如何平衡
下一篇
文本预处理哪些步骤对LLM有害无益