惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
Engineering at Meta
Engineering at Meta
腾讯CDC
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
博客园 - 三生石上(FineUI控件)
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
D
Darknet – Hacking Tools, Hacker News & Cyber Security
WordPress大学
WordPress大学
博客园_首页
I
InfoQ
NISL@THU
NISL@THU
Recorded Future
Recorded Future
Security Latest
Security Latest
K
Kaspersky official blog
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
U
Unit 42
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
W
WeLiveSecurity
Webroot Blog
Webroot Blog
Last Week in AI
Last Week in AI
AWS News Blog
AWS News Blog
IT之家
IT之家
S
Schneier on Security
雷峰网
雷峰网
Know Your Adversary
Know Your Adversary
T
Threat Research - Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
LangChain Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
有赞技术团队
有赞技术团队
云风的 BLOG
云风的 BLOG
G
GRAHAM CLULEY
O
OpenAI News
The Last Watchdog
The Last Watchdog
TaoSecurity Blog
TaoSecurity Blog
The GitHub Blog
The GitHub Blog
V
Vulnerabilities – Threatpost

博客园 - 若-飞

企业AI Agent落地的核心逻辑与路径 基于langchain,Function Call的成功率怎么解决? LangChain Checkpoint(检查点)是什么?—— Agent 的"存档机制" AI 客服系统设计:RAG 知识库设计 Go 百万连接服务器设计:从网卡到业务的全链路解析 深度解析 sync.Pool:从设计哲学到生产实践 Goroutine 泄漏:原因、检测与防范 Go Channel 关闭与超时机制完全指南 Go Map 无限增长问题解决方案 LangChain 聊天记录压缩:原理、机制与实战 揭开 sklearn 文本分类的核心原理:从词袋到逻辑回归 大模型“胡说八道”怎么办?一张图读懂检测、评估与修复全方案 企业级AI知识库权限隔离设计:让AI“懂规矩”比“懂知识”更重要 RAG系统设计全解析:从架构到多模态的核心知识图谱 RAG召回率提升全攻略:7大核心方法让检索更精准 RAG召回率提升秘籍:Metadata过滤的底层原理与实践 构建更好的RAG系统:深入理解混合搜索 一文搞懂 RAG 中 Retriever 和 Reranker 的区别 一文搞懂 RAG 的召回率(Recall)是什么? LangChain / LangGraph、MCP、Harness Engineer 与 Claude Code 的对应关系 Agent Harness 技术笔记:从 Trajectory 到 Function Calling Loop BLEU 是什么?——从原理到工程实践 一文讲清:Approve / Permit / Permit2 的本质区别 分库分表后跨分页查询的完整方案 ai如何处理私有数据 ai幻觉是啥,以及如何解决 别再让大模型“凭空瞎猜”了!带你认识AI最强外挂:ChromaDB 用 useQuery 管请求:TanStack React Query 入门小结 HD钱包--BIP44 TRON 四种 API 面怎么选:从节点协议到 JSON-RPC 再到 TronGrid 以太坊节点存储与共识机制全解析 BSC节点发现协议全解析:UDP发现、Bootnode引导与Gossip交易广播 以太坊节点发现背后的分布式哈希表(DHT)与 Kademlia 原理解析 Solidity中的bytes与string:深入理解这两种特殊的动态数组 智能合约自毁:当资产还在,合约死了 —— 深度解析 selfdestruct 导致的资产锁定风险 TDengine CLI (taos) 使用指南 —— Docker 本地开发实战 在 macOS 上用 DBeaver 连接 TDengine:踩坑总结与最终配置指南 Solidity Storage Slot 深度解析 Geth Snapshot Export/Import 深度解析: 不是备份工具,而是数据分析利器 基于BSC 公链的数据备份与 Snapshot 机制深度解析 Docker 共享内存完全指南:从原理到实践,避免常见的理解误区 Docker容器"僵尸状态"问题排查与自动重启方案 SSE协议深度解析:被低估的HTTP服务器推送标准 TDengine vs MySQL:时序数据处理的时代之选 Proxmox 启用 QEMU Guest Agent 实战指南 解决 Blockscout "batch too large" 错误的完整指南 一文讲清楚什么是基准测试(Benchmark) Rust中的宏(Macro):编译时的代码生成魔法 Docker优雅关闭的艺术:为什么stop_grace_period能防止数据丢失 为什么 Go 没有依赖注入和 Bean 机制?语言设计哲学对比
RAG 设计:Embedding 如何切分
若-飞 · 2026-07-13 · via 博客园 - 若-飞

