当前位置: 首页 > news >正文

向量模型分词与截断机制详解:从文本到向量的完整旅程

向量模型分词与截断机制详解:从文本到向量的完整旅程

一句话总结:文本进入模型前,先经分词器切成 token,再按窗口大小截断,最后编码为固定维度向量。顺序不可颠倒,截断默认"保前弃后"。


一、核心流程:三步走

你的输入文本 ↓ 【Step 1】分词器(Tokenizer)切分 → 变成 token 序列(如 1000 个 token) ↓ 【Step 2】窗口截断(Truncation) → 超过 512?保前弃后,截成 512 个 ↓ 【Step 3】模型编码(Encoding) → 通过 Pooling 压成固定维度向量(如 768 维)

关键认知:分词 → 截断 → 编码,这个顺序不可颠倒


二、Step 1:分词器——谁来切、怎么切

2.1 分词器是谁?

分词器是模型配套的工具,不是模型本身,也不是人工干预。它通常以vocab.txttokenizer.json文件形式存在,内含几万个预定义的 token。

2.2 分词规则从哪来?

来源说明
预训练语料统计高频组合优先成词(如"中国"比"中"+"国"更常一起出现)
词典文件训练前就定好的 token 列表
算法类型WordPiece、BPE、SentencePiece 等策略不同

2.3 同一句话,不同分词器结果不同

输入BERT-wwmGPT BPE中文优化模型
“中国我爱你”['中国', '我', '爱', '你'](4个)['中', '国', '我', '爱', '你'](5个)可能['中国我爱你'](1个)

结论:分词器是"独裁者",怎么切它说了算。


三、Step 2:窗口截断——超长的怎么处理

3.1 为什么需要截断?

Transformer 模型的注意力机制计算复杂度是O(n²),token 越多越慢。因此模型在训练时就设定了最大处理长度(窗口大小)。

3.2 常见窗口大小

模型窗口(token 数)约等于汉字数
BERT-base512~300-400 字
GPT-3.54096~2000-3000 字
GPT-4128K~6-8 万字

3.3 截断策略:默认"保前弃后"

原始文本(1000 token): [token_1][token_2]...[token_512][token_513]...[token_1000] ↓ 截断线 送入模型(512 token): [token_1][token_2]...[token_512] ← 后面 488 个直接消失
策略做法适用场景
前截断(默认)保留前 N 个,后面全扔开头有主题句、关键词
后截断保留后 N 个,前面全扔结尾有结论
两头截断前后各留一点,中间扔掉特殊需求

重要:模型不会报错,静默丢弃,对后半截内容毫无感知。


四、Step 3:编码——为什么维度固定

4.1 从变长到定长

文本长度千变万化,但下游任务(相似度计算、聚类、检索)需要定长输入

模型通过Pooling(池化)完成转换:

输入文本 → Tokenizer 分词 → Transformer 编码 → Pooling 池化 → 固定维度向量 3字 3个token 3×768矩阵 取平均/取CLS 1×768向量 5字 4个token 4×768矩阵 取平均/取CLS 1×768向量 1000字 被截断到512token 512×768矩阵 取平均/取CLS 1×768向量

4.2 常见池化策略

  • Mean Pooling:对所有 token 向量取算术平均
  • CLS Pooling:取特殊标记[CLS]对应的向量(BERT 系列)
  • Last Token Pooling:取最后一个 token 的向量(GPT 系列)

无论中间有多少 token,最终都是 1 × hidden_size。


五、常见误区澄清

误区真相
“字数越多,向量维度越高”❌ 维度由模型架构固定,与输入长度无关
“不超过窗口大小就不会被分词”❌ 分词是必做步骤,永远发生
“先截断再分词”❌ 必须先分词才能知道超没超窗
“长文本信息量更大,所以向量更丰富”❌ 超窗部分被丢弃,信息反而丢失
“中文一个字对应向量一维”❌ 模型处理的是 token,且经过高维非线性变换

六、工程实践建议

6.1 中文场景选模型

需求推荐模型
通用中文语义bge-large-zh-v1.5gte-large-zh
短文本匹配piccolo-base-zh
不要用原版 BERT(对中文分词弱、语义差)

6.2 长文本处理策略

