Sentence Transformers 通过将来自不同语言的文本嵌入到一个共享的语义空间中,从而用于多语言搜索和跨语言信息检索。 这使得可以使用一种语言的查询来检索另一种语言的相关内容。 这些模型在并行或多语言数据集上进行训练,其中不同语言的句子具有相似的含义,在嵌入空间中紧密地映射在一起。 例如,如果英文查询(如“气候变化的影响”)的嵌入与西班牙语或德语文档的嵌入在语义上对齐,则可以匹配这些文档。 这种方法避免了手动翻译或特定于语言的预处理的需要,从而简化了跨语言搜索管道。
核心技术机制依赖于诸如 BERT 或 XLM-RoBERTa 之类的模型,这些模型已经在大型多语言语料库上进行了预训练。 Sentence Transformers 使用诸如 triplet loss 之类的对比学习目标来微调这些模型,以确保具有等效含义的句子(无论语言如何)都具有相似的嵌入。 例如,在训练期间,该模型可能会收到一个英文锚定句子、一个法语正面示例(翻译)以及另一个语言中的一个随机负面示例。 这教会了该模型区分跨语言的相关匹配和不相关匹配。 像联合国并行语料库或多语言 NLI 数据集(例如,XNLI)之类的数据集通常用于训练。 结果是一个能够将 100 多种语言的文本编码到统一向量空间中的单一模型。
在实践中,开发人员通过将所有文档编码为嵌入并使用诸如 FAISS 或 Elasticsearch 之类的向量数据库对其进行索引来将这些模型集成到搜索系统中。 当用户以任何语言提交查询时,系统都会对其进行编码并检索最接近的文档嵌入,而与其原始语言无关。 例如,如果日语文档在语义上最接近,则搜索“最佳远足径”的日语用户可能会收到英语或韩语的结果。 诸如 sentence-transformers
之类的库简化了实现——代码可能涉及加载预训练模型(例如,paraphrase-multilingual-mpnet-base-v2
)、编码文本和计算余弦相似度。 这种方法减少了对机器翻译 API 的依赖,并实现了大规模的实时、与语言无关的搜索。