新闻详情

新闻详情

首页 / 资讯中心 / 详情

train-sentence-transformers - prompts_and_instructions

发布时间:2026/10/1 2:42:49来源:尧图网络
train-sentence-transformers - prompts_and_instructions
提示词与指令现代嵌入模型E5、BGE、GTE、Qwen3-Embedding、Nomic、Instructor 等在编码时使用提示词/指令——如query: 、passage: 或Represent this sentence for retrieval:这样的短前缀——来表达任务意图。在 sentence-transformers 中提示词在训练和推理期间都有效库会自动保持它们对齐。提示词在分词之前被字面地前置到输入文本上。模型级提示词在模型上设置提示词使encode()、encode_query()、encode_document()自动使用它们modelSentenceTransformer(your-base-model)model.prompts{query:query: ,document:passage: ,}model.default_prompt_namedocument# 未指定时使用推理时q_embmodel.encode_query(What is the capital of France?)# 内部编码 query: What is the capital of France?d_embmodel.encode_document([Paris is the capital of France.,Berlin is the capital of Germany.])# 内部编码 passage: Paris... 等# 显式 prompt_nameembmodel.encode([some text],prompt_namequery)带提示词训练在训练参数上设置提示词使它们在训练期间自动应用于正确的列。四种形状越来越具体1. 单一提示词应用于所有地方argsSentenceTransformerTrainingArguments(...,promptsRepresent this sentence for similarity: ,)每个输入列都获得前缀。最简单通常对单任务训练就足够了。2. 按列提示词prompts{anchor:query: ,positive:passage: ,negative:passage: ,}键是列名。不同角色使用不同前缀。3. 按数据集提示词多数据集prompts{all-nli:Classify the entailment relationship: ,stsb:Score semantic similarity: ,}键是数据集名称与train_dataset字典键匹配。4. 按数据集 按列prompts{all-nli:,# all-nli无提示词msmarco:{# msmarco按列query:query: ,positive:passage: ,negative:passage: ,},}交叉编码器特有交叉编码器将提示词限制为单值或仅按数据集不支持按列。这是因为交叉编码器接受文本对而不是单独的列。argsCrossEncoderTrainingArguments(...,promptsRank this passage for the query: ,# 单一提示词)# 或argsCrossEncoderTrainingArguments(...,prompts{msmarco:...,gooaq:...},# 按数据集)稀疏编码器SPLADE稀疏编码器支持与双编码器相同的四种形状的提示词v5.x 中新增。相同的model.prompts {...}API。池化与提示词 token双编码器在使用带提示词前缀的 mean/last-token 池化时提示词 token 本身可以被包含在池化嵌入中默认行为。更简单大多数模型都这样做。被排除——只池化实际内容 token。要排除翻转 Pooling 模块上的include_prompt——通过isinstance找到它而不是固定索引因为多模态 / Router 流水线并不总是把 Pooling 放在位置 1fromsentence_transformers.sentence_transformer.modulesimportPoolingformoduleinmodel:ifisinstance(module,Pooling):module.include_promptFalse或者如果你的模型暴露了辅助方法使用它例如SparseEncoder.set_pooling_include_prompt(False)。何时排除当提示词纯粹是任务信号而你不希望它稀释语义表示时。大多数 E5 / BGE / GTE 模型保持提示词被包含。在使用prompts训练期间include_prompt设置会被尊重训练器还在内部跟踪include_prompt_lengths以便在include_promptFalse时池化正确跳过提示词 token。推理对齐如果你用prompts{query: query: , ...}训练你必须在模型上保存提示词在save_pretrained之前设置model.prompts args.prompts或让库通过模型卡数据自动完成。在推理时使用相同的提示词调用encode_query()/encode_document()保存的提示词会被应用。如果保存的模型的config_sentence_transformers.json有promptsdefault_prompt_name任何加载它的人都能免费获得正确的提示词。指令微调与提示词不同一些模型Instructor、Qwen3-Embedding使用指令——如Represent the biomedical query for retrieving relevant passages:这样更长的描述。在 sentence-transformers 中这些以相同方式建模只需将它们设置为提示词。模型卡的惯例是在字典中列出可用的指令/提示词model.prompts{msmarco-query:Represent the query for MS MARCO retrieval: ,msmarco-doc:Represent the passage for MS MARCO retrieval: ,sts:Represent the sentence for semantic similarity: ,classification:Represent the sentence for topic classification: ,}用户调用model.encode([...], prompt_namemsmarco-query)。陷阱用提示词训练但忘记在save_pretrained之前在模型上设置它们保存的模型不知道提示词。用户将不带前缀编码并得到糟糕的结果。修复保存前设置model.prompts args.prompts或使用带提示词信息的SentenceTransformerModelCardData(...)。在推理时使用encode_query()但没有用 “query” 提示词训练该方法只会调用常规encode不应用前缀这没问题。但文档暗示你使用它用户可能会困惑。尾随空格很重要query: 与query:——前者在真实文本前有一个尾随空格。检查你的训练数据以知道你的模型是用哪一个训练的。在多数据集训练中混合带提示词和不带提示词的数据是可以的只要你的prompts字典按数据集覆盖例如{dataset_a: query: , dataset_b: }。include_promptFalse配合小数据集模型可能欠拟合因为你实际上缩短了每个输入。通常保持为 True。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Godot回合制游戏轮次系统实战:状态机与信号驱动设计详解 2026/10/1 3:26:15

