什么是 语义搜索?
语义搜索是一种利用学习得到的表示检索语义相关文档的信息检索方法,并通过过滤与排序回答用户意图,而不只依赖词项重合。
快速了解
| 创建时间 | 概念源自 2000 年代,基于 Transformer 的版本从 2019 年开始 |
|---|---|
| 规范文档 | 官方规范 |
工作原理
语义搜索用 Embedding 生成候选集,能在查询和文档用词不同的情况下召回同义、改写和概念相关内容;它并不取代关键词检索。精确编号、人名、代码、时效性和权限约束常需要词法检索与元数据过滤。生产流水线通常包含文档和分块策略、Embedding 建索引、ANN 候选召回、权限与新鲜度过滤、按场景融合词法和语义候选、对短名单重排,以及基于标注查询的评测。相似度分数只是在特定模型、归一化和索引下的相对信号,不是相关性的概率,更不是结果正确的证明。Embedding 模型、分块、索引、融合与重排都应针对语言、延迟、成本和真实相关性数据选择。
主要特点
- 用 Embedding 生成改写和概念相关的候选集
- 用词法检索和元数据过滤处理精确词、权限和新鲜度
- ANN 索引在延迟、召回率和内存之间权衡
- 基于标注相关性数据选择混合融合与重排
- 面向查询、文档、语言、租户和时间的检索约束
- 用 Recall@K、MRR、nDCG、错误切片和线上反馈评测
常见用途
- 在生成回答前检索有来源且已授权上下文的 RAG
- 结合自然语言意图、库存和目录过滤的商品发现
- 具备租户、角色、保留期和新鲜度约束的企业检索
- 经过人工审核相关性评测的客服检索与工单路由
- 将符号和精确标识符与代码 Embedding 结合的代码搜索
- 针对不同语言和查询类型分别评测的跨语言检索
示例
Loading code...常见问题
什么是语义搜索?
语义搜索是一种理解查询含义和意图的信息检索技术,而不仅仅匹配关键词。它使用向量嵌入将文本转换为数值表示,通过计算语义相似度来查找概念相关的结果,即使措辞不同也能找到相关内容。
语义搜索和关键词搜索有什么区别?
关键词检索按词项重合排序,通常更适合标识符、短语、代码、人名和时效性词语;语义检索按学习到的表示排序,能召回改写和概念相关内容。二者没有绝对优劣,可靠系统通常同时召回,执行元数据和访问过滤,再根据实际相关性数据融合或重排。
语义搜索是如何实现的?
Embedding 模型把查询或文档映射到数值坐标,使任务相关的关系在向量空间中得以保留。检索时,用模型和索引要求的度量比较查询与预计算文档表示。分数依赖模型、归一化和语料库,只是相对信号,不能证明结果正确、已授权或一定相关。
语义搜索在 RAG 系统中扮演什么角色?
在 RAG 中,语义检索可以产生候选证据,但它不是单独的可靠性保证。系统还需按权限和时间过滤来源,必要时融合关键词检索和重排,为上下文保留出处,并分别评测召回、引用支持度、最终答案正确性与拒答行为。
什么时候应该使用混合检索?
当查询同时包含精确实体或编号和自然语言意图时,混合检索往往值得测试。它会融合词法和语义候选,例如使用 RRF 或学习排序,但不是默认答案。应以真实标注查询比较纯关键词、纯语义和混合方案的 Recall@K、MRR、nDCG、延迟和错误切片,再确定是否采用及如何设定权重。
如何评测语义搜索质量?
先建立覆盖高频、长尾、不同语言、精确词、过期文档和权限边界的标注查询集,再度量 Recall@K、MRR、nDCG、Precision@K 和无结果率。上线后继续检查点击、人工纠错、失败查询、延迟和成本;Embedding 模型、分块、索引或融合规则任一变化都应重新回归。