RAG技术终极指南:企业级文档问答系统构建秘籍,Meta Chunking切分详解,收藏这一篇就够!

RAG中的Chunking实战:语义单元封装与15种工程化切分技术 在检索增强生成(RAG)系统中,chunking并非简单的文本分段,而是面向语义完整性、上下文锚定与检索友好性的关键预处理环节。其核心原理在于将原始文档转化为具备命题结构、可追溯元信息和向量表征鲁棒性的语义单元。技术价值体现在显著提升recall@5与QA准确率,避免因切分失当导致的关键条件断裂、术语割裂或逻辑链丢失。典型应用场景覆盖法律条款解析、技术文档问答、医疗指南检索及多模态手册理解等。本文聚焦RAG落地中最易被低估却影响最大的chunking工程实践,系统梳理15种可组合、可嵌套的切分策略,并深度结 阅读详情

1 概述

由中国人民大学和上海算法创新研究院在2024年10月份提出了一种新的文本切分方法,以提升切分效果,从而改善RAG的效果。

论文中提出了Meta Chunking的概念,它指的是句子和段落之间的颗粒度,我的理解是一种文本块。

文章基于Meta Chunking的概念,一种提出了两种方法:

  • Perplexity Chunking
  • Margin Sampling Chunking

下图左侧是Margin Sampling Chunking,右图是Perplexity Chunking。

只使用a方法无法维持句子完整性和逻辑完整性。使用a+b无法维持逻辑完整性。

感兴趣的朋友可以自行阅读论文,下面我将用尽可能通俗易懂的语言介绍这两种方法的核心原理:

  • Perplexity Chunking:这种方法会对每个句子计算一个困惑度(Perplexity),不熟悉这个概念的朋友,可以把它理解成,在一个句子中,平均而言每次拿上一个词来预测下一个词的难度,然后依次滚动预测,比如拿“中国”预测“的”,拿“中国的”预测“首都”……当前已经滚动到“中国的首都是”,需要预测“北京”,那它的难度就很小,把这样滚动预测的难度求平均,就是困惑度。这种方法的核心思想是,寻找那些能显著降低困惑度的句子(也就是论文或者代码中要找的minimal),那这些句子后面就应该是切分点(具体其实有两种情况,大家可以看论文后者看本文第3部分的代码注释)。这个其实也比较直观易懂,因为同一个语义的片段,随着片段的不断增加,预测难度是会不断降低的。就好比有一个段落讲解大语言模型的技术原理,在比较靠前的地方会把基本的术语之类的都介绍完,到后面只是具体的展开,LLM在相对熟悉的上下文环境中,相对容易预测,Perplexity就会随着句子的增加而呈降低的趋势,但到了下一段开始介绍大语言模型在行业的应用时,完全切换到另一个话题了,LLM也无法提前感知会切换成什么话题,因此预测难度大增,加入下一个话题的第一个句子后,Perplexity就会上升,由此就能找到最佳的切分点。这种方法,是论文主推的方法,号称是在性能和效果之间找到了很好的平衡。
  • Margin Sampling Chunking:这种方法比较直接粗暴,核心思想是,维护一个buffer,里面有一系列句子,每次拿这个buffer和下一个句子合并起来,问LLM合并的句子是不是要切分,只有在不切分的概率减去要切分的概率大于特定阈值时,才会进行切分,然后把buffer清除,采用滑动窗口的方式考虑后面的句子。换言之就是让LLM来看到底在什么地方切分,只不过不是一股脑把整篇文档送入LLM,而是用比较巧妙的方法采用滑动窗口的方式一点点送给LLM,这样一是不会让LLM上下文超长,二是还可以根据设定长度和切分情况来决定是不是需要合并,以组成符合切分长度要求的片段。值得注意的是,arxiv上的论文有2个版本,这种方法在最新的第2版中介绍非常少,摘要中没有出现,在核心方法章节也没有提到,甚至在实验设置部分都被分到Baseline组,实验结果也是绝大多数测试集都是Perplexity Chunking更优,而在第1版中,在摘要、核心方法章节中都会介绍Margin Sampling Chuning,实验部分也是和Perplexity Chunking互有胜负。论文给的示例代码中使用的LLM是Qwen2-1.5B-Instruct,我们也同样使用这个模型,这种方法在我们的系列文章实验中,是目前切分效果最好的,但由于我的显卡显存(只有11G)不足,只能用CPU(Intel i7 9700K),单次运行大约2.5小时。

