嵌入 (Embeddings) 用于搜索引擎中,将文本、图像或其他数据转换为数值向量,使算法能够理解项目之间的语义关系。 当用户输入查询时,搜索引擎会为该查询生成一个嵌入,并将其与索引文档或产品的嵌入进行比较。 这种比较通常使用余弦相似度等相似性指标来完成,该指标衡量两个向量的对齐程度。 例如,对“最佳预算笔记本电脑”的查询可能会返回与“经济实惠的笔记本电脑”相关的结果,即使精确的关键字不匹配,因为它们的嵌入在语义上很接近。 这种方法超越了字面关键字匹配,以捕捉搜索的意图和上下文。
为了实现这一点,搜索引擎通常使用预训练模型(如 BERT、Word2Vec 或句子转换器)来生成嵌入。 这些模型在大型文本语料库上进行训练,以将单词、短语或整个文档映射到密集的向量空间中。 例如,产品搜索引擎可能会将产品描述和用户查询嵌入到同一个向量空间中,使其能够检索与查询含义对齐的项目,而不仅仅是关键字重叠。 然后,像 FAISS 或 Annoy 这样的向量数据库用于通过近似最近邻来有效地搜索数百万个嵌入。 与暴力比较相比,这降低了计算开销,从而使大规模的实时语义搜索成为可能。
一个实际的例子是电子商务平台使用嵌入来改进搜索结果。 如果用户搜索“耐用的跑鞋”,嵌入可以帮助引擎显示标有“持久的越野运动鞋”的产品,即使没有明确提及“耐用”。 另一个用例是多语言搜索,其中在多种语言上训练的嵌入将跨语言的相似短语映射到同一向量空间中,从而使一种语言的查询可以返回另一种语言的结果。 挑战包括在数据演变时保持嵌入质量,以及在大规模系统中平衡延迟和准确性。 开发人员还必须处理更新,例如,在添加新产品或内容时重新训练嵌入,以确保长期相关性。