嵌入在混合搜索系统中用于实现数据的语义理解,同时结合了基于关键词和基于向量的搜索方法的优势。在混合系统中,嵌入将文本、图像或其他数据转换为捕捉其含义和关系的数值向量。这些向量使系统能够根据概念相似性查找匹配项,即使没有精确的关键词重叠。例如,搜索“冷甜点”可能会返回包含“冰淇淋”或“冰沙”的结果,因为它们的嵌入在语义上很接近,即使这些词没有被明确提及。这补充了依赖于精确词语匹配或同义词的传统关键词搜索。
混合系统结合了关键词搜索和向量搜索的结果,以提高相关性。关键词搜索擅长匹配特定术语,并利用倒排索引快速过滤结果。同时,嵌入处理模糊查询或用户在描述概念时未使用精确术语的情况。例如,搜索“Python 错误处理”的开发者可能会获得包含这些确切术语的教程的关键词匹配结果,而向量搜索则会找到关于“异常”或“try-catch 块”的文章。系统随后使用得分融合等技术——对两种方法的得分进行加权和归一化——来合并这些结果,生成一个统一的排名列表。这种方法确保了关键词搜索的高准确率和嵌入带来的更广泛的召回率。
在混合系统中实现嵌入需要用于生成向量的工具(例如,BERT、Sentence Transformers)以及支持组合搜索的数据库,例如带有向量插件的 Elasticsearch 或 Pinecone。开发人员通常会预先计算索引数据的嵌入,并将其与关键词一起存储。在查询时,系统会并行运行两种搜索:一种使用关键词,另一种使用查询的嵌入。挑战包括平衡延迟(向量搜索可能较慢)和调整融合算法以避免偏向某一种方法。例如,一个电子商务应用可能会使用关键词搜索按品牌名称过滤产品,并使用嵌入来推荐视觉上相似的商品,从而确保用户获得精确且与上下文相关的结果。