2 效果

本文对PyPDFLoader解析成文本后直接拼接、MinerU转换为Markdown两种方式,对Meta Chunking中提到的PPL Chunking和Margin Sampling Chunking两种方法都进行了对比实现,结果如下表:

值得一提的是,从结果看,Margin Sampling Chuning这种方式的优势非常明显,无论是PDF解析后简单拼接,还是转成Markdown后,反倒是论文所提的主要方法Perplexity Chunking效果一般。其中转换为Markdown后的文档,使用这种Margin Sampling Chuning解析的文档,配合未经微调的bge-large-zh-v1.5,甚至超过了对使用检索优化(4)BM25和混合检索中经过微调的Embedding和BM25的混合检索。

3 核心算法

本文对应代码已开源,地址在:https://github.com/Steven-Luo/MasteringRAG/blob/main/split/04_meta_chunking.ipynb

核心算法都来自Meta Chunking,具体代码可以阅读https://github.com/IAAR-Shanghai/Meta-Chunking/tree/main/example

其中Margin Sampling Chunking方法的核心在app.py中,下面把一些不太好理解的部分加以注释:

def
 
meta_chunking
(original_text,base_model,language,ppl_threshold,chunk_length):

chunk_length=
int
(chunk_length)

if
 base_model==
'PPL Chunking'
:

        final_chunks=extract_by_html2text_db_nolist(original_text,small_model,small_tokenizer,ppl_threshold,language=language)

else
:

      full_segments = split_text_by_punctuation(original_text,language)

# tmp就是在概述部分说到的那个buffer

      tmp=
''

# 这个是阈值,在论文中,这个阈值初始为0,后续会根据预测概率的margin(就是切分与不切分的差)的历史均值来求平均

      threshold=
0

      threshold_list=[]

      final_chunks=[]

for
 sentence 
in
 full_segments:

if
 tmp==
''
:

              tmp+=sentence

else
:

# 获取切分与不切分的概率差

              prob_subtract=get_prob_subtract(small_model,small_tokenizer,tmp,sentence,language)    

              threshold_list.append(prob_subtract)

if
 prob_subtract>threshold:

                  tmp+=
' '
+sentence

else
:

                  final_chunks.append(tmp)

                  tmp=sentence

if
 
len
(threshold_list)>=
5
:

              last_ten = threshold_list[-
5
:]  

              avg = 
sum
(last_ten) / 
len
(last_ten)

              threshold=avg

if
 tmp!=
''
:

          final_chunks.append(tmp)

      ...

def
 
get_prob_subtract
(model,tokenizer,sentence1,sentence2,language):

if
 language==
'zh'
:

        query=
'''这是一个文本分块任务.你是一位文本分析专家,请根据提供的句子的逻辑结构和语义内容,从下面两种方案中选择一种分块方式:

        1. 将“
{}
”分割成“
{}
”与“
{}
”两部分;

        2. 将“
{}
”不进行分割,保持原形式;

        请回答1或2。'''
.format(sentence1+sentence2,sentence1,sentence2,sentence1+sentence2)

        prompt=
"<|im_start|>system
\n
You are a helpful assistant.<|im_end|>
\n
<|im_start|>user
\n
{}
<|im_end|>
\n
<|im_start|>assistant
\n
"
.format(query)

        prompt_ids = tokenizer.encode(prompt, return_tensors=
'pt'
).to(model.device)

        input_ids=prompt_ids

# 因为Prompt中要求LLM只返回1或2,因此此处只获取这两种输出的tokenized后的结果

        output_ids = tokenizer.encode([
'1'
,
'2'
], return_tensors=
'pt'
).to(model.device)

