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

如何在SQL中实现句子相似度对比并筛选符合要求的记录

你的需求完全可以在SQL中实现,根据你使用的数据库类型不同,可选择的实现方案如下:

1. 基于词汇重叠的相似度匹配(适合识别共有相似词汇的场景)

MySQL 实现方案(用内置全文搜索)

  • 第一步:为存储句子的字段创建全文索引
-- 示例表为 sentences,存储句子的字段为 content
CREATE FULLTEXT INDEX idx_ft_sent_content ON sentences(content);
  • 第二步:查询与目标句子相似度高于指定阈值的结果
SELECT 
  id, 
  content, 
  MATCH(content) AGAINST('输入你的目标句子' IN NATURAL LANGUAGE MODE) AS similarity
FROM sentences
-- 阈值可根据需求调整,数值越高匹配相似度越高
WHERE MATCH(content) AGAINST('输入你的目标句子' IN NATURAL LANGUAGE MODE) > 0.3
ORDER BY similarity DESC;

PostgreSQL 实现方案(用pg_trgm扩展)

  • 第一步:开启扩展并创建索引
-- 开启 trigram 扩展
CREATE EXTENSION IF NOT EXISTS pg_trgm;
-- 创建GIN索引加速查询,大数据量下性能提升明显
CREATE INDEX idx_trgm_sent_content ON sentences USING GIN (content gin_trgm_ops);
  • 第二步:单句匹配查询
SELECT 
  id,
  content,
  similarity(content, '输入你的目标句子') AS similarity
FROM sentences
WHERE similarity(content, '输入你的目标句子') > 0.2
ORDER BY similarity DESC;
  • 若需要批量找出所有两两存在相似词汇的句子对,用自连接查询:
SELECT 
  a.id AS sentence_id_1,
  a.content AS sentence_1,
  b.id AS sentence_id_2,
  b.content AS sentence_2,
  similarity(a.content, b.content) AS similarity
FROM sentences a
-- 用a.id < b.id避免返回重复配对,如(1,2)和(2,1)
INNER JOIN sentences b ON a.id < b.id
WHERE similarity(a.content, b.content) > 0.2
ORDER BY similarity DESC;

2. 基于语义的相似度匹配(适合语义相似但词汇不完全重合的场景)

现在主流数据库都支持向量检索能力,你可以提前将所有句子通过语义模型转换为向量存入数据库,通过计算向量余弦距离得到语义相似度,匹配准确率远高于词汇匹配:
以PostgreSQL + pgvector扩展为例:

  • 第一步:开启扩展并添加向量字段
CREATE EXTENSION IF NOT EXISTS vector;
-- 1536为向量维度,可根据你使用的embedding模型输出维度调整
ALTER TABLE sentences ADD COLUMN content_vector vector(1536);
  • 第二步:插入数据时同步存入对应句子的向量值,查询语句如下:
SELECT 
  id,
  content,
  -- 1减去余弦距离得到0-1区间的相似度,数值越高越相似
  1 - (content_vector <=> '目标句子对应的向量字符串') AS similarity
FROM sentences
WHERE 1 - (content_vector <=> '目标句子对应的向量字符串') > 0.7
ORDER BY content_vector <=> '目标句子对应的向量字符串' ASC;

注意事项

  • 大数据量下必须提前为对应字段创建索引,否则查询性能会非常差
  • 相似度阈值没有统一标准,可根据你的业务容忍度灵活调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:36:02