RAG 设计(二):Embedding 如何切分(Chunk)—— 一套适用于所有 AI 系统的设计方案

很多人在做 RAG 时,第一个想到的问题就是:

Chunk 应该切多大?

网上最常见的答案是:

每 500 Token 切一次。

实际上,这是一个误区。

Chunk 的本质不是按 Token 长度切,而是按"语义单元(Semantic Unit)"切。

不同类型的数据,天然具有不同的语义结构,因此 Chunk 策略应该由数据类型决定,而不是统一的 Token 数量。

本文总结一套适用于 AI 客服、AI 办公、企业知识库、AI Agent、代码助手、法律、医疗 等几乎所有 AI 系统的 Chunk 设计方案。


一、为什么需要 Chunk?

LLM 并不会直接搜索整个知识库。

RAG 的流程如下:

Document
    │
    ▼
Chunk(切片)
    │
    ▼
Embedding
    │
    ▼
Vector Database
    │
    ▼
Retriever
    │
    ▼
TopK Chunk
    │
    ▼
LLM

真正参与向量检索的不是 Document,而是 Chunk

因此:

Chunk 的质量,直接决定了 Retriever 的召回率。


二、Chunk 的核心原则

很多人理解 Chunk:

1000 Token

↓

500 Token

↓

500 Token

实际上,这是最简单,也是效果最差的方法。

真正应该遵循的是:

一个 Chunk = 一个完整语义。

例如:

一本产品说明书:

产品说明

第一章 电池

第二章 屏幕

第三章 摄像头

第四章 保修

正确切法:

Chunk1

电池

......

-------------

Chunk2

屏幕

......

-------------

Chunk3

摄像头

......

而不是:

Chunk1

电池

......

屏幕前半部分

-------------

Chunk2

屏幕后半部分

摄像头前半部分

这样语义已经被破坏。


三、Chunk 的设计原则

生产环境通常遵循四个原则。

原则一:语义完整

一个 Chunk 只能表达一个主题。

例如:

退款多久到账?

退款一般1~3天到账。

就是一个 Chunk。

不要切成:

退款多久到账?

------------

退款一般

1~3天到账

原则二:不要跨主题

错误:

退款

......

物流

......

一个 Chunk 两个主题。

正确:

Chunk1

退款

......

Chunk2

物流

......

原则三:上下文完整

例如:

安装步骤

第一步

第二步

第三步

不要:

Chunk1

第一步

------------

Chunk2

第二步

应该:

Chunk

安装步骤

第一步

第二步

第三步

保持完整上下文。


原则四:Chunk 不宜过大

Chunk 太大会导致:

  • 检索噪声增加

  • Token 浪费

  • 命中率下降

Chunk 太小又容易:

  • 丢失上下文

  • 语义不完整

因此:

语义完整 > Token 数量。


四、不同数据采用不同 Chunk 策略

1)FAQ(客服、知识问答)

数据特点:

Question

Answer

Chunk:

退款多久到账?

退款一般1~3天到账。

一个 FAQ = 一个 Chunk。

推荐:

100~300 Token。


2)Markdown 文档

例如:

# 用户管理

## 创建用户

......

## 删除用户

......

Chunk:

按照标题切。

Chunk1

创建用户

......

Chunk2

删除用户

......

不要固定长度。


3)PDF

PDF 通常都有目录。

例如:

第一章

第二章

第三章

建议:

按照:

一级标题

↓

二级标题

↓

正文

切。

如果正文过长,再继续拆。

推荐:

300~600 Token。


