参考:https://www.slidestalk.com/Milvus/doc2vecmilvus85394
相似文章召回,通常是指在信息检索、自然语言处理等领域中的一种技术手段。它的主要功能是根据用户提供的某篇文章或一段文本,通过算法模型快速、准确地从海量文本库中找出与之主题内容相似的其他文章。
具体实现过程常常包括以下几个步骤:
-
文本预处理:对输入的文章进行分词、去除停用词、词干提取等操作,将其转化为可以被计算机理解的形式。
-
特征提取:将预处理后的文本转换为特征向量,常见的方法有TF-IDF、词嵌入(如Word2Vec、GloVe、BERT等)。
-
相似度计算:利用余弦相似度、Jaccard相似度、欧氏距离等方法计算目标文章与文本库中每篇文章的相似程度。
-
文章召回:根据相似度排序,选取相似度最高的若干篇文章作为召回结果返回给用户。
这种技术在搜索引擎、推荐系统、新闻聚合、知识图谱构建等多种应用场景中都有着广泛的应用。
当前相似文章召回,较为流行的有 bag of words,average word vectors,tfidf-weighting word vectors,这些方法能都实现文章向量的训练,但是对文章在语义空间中的表达仍有一定的欠缺,主要原因是不能够学习到单词的顺序或者句子的语义。Doc2vec又叫Paragraph Vector是Tomas Mikolov基于word2vec模型提出的,doc2vec 相较于传统的 word2vec 的方法,考虑了文章中单词的顺序,能更好更准确的在向量空间中表示一篇文章的语义,而相比于神经网络语言模型,Doc2vec 的省时省力更适合工业落地。
文章语义向量化后,利用 Milvus 对特征向量做相似度检索。能极大的提高相似文章的召回速度,做到实时相似文章召回。最后获取召回的相似文章相似度,根据业务场景通过策略加权,最终排序输出符合当前业务的相似文章结果。
可以将Word2Vec生成的1536维词向量和BERT生成的1536维词向量进行相似度查询,但需要注意的是:
-
向量空间差异:虽然两者维度相同,但它们是通过不同的模型训练得到的,因此它们所代表的语义空间可能不完全一致。Word2Vec(如CBOW或Skip-Gram)基于统计共现信息学习单词的分布式表示,而BERT(Bidirectional Encoder Representations from Transformers)则通过多层Transformer网络对上下文敏感的表示进行建模。
-
相似度计算的含义:在NLP中,使用余弦相似度、欧氏距离等方法计算两个词向量之间的相似度时,理想情况下希望向量间的距离能够反映词语在语义上的接近程度。然而,由于Word2Vec和BERT模型背后的原理不同,直接比较二者生成的词向量可能无法获得完全一致的结果。
-
应用场景:如果在特定任务上(比如词汇相似性判断或者检索任务),两种模型生成的向量都能较好地捕捉到所需的语义信息,并且目标是利用这些向量进行通用的相似度比较,则可以在技术上进行这样的操作。
实践中,通常我们会针对具体任务来选择合适的词向量模型,并在同一模型内部比较词向量的相似度,以确保语义空间的一致性。如果确实需要跨模型比较,那么这可能是为了探索不同模型在表示能力上的异同,而不是作为标准的相似度查询手段。