with
 torch.no_grad():

            outputs = model(input_ids)

            next_token_logits = outputs.logits[:, -
1
, :]

            token_probs = F.softmax(next_token_logits, dim=-
1
)

        next_token_id_0 = output_ids[:, 
0
].unsqueeze(
0
)

# 分别获取到输出1、2的概率

        next_token_prob_0 = token_probs[:, next_token_id_0].item() 
# 1的概略

        next_token_id_1 = output_ids[:, 
1
].unsqueeze(
0
)

        next_token_prob_1 = token_probs[:, next_token_id_1].item() 
# 2的概率

        prob_subtract=next_token_prob_1-next_token_prob_0 
# 不分割的概率 - 分割的概率

else
:

        ...

return
 prob_subtract

Perplexity Chunking方法,在chunk_rag.py中

def
 
extract_by_html2text_db_nolist
(sub_text,model,tokenizer,threshold,language=
'zh'
) -> List[
str
]:  

    ...

# segments是之前按照一些规则切分的句子组成的列表

for
 context 
in
 segments:

        tokenized_text = tokenizer(context, return_tensors=
"pt"
, add_special_tokens=
False
)

        input_id = tokenized_text[
"input_ids"
].to(model.device)

        input_ids = torch.cat([input_ids, input_id],dim=-
1
)

        len_sentences.append(input_id.shape[
1
])

        attention_mask_tmp = tokenized_text[
"attention_mask"
].to(model.device)

        attention_mask = torch.cat([attention_mask, attention_mask_tmp],dim=-
1
)

# 上面虽然对每个句子做了拼接,但最后还是相当于计算了整篇文档的loss

    loss, past_key_values = ch.get_ppl_batch( 

        input_ids,

        attention_mask,

        past_key_values=
None
,

        return_kv=
True

    )

    first_cluster_ppl=[]

    index=
0

# 分别获取从文档开篇,一直到当前句子做上下文,当前句子的平均loss,也就是每个句子的平均loss,只不过不是单独算的,而是要把之前的当做上下文

for
 i 
in
 
range
(
len
(len_sentences)):

if
 i ==
0
:

            first_cluster_ppl.append(loss[
0
:len_sentences[i]-
1
].mean().item())

            index+=len_sentences[i]-
1

else
:

            first_cluster_ppl.append(loss[index:index+len_sentences[i]].mean().item())

# print(loss[index:index+len_sentences[i]])

            index+=len_sentences[i]

# 找到PPL最小的切分点

    minima_indices=find_minima(first_cluster_ppl,threshold)

    first_chunk_indices=[]

    first_chunk_sentences=[]

# split_points注意,这个里面存储的是句子的索引

    split_points = [
0
] + minima_indices + [
len
(first_cluster_ppl)-
1
]    

for
 i 
in
 
range
(
len
(split_points)-
1
):

        tmp_index=[]

        tmp_sentence=[]

if
 i==
0
:

            tmp_index.append(
0
)

            tmp_sentence.append(segments[
0
])

for
 sp_index 
in
 
range
(split_points[i]+
1
,split_points[i+
1
]+
1
):

            tmp_index.append(sp_index)

# 把相邻切分点中的所有句子,都放到tmp_sentence中

            tmp_sentence.append(segments[sp_index])

        first_chunk_indices.append(tmp_index)

# 把相邻两个索引之间的句子放到句子列表中,first_chunk_sentences是一个二维数组

        first_chunk_sentences.append(tmp_sentence)

    final_chunks=[]

for
 sent_list 
in
 first_chunk_sentences:

        final_chunks.append(
''
.join(sent_list))

return
 final_chunks

def
 
find_minima
(values,threshold):  

    minima_indices = []  

for
 i 
in
 
range
(
1
, 
len
(values) - 
1
):  

# 当前句子的PPL值,比前、后的都小

if
 values[i] < values[i - 
1
] 
and
 values[i] < values[i + 
1
]:

# 比前、后多出来的部分都超过阈值

if
 (values[i - 
1
]-values[i]>=threshold) 
or
 (values[i + 
1
]-values[i]>=threshold):

                minima_indices.append(i)  

# 当前句子的PPL值,比之前的小,并跟之前的一样大

elif
 values[i] < values[i - 
1
] 
and
 values[i] == values[i + 
1
]:

# 之前部分的PPL减当前句子的PPL超过阈值

if
 values[i - 
1
]-values[i]>=threshold:

                minima_indices.append(i) 

return
 minima_indices
往期文章

Agent系列文章

Langchain中使用Ollama提供的Qwen大模型进行Function Call实现天气查询、网络搜索

Langchain中使用千问官方API进行Function Call实现天气查询、网络搜索

使用Ollama提供的Llama3 8B搭建自己的斯坦福多智能体AI小镇

使用Ollama提供的Qwen2 7B搭建自己的中文版斯坦福多智能体AI小镇

RAG系列文章

数据准备
使用RAG技术构建企业级文档问答系统之QA抽取

Baseline
使用RAG技术构建企业级文档问答系统之基础流程

评估

使用TruLens进行评估

使用GPT4进行评估
解析优化

解析(1)使用MinerU将PDF转换为Markdown

切分优化
切分(1)Markdown文档切分

切分(2)使用Embedding进行语义切分

切分(3)使用Jina API进行语义切分

检索优化

检索优化(1)Embedding微调

检索优化(2)Multi Query

检索优化(3)RAG Fusion

检索优化(4)BM25和混合检索

检索优化(5) 常用Rerank对比

检索优化(6) Rerank模型微调

检索优化(7)HyDE

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

从零手写RAG:Chunking、Embedding与检索架构的工程实践 RAG(检索增强生成)是一种将信息检索与大语言模型生成解耦的混合架构,其核心原理在于通过语义向量空间对齐实现精准上下文注入。技术价值体现在降低幻觉、提升事实一致性与领域适配性,广泛应用于企业知识库、技术文档问答和客服系统等需强可信度的场景。实践中,chunking策略决定语义完整性,embedding模型选择影响跨术语召回能力,而索引与检索协同设计则关乎性能与精度平衡。本文聚焦‘从零手写’过程中的关键决策点,涵盖结构化文本切分、领域感知向量编码及元数据增强检索等真实工程细节。 阅读详情

相关推荐

STM32C8T6实战:用PID算法搞定超级电容的10W无线恒功率充电(附代码避坑)

本文详细介绍了如何使用STM32C8T6和PID算法实现超级电容的10W无线恒功率充电。通过优化硬件设计、动态调整PID参数以及三重滤波技术,解决了超级电容充电过程中的功率尖峰和效率问题。附有代码示例和调试经验,帮助开发者快速实现高效稳定的无线充电方案。

weixin_29190169的博客 405

又快又准的RAG Meta-Chunking,1.3倍提升,耗时减半

每个圆圈代表一个完整的句子,句子的长度并不一致。图底部的两侧揭示了边缘采样分割(Margin Sampling Chunking)和困惑度分割(Perplexity Chunking)。具有相同背景色的圆圈代表一个元块,它们被动态组合以使最终的块长度满足用户需求。comb. 指的是首先使用PPL分割(PPL Chunking)且阈值为0来分割文本,然后进行动态组合的过程。RAG效果在很大程度上依赖于检索到的文档的相关性和准确性。传统的基于规则或语义相似性的文本分块方法在捕捉句子间微妙的逻辑关系上存在不足。

AIBigModel的博客 1412

NXP S32K3 Safety软件生态全解析:RTD、SPD、SAF、SCST到底怎么选?

本文深入解析NXP S32K3系列MCU的安全软件生态,详细对比RTD、SPD、SAF和SCST四大组件的功能定位与选型策略。针对不同ASIL等级需求,提供从架构设计到工程实践的完整解决方案,帮助开发者高效实现功能安全认证,优化汽车电子系统的安全性与可靠性。