4)产品说明书

例如:

电池

屏幕

摄像头

尺寸

切法:

Chunk1

电池

......

Chunk2

屏幕

......

Chunk3

摄像头

每个功能一个 Chunk。


5)法律法规

例如:

第一章

第二章

第三章

建议:

章节切。

如果:

第一章

3000 Token

再按:

第一节

第二节

第三节

继续切。

不要切断法律条款。


6)代码仓库(Code RAG)

例如:

type User struct{}

func CreateUser(){}

func DeleteUser(){}

Chunk:

按照:

一个类

一个接口

一个函数

切。

不要:

一个函数切一半

推荐:

AST(抽象语法树)切分,而不是按行数切分。


7)SQL 文档

例如:

CREATE TABLE

INSERT

UPDATE

每条 SQL 一个 Chunk。


8)API 文档

例如:

POST /login

GET /user

DELETE /user

每个 API 一个 Chunk。

不要整个 OpenAPI 一起 Embedding。


9)会议纪要

例如:

议题一

......

议题二

......

议题三

每个议题一个 Chunk。


五、Chunk Size 推荐

数据类型 推荐 Chunk
FAQ 一问一答
Markdown 一级标题 / 二级标题
PDF 300~600 Token
产品说明书 一个功能模块
API 文档 一个接口
SQL 一条 SQL
法律法规 一章 / 一节
代码 一个函数 / 一个类
会议纪要 一个议题
博客 一个章节

可以看到:

没有任何一种数据是统一按 500 Token 切。


六、什么时候需要 Overlap?

Overlap(重叠切片)主要用于上下文连续的长文档。

例如:

Chunk1

......

最后100 Token

------------

Chunk2

前100 Token

......

这样可以减少:

上一句在 Chunk1,下一句在 Chunk2。

导致语义断裂。

建议:

类型 Overlap
FAQ 不需要
API 不需要
SQL 不需要
产品说明 50~100 Token
PDF 100 Token
法律 100~200 Token
博客 100 Token

原则:

只有连续阅读的文档才需要 Overlap。


七、Embedding 内容如何组织?

很多人直接:

Embedding

↓

正文

实际上建议:

标题

+

摘要

+

关键词

+

正文

例如:

标题:

退款多久到账?

关键词:

退款

到账

正文:

退款一般1~3个工作日到账。

最终 Embedding:

退款多久到账?

退款

到账

退款一般1~3个工作日到账。

这样召回效果明显优于:

退款一般1~3个工作日到账。

八、一套通用的 Chunk Pipeline

生产环境推荐统一采用如下 Pipeline:

Document
        │
        ▼
Document Loader
        │
        ▼
Document Parser
        │
        ▼
Document Structure Analysis
(识别标题、章节、函数、API)
        │
        ▼
Semantic Chunk
(按语义切片)
        │
        ▼
Metadata Enrichment
(补充来源、分类、版本等)
        │
        ▼
Embedding
        │
        ▼
Vector Database

其中最关键的一步不是 Embedding,而是:

Semantic Chunk(语义切片)

只有语义切得正确,Embedding 才真正有价值。


九、总结

Chunk 的目标不是"切得均匀",而是"切得有意义"。

企业级 RAG 设计应遵循以下原则:

原则 说明
按语义切,不按 Token 切 一个 Chunk 表达一个完整主题
保持上下文完整 不切断步骤、函数、条款、章节
不跨主题 一个 Chunk 不混合多个知识点
根据数据类型设计 Chunk FAQ、PDF、代码、API、法律采用不同策略
长文档适当 Overlap 保持连续语义,减少边界信息丢失
Embedding 不只是正文 建议包含标题、关键词、摘要、正文
Metadata 与 Chunk 配合 为检索提供过滤条件,提高召回准确率

一句话总结:Embedding 模型决定了"如何理解文本",而 Chunk 策略决定了"给模型理解什么文本"。在企业级 RAG 中,Chunk 的设计往往比更换 Embedding 模型带来的收益更大,也是决定整个 AI 系统知识检索质量的关键。