新闻详情

新闻详情

首页 / 资讯中心 / 详情

RAG 分块策略实测:固定滑窗、段落感知怎么选,80 行 Python 附自检

发布时间:2026/11/16 4:04:36来源:尧图网络
RAG 分块策略实测:固定滑窗、段落感知怎么选,80 行 Python 附自检
RAG 分块策略实测固定滑窗、段落感知怎么选80 行 Python 附自检之前写过最小 ReAct Agent和Transformer/解码系列里面的检索都是假占位——这篇把真东西补上RAG 的第一环分块。收藏榜上 RAG 进阶帖和向量数据库帖都在收收藏但进阶帖讲的是父子分块/层级索引那些大设计基础分块写对的人反而不多。本篇只做两件事三种策略的代码和一个能抓住丢字事故的自检。结论先放这儿策略怎么切优点缺点固定滑窗按长度 重叠保证不超长实现最简语义经常被腰斩段落感知段落聚合段内按句拆边界贴语义实现多几行硬切兜底超长单句直接切保证不超长语义最差只做最后手段两句话铁律分隔符优先级从大到小段落 句子 硬切分块代码必须有覆盖率自检。一、为什么分块是 RAG 第一坑块太大向量语义被稀释检索不精准块太小上下文残缺检到了也答不对。多数人死在第三种事故上分块代码把字符弄丢了——丢的往往是一句话的开头或结尾检索照常出结果答案悄悄变差不报错很难查。所以本篇的自检核心就一条分块结果拼回去必须还原原文。二、完整代码单文件直接跑# chunking.py — 固定滑窗 vs 段落感知分块 # 依赖无纯标准库 import re def fixed_chunks(text, size200, overlap20): 固定长度 重叠滑窗 if overlap size: raise ValueError(overlap 必须小于 size否则 step0 死循环) step size - overlap return [text[i:i size] for i in range(0, len(text), step)] or [] def split_long(text, max_size): 单段超长按句拆保留标点塞不下的单句硬切兜底 chunks, buf [], for s in re.split(r(?[。]), text): if not s: continue if len(buf) len(s) max_size: buf s else: if buf: chunks.append(buf) while len(s) max_size: # 单句超长硬切 chunks.append(s[:max_size]) s s[max_size:] buf s if buf: chunks.append(buf) return chunks def paragraph_chunks(text, max_size200): 段落感知\n\n 聚合段内按句拆相邻小块合并 chunks [] for para in text.split(\n\n): para para.strip() if not para: continue for c in split_long(para, max_size): if chunks and len(chunks[-1]) len(c) 2 max_size: chunks[-1] \n\n c # 相邻小块合并减少碎块 else: chunks.append(c) return chunks if __name__ __main__: text \n\n.join( f第{i}段。 这是测试内容 * (30 if i % 3 0 else 5) for i in range(20) ) 超长无标点句子 * 100 # 触发硬切兜底 # 1) 固定滑窗去重叠后拼回应原文丢字/重字当场报 fc fixed_chunks(text, size200, overlap20) rebuilt fc[0] .join(c[20:] for c in fc[1:]) assert rebuilt text, 滑窗分块丢字或重字 assert all(len(c) 200 for c in fc) # 2) 段落感知无丢字 不超长 sc paragraph_chunks(text, max_size200) assert .join(sc).replace(\n\n, ) text.replace(\n\n, ), 段落分块丢字 assert all(len(c) 200 for c in sc) print(f固定滑窗: {len(fc)} 块 段落感知: {len(sc)} 块 self-check ok)两条 assert 各管一类事故滑窗的覆盖率检查抓重叠偏移算错最容易写错的地方段落的无丢字检查抓分隔符切丢内容。块数差异也能看出来段落感知的块更少更整齐。三、三个踩坑都见过真实事故token ≠ 字符中文 1 字对应 1~3 tokenchunk_size按字符数设 200实际 token 可能是 400向量库的 token 上限直接报错。预算按 token 算字符数只是代理overlap ≥ size 死循环step size - overlap ≤ 0range 一步不走直接卡死。代码里 raise 掉别信调用方表格/代码块被腰斩Markdown 表格按行切后每块都是没头的几列检索命中了也没法用。结构化内容先按块整体提取再分块别让通用切分器碰它四、下一步检索块和上下文块拆开本篇三策略有个共同假设检索用什么块就返回什么块。进阶玩法是把两个职责拆开——子块做检索锚点短、准命中后沿映射返回父块完整上下文即父子分块/放大检索。这个需要稳定的 parent_id 映射映射不稳会出现“命中 A 返回 B”的事故值得单开一篇。总结铁律压成三句分隔符优先级从大到小硬切只做兜底块大小按 token 预算算字符数只是代理分块代码必须有覆盖率自检丢字是最隐蔽的 RAG 事故
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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