Zubnet AI学习Wiki › 语义搜索
使用AI

语义搜索

别名:向量搜索、神经搜索
基于语义而非精确关键词匹配来查找结果的搜索方式。语义搜索不是寻找包含“修复”这个词的文档,而是找到关于“修理”、“解决”、“补丁”和“调试”的文档,因为它们含义相近。它的工作原理是将文本转换为嵌入向量(数值向量),然后在向量空间中找到最接近的匹配项。

为什么重要

语义搜索是现代搜索与关键词搜索相比如此强大的原因。它支撑着 RAG 系统、文档搜索、电商产品发现和工单路由。如果你正在构建任何需要查找相关信息的应用程序,语义搜索可能是正确的方法。

深度解析

流程如下:(1) 使用 BGE、E5 或 Voyage 等模型将文档编码为嵌入向量,(2) 将这些嵌入向量存储在向量数据库中(Pinecone、Qdrant、Weaviate、pgvector),(3) 当查询到来时,用同一模型对其进行编码,(4) 使用余弦相似度或点积等相似性度量找到最近的嵌入向量。查询"如何修复内存泄漏"会匹配到标题为"调试 Node.js 中 RAM 消耗"的文档,因为它们的嵌入向量在向量空间中非常接近。

混合搜索

纯语义搜索有一个弱点:它可能会遗漏关键词搜索能轻松捕获的精确匹配。如果有人搜索错误代码"ERR_SSL_PROTOCOL_ERROR",语义搜索可能返回一般的 SSL 故障排除指南,而非精确的错误信息。混合搜索结合了两者:关键词匹配(BM25)提供精确度,语义搜索提供召回率,然后合并结果。大多数生产环境中的搜索系统都使用混合方式。

嵌入模型的选择至关重要

语义搜索的质量完全取决于嵌入模型。通用模型(OpenAI 的 text-embedding-3、Cohere Embed)适用于大多数文本。领域特定模型(在医学、法律或代码数据上训练)在其领域内优于通用模型。多语言模型支持跨语言搜索。MTEB 排行榜在多项任务上对嵌入模型进行基准测试——它是选择嵌入模型的最佳资源。

相关概念

← 所有术语
← 词汇表 语料库 →
ESC