网站提现功能怎么做,企业门户网站建设方案及报价,最基本的网络营销站点,网站建设中标公告1. 目标
训出一个统一的embedding模型LLM-Embedder#xff0c;旨在全面支持LLM在各种场景中的检索增强
2. 模型的四个关键检索能力
knowledge#xff1a;解决knowledge-intensive任务memory#xff1a;解决long-context modelingexample#xff1a;解决in-context learn…1. 目标
训出一个统一的embedding模型LLM-Embedder旨在全面支持LLM在各种场景中的检索增强
2. 模型的四个关键检索能力
knowledge解决knowledge-intensive任务memory解决long-context modelingexample解决in-context learning上下文学习tool解决tool learning
3. 要解决的问题
嵌入模型必须优化其对LLM的最终检索增强影响而不是仅仅关注中间检索结果不同的检索任务旨在捕捉不同的语义关系它们的影响可能受到相互干扰
4. base model
是在BAAI/bge-base-en的基础上训练的
5. 训练数据
Question Answering MSMARCOlabeledNatural Questionslabeled Conversational Search QReCClabeled Tool Learning ToolLLMlabeled Instruction Tuning FLANNon-labeledUPRISENon-labeled Generation Multi-Session ChatNon-labeledBooks3Non-labeledArXivNon-labeledCodeParrotNon-labeled
6. 数据格式
training
{query: str,pos: List[str],neg: List[str],pos_index: Optional[List[int]], # 正样本在语料库里面的索引如果没有全局语料库则忽略neg_index: Optional[List[int]], # 负样本在语料库里面的索引如果没有全局语料库则忽略 teacher_scores: Optional[List[float]], # 一个LM或者一个reranker的分数被用来进行蒸馏answers: Optional[List[str]], # List of answers for the query, used for LM scoring.
}evaluation
{query: str,pos_index: Optional[List[int]], # Indices of the positives w.r.t. corpus (retrieval) / w.r.t. keys (rerank). When there is no positives pre-defined (e.g. NQ), just ignore this field.answers: Optional[List[str]], # List of answers for computing NQ metrics.key: Optional[List[str]], # Collated retrieval results for the query / candidates to rank when there are no positives and negatives.key_index: Optional[List[int]], # Key indices w.r.t. the corpus when reranking and no positives negatives.
}7. 训练方法
主要是Reward from LLMInstruction-based Fine-TuningHomogeneous In-Batch Negative Sampling和Stabilized Distillation四个关键技术 Reward from LLM 除了数据集中的hard labels这里还将LLM的输出作为reward这些reward可以作为soft labels (1)式中C为一个检索到的候选也就是一个中间结果O是期望的LLM的输出一个候选的reward被表示为 r C ∣ O r_{C|O} rC∣O。 o i o_i oi表示期望输出的第i个token O : i − 1 O_{:i-1} O:i−1表示期望输出的前i-1个token LLM reward的使用范围问答Question Answering指令调整Instruction Tuning生成Generation在会话搜索conversational search 和 工具学习数据集tool learning datasets上不适用因为在这些情况下对LLM的输出没有明确的期望 使用对比学习contrastive learning的方法去抓取hard labels所反应的语义关系用知识蒸馏knowledge distillation的方法从LLM生成的soft reward中学习 对比学习 与一般的对比学习差不多但为了提高embedding在不同应用场景中的辨别能力在对比学习框架中采用了几个关键设计 Instruction-based Fine-Tuning给每一个任务设计了一个对应的instruction计算embedding的时候将instruction和query合在一起计算 e q ← e n c o d e ( [ I t , q ] ) e_q\gets encode([I_t, q]) eq←encode([It,q])Homogeneous In-Batch Negative Sampling使用了cross-device sharing在这个方法里负样本一共有 B × K × N − 1 B\times K\times N-1 B×K×N−1个负样本B是batch_sizeK是GPU的数量N是所有正样本和hard negative样本的数量。但是不同任务的数据会互相影响导致模型分辨能力下降所以为了解决这一限制引入了一种用于组织训练数据的正则化策略其中来自同一任务的数据实例被分组为连续的小批量该策略使大多数批内负样本来自同一数据集即同质负样本从而增强嵌入对每个特定任务的判别能力 知识蒸馏 使用KL散度来最小化使用LLM奖励计算的候选分布与嵌入模型预测的候选分布之间的差距。对于每个query q q q都有一个候选列表 P : [ p 1 , ⋯ , p N ] \mathcal P:[p_1,\cdots,p_N] P:[p1,⋯,pN]然后通过公式(1)获得大模型对候选的奖励表示为 R : [ r 1 , ⋯ , r N ] R:[r_1,\cdots,r_N] R:[r1,⋯,rN]为了使得大模型的rewards适合蒸馏将每个reward转化为标准化的权重 w i ← s o f t m a x R ( r i / α ) w_i\gets softmax_R(r_i/\alpha) wi←softmaxR(ri/α)其中 α \alpha α表示温度系数 简单理解就是rewards越大 w i w_i wi越大越好query和正样本的相似度越大越好 e x p ( ⟨ e q , e p ⟩ ) / τ exp(\big\langle e_q, e_p \rangle\big)/\tau exp(⟨eq,ep⟩)/τ越大query和负样本的相似度越小越好 ∑ p ′ ∈ P e x p ( ⟨ e q , e p ′ ⟩ ) / τ \sum_{p\prime \in \mathcal P} exp(\big\langle e_q, e_p\prime \rangle\big)/\tau ∑p′∈Pexp(⟨eq,ep′⟩)/τ越小 由于来自不同任务的不同训练样本LLM的奖励幅度可能表现出高度波动导致训练效果不好 为了解决多任务场景下reward的波动问题提出Stabilized Distillation 基于LLM的rewards R : [ r 1 , ⋯ , r N ] R:[r_1,\cdots,r_N] R:[r1,⋯,rN]我们将候选从高到低排序这样就生成了一个新的候选集定义为 P : [ p 1 , ⋯ , p N ] \mathbb P:[p_1,\cdots,p_N] P:[p1,⋯,pN]其中 r i ≥ r i 1 r_i\ge r_{i1} ri≥ri1。在上面的式子中 P \mathbb P P由两部分组成排名比 p i p_i pi低的候选 [ p i 1 , ⋯ , p N ] [p_{i1},\cdots,p_N] [pi1,⋯,pN]以及in-batch negative samples这个调整过的公式从两方面来稳定波动的rewards一方面该模型经过持续的训练以促进 p i p_i pi 与排名较低的同一个候选集的item [ p i 1 , ⋯ , p N ] [p_{i1},\cdots,p_N] [pi1,⋯,pN]进行比较 这意味着无论rewards的绝对价值如何模型都能够从LLM的偏好中学习另一方面当排名第一的候选比其他候选获得明显更高的reward时权重将变成one-hot在这种情况下提取过程将简化为对比学习的形式排名第一的候选将被视为正样本。简单理解就是一方面我们拿到的负样本中的 [ p i 1 , ⋯ , p N ] [p_{i1},\cdots,p_N] [pi1,⋯,pN]部分都是在LLM给出的reward比正样本低的这样避免了出现负样本reward比正样本要高的情况减少了波动另一方面当排名第一的候选比其他候选获得明显更高的reward时式子就变成了 m i n − l o g e x p ( ⟨ e q , e i ⟩ ) / τ ∑ p ′ ∈ P e x p ( ⟨ e q , e p ′ ⟩ ) / τ min -log \frac{exp(\big\langle e_q, e_i \rangle\big)/\tau}{\sum_{p\prime \in \mathbb P} exp(\big\langle e_q, e_p\prime \rangle\big)/\tau} min−log∑p′∈Pexp(⟨eq,ep′⟩)/τexp(⟨eq,ei⟩)/τ
8. LLMs的检索增强 Knowledge Enhancement将知识语料库里面的文档进行编码并存入向量数据库中在许多情况下对于用户提出的问题可以直接查用于查询向量数据库在其他情况下生成过程中的上下文可以用作查询然后在大模型里用[knowledge, query] → answer方式得到答案 Long-Context Modeling当处理长上下文时可以对整个历史进行分块、编码并将其加载到向量数据库中生成过程中的上下文可用于查询向量数据库中的相关chunk。在很多情况下查询到的相关chunk比如chunk_i以及其后面的chunk_i1都会被用来增强记忆因为后续的chunk对生成下文来说可能更为关键。[retrieved chunks, current context] → new generation. In-context Learning上下文学习演示示例以“(task instruction, expected output”的形式组织可以在向量数据库中进行编码和预存。当给出一个新任务时该任务的指令instruction用于查询向量数据库检索到的示例与任务的指令相连接在此基础上可以进行上下文学习。[retrieved examples, instruction] → response. In-context Learning的示例 Few shot示例出现多个)6713,6612,5510,89One shot示例出现一个): 5510,89Zero shot示例没有出现): 89 Tool Learning该工具的功能可以用语言描述并与其API配对“descriptionAPI”这样向量数据库就可以根据被编码的description来管理一个庞大的工具包考虑到涉及工具使用的用户请求可以对该用户请求进行编码并用于查询向量DB。[user request, tool’s execution result] → generation
9. 论文中四个关键技术的工程实现
Reward from LLM 通过给case选择正负样本实现因为正负样本都通过计算LLMs的输出logits和label的交叉熵给出了分数所以根据分数选择更好的正负样本就实现了Reward from LLM Instruction-based Fine-Tuning 通过给query和正负样本添加instruction实现 Homogeneous In-Batch Negative Sampling 记录每种task数据的index范围然后只在每种task的index范围内进行shuffle然后在训练的时候将相同task的数据分到一个batch里面 Stabilized Distillatio 跟据teacher_scores即LLM给样本的打分对负样本进行排序选择分数较低的一部分样本作为负样本
论文链接 项目的github地址