weixin_42524226的博客 323

Meta-Chunking:一种用于提高RAG性能的文本分割技术

尽管RAG技术在 LLMs 中具有潜力,但在文本分块方面常常被忽视。文本分块的质量直接影响知识密集型任务的表现。本文提出概念,这是一种介于句子和段落之间的文本分割技术,旨在通过逻辑感知来提高文本分割的效率;。此外,还提出了结合Meta-Chunking与动态合并的策略,在不牺牲逻辑连贯性的前提下,实现细粒度与粗粒度文本分块之间的平衡。

Python_cocola的博客 1085

国产PHY芯片YT8512H替代LAN8742A的实战指南(STM32F407平台)

本文详细介绍了在STM32F407平台上,使用国产PHY芯片YT8512H替代LAN8742A的完整实战过程。文章深入剖析了硬件设计中的关键信号连接差异(如CRS_DV与RXDV复用)、时钟布线要点,并提供了软件驱动修改、PHY配置及调试排错的系统指南,旨在帮助工程师高效完成国产化替代,规避常见陷阱。

defi6farmer的博客 858

新手必看:手把手教你如何通过Github提交CVE漏洞(附完整截图流程)

本文为安全研究新手提供了一份详尽的CVE漏洞提交实战指南。文章重点介绍了如何通过Github平台,从漏洞发现、验证、撰写专业报告到最终提交CVE申请的全流程,并附有完整的截图和沟通模板,帮助初学者迈出负责任漏洞披露的第一步。

ttt77的博客 1253

[RAG]Meta-Chunking: 通过逻辑感知学习高效的文本分段

本文是由人大提出的,旨在解决在中,文本分段这一关键方面被忽视的问题。具体来说,传统文本分段方法(如基于规则或语义相似性)在捕捉句子间深层语言逻辑联系方面存在不足,导致在知识密集型任务(如开放域问答)中的性能受到影响。:传统文本分段方法往往基于规则或语义相似性,难以捕捉句子间的深层逻辑联系(如因果、过渡、并行和渐进关系)。:Meta-Chunking通过利用LLMs的强大理解和推理能力,设计了边际采样分段和困惑度分段策略,精确识别文本分段边界,确保分段后的文本块具有逻辑连贯性。

lyy2017175913的博客 987

Pinocchio 结合 CasADi 进行 IK 逆运动学及 Mujoco 仿真

摘要:本视频演示了如何利用Pinocchio和CasADi实现机械臂逆运动学(IK)求解,并在Mujoco中进行仿真。通过构建优化问题(最小化位姿误差),结合IPOPT求解器对机械臂关节角度进行优化。代码支持导入URDF/MJCF模型,并以so100机械臂为例,实现了末端执行器位置跟踪的仿真测试。关键步骤包括:建立平移/旋转误差函数、设置约束条件、调用CasADi求解,最终在Mujoco中实时更新关节状态完成运动控制。

darcsdn 1002

RAG总结及前沿之Meta-Chunking切分思路

现有的RAG系统主要基于文本,无法有效利用视觉信息如布局和图像,这些信息在现实世界中的多模态文档中起着至关重要的作用,因此一种思路是采用基于视觉的RAG方法(VisRAG),通过使用视觉语言模型(VLM)直接处理文档图像,从而保留原始文档中的所有信息。:如果某个句子 (x_i) 的困惑度 (PPLM(x_i)) 小于其前一个和后一个句子的困惑度(即 (PPLM(x_{i-1})) 和 (PPLM(x_{i+1}))),并且差异超过设定的阈值 (\theta),则将 (x_i) 作为分块的边界;

yifangyun_360的博客 229

在Wincc8.0的Wincc 3D Control控件中使用3D模型