RAG 报警知识库为例:

报警记录 A:"传送带电机过载,温度异常升高..."(超长) ↓ 方案1:Chunking 分块 → 切成多段 < 512 token,分别编码 方案2:摘要优先 → 先 LLM 提取关键信息,再编码 方案3:关键信息前置 → 写记录时,结论放开头,细节放后面

6.3 生产环境注意事项

  • 锁定模型版本:换模型 = 换分词器 = 向量空间变化,需重新建库
  • 监控 token 数:预估文本长度,避免关键信息被截断
  • 测试截断影响:对比完整文本 vs 截断后的向量相似度差异

七、总结

问题答案
分词是谁做的?分词器(Tokenizer),模型配套工具
分词规则谁定?预训练时的语料统计和词典文件
超窗会怎样?默认保前弃后,后面 token 直接丢弃
为什么维度固定?Pooling 机制将变长 token 序列压缩为定长向量
正确顺序是?分词 → 截断 → 编码,不可颠倒

延伸阅读:如果你正在构建 RAG 系统,下一步可以深入了解文本分块(Chunking)策略(按句子、按语义、按固定 token 数)以及向量量化(如何把 768 维浮点向量压缩为更低维表示,节省 90% 存储空间)。

http://www.jsqmd.com/news/755668/

相关文章:

  • LoRA-Torch:权重合并范式实现通用高效的大模型微调
  • 为什么说Godot-MCP正在彻底改变游戏开发的工作方式?
  • STM32F103C8T6小车蓝牙遥控避坑指南:HC-05模块AT指令配置与串口中断实战
  • 深度解析YoRadio:ESP32音频流媒体系统的架构设计与实现机制
  • 自优化视频采样技术提升物理真实感
  • 别再只调SystemInit了!STM32从Stop模式唤醒后时钟配置全解析(HSE恢复72MHz)
  • 推理服务为什么一开超时熔断就开始误杀长输出:从 Token Budget 到 Partial Result Commit 的工程实战
  • 从‘错题本’到OHEM:聊聊目标检测中困难样本挖掘的演进与最佳实践
  • 远程固件级调试不再难,.NET 9边缘调试全链路打通,从ARM Cortex-M到Linux容器一文吃透
  • Shimmy:一键部署本地OpenAI兼容服务器,无缝接入GGUF模型
  • 3步掌握B站视频下载:downkyi高效下载工具全攻略
  • 深入浅出 MCP (Model Context Protocol): 开启 AI Agent 的标准化连接时代
  • Debian 12虚拟机安装避坑指南:从DVD离线安装到配置清华源,保姆级全流程
  • NVIDIA Nemotron Nano V2 VL视觉语言模型解析与应用
  • 效率提升秘籍:用快马AI自动生成黑马点评项目通用工具类与模块
  • vscode的tunnel链接(Linux 服务器 + Windows 本地电脑版本)
  • 新手入门:通过快马ai生成第一个winutil工具理解gui与系统交互
  • 处理动态加载票务数据的PHP技巧
  • 城市可信数据空间实施路径报告
  • 初创公司如何借助 Taotoken 低成本试用多个主流大模型
  • 2026年4月景洪市中心西双版纳住宿评价,西双版纳住宿/西双版纳酒店/西双版纳民宿,西双版纳住宿攻略 - 品牌推荐师
  • 从仿真失败到波形正确:手把手调试Vivado RAM IP核的读写时序(附Testbench模板)
  • translate-shell:聚合多源翻译的命令行工具链设计与实战
  • 开源RPA工具openclaw-office:办公自动化实战与架构解析
  • 【.NET 9低代码调试终极指南】:20年微软MVP亲授3大零配置断点技巧,97%开发者尚未掌握
  • 重磅实战!GPT5.5+Codex深度评测:三个真实项目验证AI编程新范式
  • MousePal:开源Windows鼠标管理工具,实现场景化精准控制
  • 《事件关系阴阳博弈动力学:识势应势之道》第七篇:社会与情感关系——连接、表达与共鸣
  • 嵌入式Linux触摸驱动避坑指南:以FT5X06为例,详解I2C通信、中断与坐标校准
  • ComfyUI-Impact-Pack:解锁AI图像增强的终极工具箱