模型:

flax-sentence-embeddings/multi-QA_v1-mpnet-asymmetric-Q

英文

multi-QA_v1-mpnet-asymmetric-Q

模型描述

SentenceTransformers是一组模型和框架,可用于从给定的数据训练和生成句子嵌入。生成的句子嵌入可用于聚类、语义搜索和其他任务。我们使用两个独立的预训练模型,并使用对比学习目标对它们进行训练。问题和答案对来自StackExchange和其他数据集被用作训练数据,以使模型对问题/答案嵌入相似性更加鲁棒。我们在Hugging Face组织的比赛中开发了这个模型,并将其作为项目的一部分进行了开发。我们在运行该项目时受益于高效的硬件基础架构,运行了7个TPU v3-8,并且得到了来自Google的Flax、JAX和Cloud团队成员的关于高效深度学习框架的帮助。

预期用途

这个模型集旨在用作搜索引擎的句子编码器。给定一个输入句子,它输出一个捕捉句子语义信息的向量。这个句子向量可以用于语义搜索、聚类或句子相似性任务。为了进行语义搜索,应该同时使用两个模型。

  • multi-QA_v1-mpnet-asymmetric-Q - 编码问题的模型
  • multi-QA_v1-mpnet-asymmetric-Q - 编码答案的模型
  • 使用方法

    以下是使用 SentenceTransformers 库来获取给定文本特征的模型使用方法:

    from sentence_transformers import SentenceTransformer
    model_Q = SentenceTransformer('flax-sentence-embeddings/multi-QA_v1-mpnet-asymmetric-Q')
    model_A = SentenceTransformer('flax-sentence-embeddings/multi-QA_v1-mpnet-asymmetric-A')
    question = "Replace me by any question you'd like."
    question_embbedding = model_Q.encode(text)
    answer = "Replace me by any answer you'd like."
    answer_embbedding = model_A.encode(text)
    answer_likeliness = cosine_similarity(question_embedding, answer_embedding)
    

    训练过程

    预训练

    我们使用了预训练的 Mpnet-base 。有关预训练过程的详细信息,请参考模型卡片。

    微调

    我们使用对比目标对模型进行微调。形式上,我们从批次中每对可能的句子对中计算余弦相似性。然后,通过与真实对进行比较,应用交叉熵损失。

    超参数

    我们在TPU v3-8上训练了模型。我们以批量大小1024(每个TPU核心128个)进行了80,000个步骤的训练。我们使用了500的学习率预热。序列长度限制为128个标记。我们使用了AdamW优化器,学习率为2e-5。完整的训练脚本可在当前存储库中获取。

    训练数据

    我们使用了多个Stackexchange问题-答案数据集的串联来微调我们的模型。还使用了MSMARCO、NQ和其他问题-答案数据集。

    Dataset Paper Number of training tuples
    1238321 - 4,750,619
    1239321 - 364,001
    12310321 - 73,346
    12311321 12312321 87,599
    12313321 - 103,663
    12314321 12315321 325,475
    12316321 12317321 64,371,441
    12318321 12319321 77,427,422
    12320321 12321321 9,144,553
    12322321 12323321 3,012,496
    12324321 Question/Answer 12325321 681,164
    SearchQA - 582,261
    12326321 12327321 100,231