Godot回合制游戏轮次系统实战:状态机与信号驱动设计详解

最近在按项目式的节奏做一款回合制小游戏,正好推进到“游戏轮次”这一节。轮次这个东西,听起来不就是“你动一下、我动一下”吗?真正落到代码里才发现,它牵扯到状态控制、信号传递、UI锁定、AI延时、回合结算这一整条链路&#xf…

阅读更多 →
自建GitHub镜像站:用Gitea实现内网仓库同步与加速 2026/10/1 3:26:15

自建GitHub镜像站:用Gitea实现内网仓库同步与加速

上周开发同事又在群里喊:公共基础库的 clone 又超时了,快看看 GitHub 镜像站。这台镜像站是运维部自己搭的,8 核 16G 内存,跑着一台 Gitea,同步了三百多个常用开源仓库。半年多折腾下来,坑踩了不少&#xf…

阅读更多 →
Linux磁盘满排查实战:从syslog失控到logrotate根治 2026/10/1 3:26:15

Linux磁盘满排查实战:从syslog失控到logrotate根治

半夜被监控连环报警叫起来,看到根分区 100%,那一刻的心情相信每个运维都懂。上个月我就实打实踩了一次:SSH 登录卡得不行,写文件直接 No space left on device,连数据库都起不来,最后df一敲,系统…

阅读更多 →
Redis缓存面试高频考点:穿透、击穿、雪崩与分布式锁实战 2026/10/1 3:26:15

Redis缓存面试高频考点:穿透、击穿、雪崩与分布式锁实战

1. 破题:Redis缓存面试题到底在考什么先聊点实在的。我面试过不少人,简历上写着“熟悉Redis”,但一问“缓存穿透和缓存击穿有什么区别”,十个人里有六七个会卡壳。这不是背题的问题,而是很多人刷“Redis缓存面试题50道…

阅读更多 →
exFAT文件系统深度解析:从磁盘布局到Linux挂载与数据恢复 2026/10/1 3:26:15

exFAT文件系统深度解析:从磁盘布局到Linux挂载与数据恢复

SDXC 卡和 32GB 以上 U 盘,出厂几乎都被 exFAT 承包了。说起 exFAT,很多人脑子里的印象就是“能放 4GB 以上的单文件”,但真到了实际用的时候,Linux 上遇到modprobe: fatal: module exfat not found,或者想搞清楚为什么…

阅读更多 →
从Nginx+PHP-FPM到FrankenPHP:PHP常驻内存部署实践 2026/10/1 3:26:08

从Nginx+PHP-FPM到FrankenPHP:PHP常驻内存部署实践

做了十多年 PHP,我的部署栈很长时间都是 Nginx PHP-FPM。不是说这套组合不好,而是它把一件本该简单的事拆得特别碎:进程管理、Unix socket 权限、HTTPS 证书续期、cgi 参数、gzip,每个环节都要单独维护。更难受的是框架项目每次请…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