如果之前没有在Blender中自定义光照,EnableBackground属性选择“是”,Wincc 3D Control会按一个均匀的光照强度渲染。Wincc8.0更新后提供了一个Wincc 3D Control控件来显示3D图像,但是该控件实际体验下来现阶段还存在功能不足、运行不稳定的问题。再把导出的dae文件复制进Wincc项目的GraCS文件夹中,文件名称复制进控件的SceneFile属性里。选择编辑模式,全选模型,点击网格→分离→按材质,分离出不同的部件(不同的部件最好使用不同的材质)。

ghoring的博客 7135

PyTorch实战(21)——扩散模型(Diffusion Model)

扩散模型通过简单的噪声扩散过程,就能创造出高质量的超现实图像。在本节中,我们首先学习了扩散如何用于图像生成,了解了扩散模型的内部运作机制。随后基于动漫图像数据集,使用 PyTorch 和 Hugging Face 框架训练和运行自定义扩散模型,生成逼真动漫图像。

盼小辉丶的博客 3370

RAG总结及前沿之Meta-Chunking切分思路及VisRAG多模态实现机制解读

本文主要介绍了两个工作,一个是知识图谱用于RAG查询扩展的思路,属于知识图谱与RAG的结合范畴,一个是关于RAG发展的一个阶段性综述,提到的几个演化的点和未来的方向,值得看看。

xx_nm98的博客 1266

备考路上的学习笔记:我的软考高级架构师复盘与更新计划

本专栏基于作者备考软考高级系统架构设计师的真实经验,分为考前突击、基础夯实、核心突破、案例实战和论文通关五大模块。内容涵盖计算机体系结构、操作系统、数据库等核心知识,提供案例解析和论文范文。作者承诺持续更新考纲内容、真题复盘及互动答疑,旨在帮助考生系统备考,将个人踩坑经验转化为实用指南,陪伴考生共同完成从知识碎片到体系构建的蜕变历程。

qq837993702的博客 2295

[RAG] Meta-Chunking: 通过逻辑感知学习高效的文本分段

本文是由人大提出的,旨在解决在中,文本分段这一关键方面被忽视的问题。具体来说,传统文本分段方法(如基于规则或语义相似性)在捕捉句子间深层语言逻辑联系方面存在不足,导致在知识密集型任务(如开放域问答)中的性能受到影响。:传统文本分段方法往往基于规则或语义相似性,难以捕捉句子间的深层逻辑联系(如因果、过渡、并行和渐进关系)。:Meta-Chunking通过利用LLMs的强大理解和推理能力,设计了边际采样分段和困惑度分段策略,精确识别文本分段边界,确保分段后的文本块具有逻辑连贯性。

xx_nm98的博客 1258

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大模型 RAG:文档分块方案与 RAG 全流程

大模型在预训练阶段获取的知识是有限的,一般需要数据增强模块引入外部知识库,通过知识检索的方式搜索于用户提问相关的知识,这也是 RAG 相关应用架构出现的原因。但这又引申出另一个问题,外部知识文档往往比较长,可能是包含几十页甚至数百页的内容,如果直接使用会存在以下问题所以我们需要根据一定策略将文本切分为小块,以便适应大模型的上下文窗口,同时提高知识检索的精度。分块的目标RAG分块策略:主流方法(递归、jina-seg)+前沿推荐(Meta-chunking、Late chunking、SLM-SFT)

weixin_44245188的博客 2057

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LLMs之RAG:《Meta-Chunking: Learning Text Segmentation and Semantic Completion via Logical Perception》翻

​ LLMs之RAG:《Meta-Chunking: Learning Text Segmentation and Semantic Completion via Logical Perception》翻译与解读 目录 《Meta-Chunking: Learning Text Segmentation and Semantic Completion via Logical Perception》翻译与

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 1092

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

RAG文本分块优化:从机械切分到语义单元构建

文本分块(chunking)是RAG系统中影响召回精度与答案质量的基础环节,其本质并非简单按字符或句子截断,而是围绕语义保真度、上下文完整性与任务适配性进行的结构化知识组织过程。传统固定长度分块易导致指代断裂、逻辑割裂和向量信噪比下降;而基于文档结构(标题/列表/表格)、语义连贯性(代词回指、连接词守恒)和任务目标(问答/摘要/合规审查)的协同分块策略,可显著提升关键信息召回率与生成答案可靠性。本文聚焦chunking在金融、医疗、工业等高精度场景中的工程实践,详解结构感知解析、轻量语义校验与动态任务适配三

