Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Semantic Search

语义搜索使用嵌入、近邻搜索和重排序器,根据查询的含义而非确切用词为文档和图像排序。

语义搜索根据文档、图像或其他内容与查询在含义上的相似程度进行排序,而不是根据它们与查询共享的词语进行排序。搜索“我的猫饿了”可能会返回标题为“新小猫的喂养计划”的页面,尽管两者没有共同词语。现代系统使用嵌入来实现这一点:神经编码器将查询和内容映射到向量空间,含义相似的内容会彼此靠近;向量搜索则用于查找最近的内容。2019 年,Google 开始使用 BERT 理解搜索查询,推动了网络搜索向这一方向发展;Google 表示,此举影响了美国十分之一的英语搜索。

语义搜索的工作原理#

大多数语义搜索系统使用双编码器进行检索,再通过重排序器优化结果。双编码器会提前为每篇文档生成一次嵌入,并将向量存入向量数据库。查询时只需为查询生成嵌入,近似最近邻索引便会按余弦相似度返回排名靠前的候选结果。Sentence-BERT(2019)让这一方法适用于句子:在 10,000 个句子中找到最相似的一对,使用 BERT 交叉编码器约需 65 小时,而使用其句子嵌入约需 5 秒。随后,密集段落检索(2020)证明,在开放域问答任务中,学习得到的嵌入在前 20 个段落的检索准确度上比 BM25 关键词排序高出 9 到 19 个百分点。最后,交叉编码器重排序器会同时读取查询和每个候选结果,以更准确地重新排列短名单。

此示例使用 Sentence Transformers 库比较词语重合度和嵌入相似度:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")

documents = [
    "How to reset a forgotten account password",
    "Feeding schedule for a new kitten",
    "Quarterly sales report for the retail division",
    "Best hiking trails near Denver",
]
query = "my cat is hungry"

# Keyword search: documents sharing at least one word with the query
query_words = set(query.lower().split())
print("Keyword matches:", [d for d in documents if query_words & set(d.lower().split())])

# Semantic search: rank documents by cosine similarity of their embeddings
doc_embeddings = model.encode(documents)
query_embedding = model.encode(query)
scores = model.similarity(query_embedding, doc_embeddings)[0]
best = int(scores.argmax())
print(f"Semantic match: {documents[best]!r} (cosine {scores[best]:.2f})")

关键词匹配返回空列表,因为没有文档包含“my”“cat”“is”或“hungry”。语义搜索则返回小猫喂养计划,其余弦相似度为 0.56;这是在含义上最接近的文档。

  • 关键词搜索:使用 BM25 等公式根据精确术语匹配为文档排序。它适合处理名称、零件编号和嵌入可能模糊处理的罕见词,但容易漏掉同义词和改述表达。
  • 混合搜索:同时进行关键词检索和语义检索,并合并结果,是生产环境搜索和 RAG 系统中的常见配置。
  • 语义分割:一种无关的计算机视觉任务,为图像中的每个像素标注类别;它与语义搜索唯一相同之处只是“语义”一词。
  • 语义缓存:对 LLM 请求采用同样的基于含义的匹配方式;当新提示词与之前的提示词含义相同时,就复用已存储的答案。

实际应用#

  • 检索增强生成(RAG):为语言模型查找所需段落,即使用户的措辞与文档中的措辞不同也能找到。
  • 专利搜索:找出使用不同术语描述同一发明的现有技术。
  • 零售商品搜索:将“适合雨天通勤的鞋子”之类的查询与商品描述中没有使用这些词语的防水运动鞋相匹配。
  • 推荐系统:推荐嵌入向量与用户已选择内容的嵌入向量接近的文章或商品。

按含义搜索图像#

使用对比学习在图像与标题配对数据上训练的模型,例如 CLIP,会将文本和图像嵌入同一个空间,因此文本查询可以为没有标签或标题的照片排序。Ultralytics 语义图像搜索解决方案就是基于这一原理构建的:它的 VisualAISearch 类会使用 CLIP 为文件夹中的每张图像生成一次嵌入,将每个文本查询嵌入同一空间,并返回最多 30 张余弦相似度超过阈值的图像,按相似度从高到低排序。这样,像“一只狗坐在长椅上”这样的查询就能在没有标注的图像集合中找到匹配照片。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来