weixin_34269583的博客 351

收藏!RAG技术深度解析:从文档分块到重排序的全面优化指南

收藏!RAG技术深度解析:从文档分块到重排序的全面优化指南

EnjoyEDU的博客 832

自然语言处理:第八十章 RAG分块策略:主流方法(递归、jina-seg)+前沿推荐(Meta-chunking、Late chunking、SLM-SFT)

大多数常用的数据分块方法(chunking)都是基于规则的,采用 fixed chunk size(译者注:将数据或文本按照固定的大小进行数据分块)或 overlap of adjacent chunks(译者注:让相邻的数据块具有重叠内容,确保信息不会丢失。) 等技术。对于具有多个层级结构的文档,可以使用 Langchain 提供的 RecursiveCharacterTextSplitter,这种方法允许将文档按照不同的层级进行分割。

victor_manches的博客 1084

RAG中的Chunk切分方法:从基础到进阶的逻辑与实践

是影响检索效果和生成质量的核心环节。合理的切分策略既能保留语义连贯性,又能适配模型输入限制。本文将结合业界实践,梳理常见方法与创新思路,助你找到最佳切分方案。:优先尝试递归切分或语义切分,辅以动态重叠和实验调优。对于专业场景(如医疗、法律),可探索Meta-Chunking等创新方法,结合领域知识图谱提升效果。:从简单方法入手,逐步迭代优化,通过测试验证分块对检索召回率的影响,最终找到业务场景的“黄金平衡点”。Chunk切分没有“一刀切”的解决方案,需结合数据特性、模型能力与业务需求灵活选择。

微信公众号:互联网之路 876

RAG系统文档分块优化:从预处理到智能切分的工程实践

在构建检索增强生成(RAG)系统时,文档处理与分块是决定系统效果的基础工程。理解Chunk作为平衡检索粒度与语义完整性的最小知识单元至关重要,其质量直接影响后续检索与生成的准确性。通过文本清洗、结构化解析等预处理,可以为分块奠定基础。从简单的固定大小分块到更智能的递归字符分块、语义分块及基于文档结构的分块,不同的策略适用于不同场景。在实践中,常采用混合分层策略,并结合元数据增强,以提升后续混合检索和重排序的效果。评估分块质量需结合定性检查和定量指标(如召回率),并持续迭代优化。本文聚焦RAG流水线中的这一基

weixin_30851867的博客 360

RAG技术与Llama-Index企业级应用实战指南

检索增强生成(RAG)技术通过结合信息检索与生成模型,有效解决了大模型在特定领域知识不足和上下文窗口受限的问题。其核心原理是将文档向量化存储,通过相似度检索获取相关上下文,再输入生成模型产生精准回答。这种技术在企业知识管理、智能客服等场景展现巨大价值,特别是处理结构化文档和政策条款时优势明显。Llama-Index作为专业RAG框架,提供从数据加载、索引构建到混合检索的全流程支持,其Small-to-Big策略和元数据过滤功能能显著提升HR政策问答等场景的准确率。

weixin_30847865的博客 300

人大:基于LLM的文本分块优化RAG效果

在检索增强生成(RAG)系统中,传统文本分块方法在捕捉句子间逻辑关系细微变化方面的不足,如何实现细粒度和粗粒度文本分块之间的有效平衡?论文提出了一种名为Meta-Chunking的创新文本分块技术,通过动态组合策略实现了更高效的文本分块,显著提升了检索质量和效率。

大模型任我行的博客 1911
上一篇: RAG开发太痛苦?3大核心痛点与终极解决方案,一文彻底搞定!
下一篇: AI的“巴别塔”正在倒塌?从CLIP到Qwen3-Omni,我们离模态大一统还有多远?
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值