使用RAG技术构建企业级文档问答系统:切分(5)Late Chunking

Late Chunking:RAG中动态语义切分的核心技术 Late Chunking是一种面向检索增强生成(RAG)的先进文本处理范式,其核心在于将传统预设的静态切分(chunking)推迟至检索发生之后、重排序之前,实现问题驱动、上下文感知的动态语义切分。该技术从根本上缓解了固定长度切分导致的语义割裂与关键信息丢失问题,显著提升医疗、法律、金融等专业领域问答的准确率与可信度。依托Jina AI的多粒度DocumentArray、跨粒度对齐嵌入模型及模块化Executor流水线,Late Chunking可工程化落地为低延迟、高适应性的生产级方案,尤其适用于需兼顾 阅读详情

概述

Jina在2024年推出了一种新的文本切分方法,在论文Late chunking: contextual chunk embeddings using long-context embedding models中做了系统阐述。

来源:https://jina.ai/news/late-chunking-in-long-context-embedding-models/对中文实现Late Chunking,本文应该是第一篇,本文尽可能简单地介绍这项工作的动机、原理以及中文实现,并对结果做一个分析。

动机

正常在撰写文章的过程中,使用一些代词是非常常见的,Jina指出,由于切分导致文本会切分到不同的片段中,而有些片段中只有代词而没有代词所指对象,这可能会导致检索失败。

例如下面的这段文本,比如文档按下图右侧的方式切分,用户的问题是“柏林有多少居民”,很明显使用第二个片段可以回答是3.85百万,但由于它使用的是Its,导致这个片段有可能是检索不到的,或者即使检索到了,大模型也没有办法明确知道Its指代的是Berlin。

所以说,此处给了我们一个论文思路,是不是可以在切分前,统一做一个指代消解,然后再切分,这样第二段就会变“Berlin’s more than 3.85 million inhabitants make it the European Union’s most populous city, as measured by population within city limits.” 这样检索时就不会有代词的问题了。感兴趣的朋友可以做个实验。

原理

RAG一般的流程是先做文本切分,然后再向量化,而Jina给出的解决方案正如其名——Late Chunking,它是先直接对整段文本做向量化,然后再切分。

具体是怎么做的呢,首先取知识库中的一整篇文档过Embedding模型,然后会得到一整篇文档每个token位置的Embedding向量,然后按照选取的切分方式,取特定范围的向量做平均,从而得到这个片段的Embedding向量。

例如“DeepSeek是由杭州幻方量化所成立的子公司所开发的大语言模型。它真的很强大!”,

我们假设这段话tokenize后是这样的:

\["DeepSeek", "是", "由", "杭州", "幻", "方", "量化", "所", "成立", "的", "子公司", "所", "开发", "的", "大", "语言", "模型", "。", "它", "真", "的", "很", "强大"\]  

共计23个token,对Embedding模型设置参数,输出每个问题的hidden state(也是个向量,也就是下图中的Token Embedding),如果维度是1024,那就意味着“DeepSeek”这个位置就会有一个1024维的向量,“是”这个位置也是一样。因为是作为一整个句子送入Embedding模型的,所以“它”这个token的hidden state其实融合了整个句子的信息,知道“它”其实指代的是DeepSeek。那如果我们按照句子切分,取“它真的很强”对应位置(上面19-23位置)的hidden state然后做平均,那平均后得到的向量其实表达的含义是“DeepSeek真的很强大”。

这里面涉及3个问题:

  1. 为什么是取一整篇文档而不是整个知识库:因为实际情况几乎不会出现跨文档还使用代词指代的情况,Late Chunking要解决的是切分导致代词不知其所指的问题,取整个知识库拼接没有意义;

  2. 所以最后是怎么切分的:Jina官方的代码仓库中有几种方法,分别是按语意、按句子、按token长度,切分之后片段的Embedding,是对片段切分点范围内的Token Embeddings取平均得到的;

  3. 一整篇文档过Embedding模型不担心超长吗:所以此处Jina要求尽量使用支持长输入的Embedding模型,如果还是超长,那就按照Embedding模型支持的最大长度(例如8192)先切分,假设向量维度是1024,按8192切分后得到7个片段,最终把这7个片段的8192 个维度为1024的向量拼接起来,然后还是按2中提到的方法获取片段的Embedding。这里面其实涉及到很多操作问题,首先比如是按8192切分,其实是token的长度是8192,而不是句子长度,其次是切分后字符的索引要和token的索引对应,最后如果超过Embedding模型的最大长度,需要考虑模型的第一个位置是否有特殊字符,要把它移除。

结果

官方使用了“Berlin”作为Query,分别计算与下面3个句子的相似度。对这3个句子分别使用了两种方式做向量化,一种是传统的先切分再向量化,记为Traditional,另一种是Late Chunking。

第一个句子不存在指代不明的问题,所以两种方法计算的余弦相似度很接近,这个是符合预期的。

第二个句子中有代词Its、it,第三个句子中有The city,使用传统方式计算的余弦相似度就相对较低,而使用Late Chunking方式计算的余弦相似度比较高,这就体现出了Late Chunking的优势。

TextSimilarity TraditionalSimilarity Late Chunking
Berlin is the capital and largest city of Germany, both by area and by population."0.848621850.849546
Its more than 3.85 million inhabitants make it the European Union’s most populous city, as measured by population within city limits.0.70843380.82489026
The city is also one of the states of Germany, and is the third smallest state in the country in terms of area.0.75345530.84980094

相似度高意味着什么,意味知识库比较大时,如果输入“柏林的常驻人口有多少”,使用Late Chunking第2个句子会排在候选中更靠前的位置,从而有更大的概率被召回,而传统方法则会排在比较靠后的位置。

效果

虽然动机看起来站得住脚,原理好像也说得通,但实验的结果却表现很差。后文会进行分析。此处不是完全控制变量实验,有两个变量,除了切分方法不同外,向量模型也不同,其余的生成模型、评估模型与其他实验保持一致。

核心代码

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

Late Chunking最核心的部分,其实不是切分动作在前还是在后,而是片段中的向量表示,要能融合上下文。源代码提供的是按照英文句子、token数等方式的切分,与中文习惯差异较大,所以本文中的实现还是按换行进行了切分,但每个片段的Embedding使用的是融合了整个文档语意信息的。

\# 获取整个文档每个token位置的Embedding  
def document\_to\_token\_embeddings(model, tokenizer, document, batch\_size=4096):  
    tokenized\_document = tokenizer(document, return\_tensors="pt")  
    tokens = tokenized\_document.tokens()  
  
    outputs = \[\]  
    for i in trange(0, len(tokens), batch\_size):  
          
        start = i  
        end   = min(i + batch\_size, len(tokens))  
  
        batch\_inputs = {k: v\[:, start:end\].to(device) for k, v in tokenized\_document.items()}  
  
        with torch.no\_grad():  
            model\_output = model(\*\*batch\_inputs)  
  
        outputs.append(model\_output.last\_hidden\_state)  
  
    model\_output = torch.cat(outputs, dim=1)  
    return model\_output  
  
\# 对token embeddings按照特定的起、止索引进行mean pooling  
def late\_chunking(token\_embeddings, span\_annotation, max\_length=None):  
    outputs = \[\]  
    for embeddings, annotations in zip(token\_embeddings, span\_annotation):  
        if (max\_length is not None):  
            annotations = \[  
                (start, min(end, max\_length - 1))  
                for (start, end) in annotations  
                if start < (max\_length - 1)  
            \]  
        pooled\_embeddings = \[\]  
  
        for idx, (start, end) in enumerate(annotations):  
            assert chunks\[idx\] == tokenizer.decode(doc\_input\_ids\[start: end\]), f"idx={idx}, (start, end)={(start, end)}, chunks\[idx\]={chunks\[idx\]}, tokenizer.decode(doc\_input\_ids\[start: end\])={tokenizer.decode(doc\_input\_ids\[start: end\])}"  
            if (end - start) >= 1:  
                pooled\_embeddings.append(  
                    \# embeddings\[start:end\].sum(dim=0) / (end - start)  
                    embeddings\[start:end\].mean(dim=0).cpu().numpy()  
                )  
            else:  
                raise ValueError()  
                     
        pooled\_embeddings = \[  
            embedding / np.linalg.norm(embedding) for embedding in pooled\_embeddings  
        \]  
        outputs.append(pooled\_embeddings)  
    return outputs  
  
\# 计算中文句子和token的对应关系,并获取每个片段的起、止索引  
span\_annotations = \[\]  
  
doc\_input\_ids = doc\_tokens\['input\_ids'\]\[0\]  
start\_pos = 1  
seperator\_len = len(tokenizer('\\n\\n', return\_tensors='pt')\['input\_ids'\]\[0\]) - 2  
  
for chunk\_idx, chunk in enumerate(chunks):  
    \# 1: -1排除首位的<s></s>  
    chunk\_input\_ids = tokenizer(chunk, return\_tensors='pt')\['input\_ids'\]\[0\]\[1:-1\]  
    chunk\_token\_len = len(chunk\_input\_ids)  
    \# 部分情况下,chunk\_input\_ids解码后的前两位可能包含特殊标记(如<s>)  
    if (doc\_input\_ids\[start\_pos: start\_pos + chunk\_token\_len\] == chunk\_input\_ids).detach().numpy().mean() != 1:  
        start\_pos += 1  
      
    assert (doc\_input\_ids\[start\_pos: start\_pos + chunk\_token\_len\] == chunk\_input\_ids).detach().numpy().mean() == 1, chunk\_idx  
    span\_annotations.append((start\_pos, start\_pos + chunk\_token\_len))  
    start\_pos += chunk\_token\_len  
  
\# 获取整个文档每个位置的Embedding  
document\_embeddings = document\_to\_token\_embeddings(model, tokenizer, processed\_doc, batch\_size=1024)  
\# 获取late embedding  
late\_embeddings = late\_chunking(document\_embeddings, \[span\_annotations\])  

结果分析

考虑到我们的测试集是中文的,而Jina的官方代码是英文的,所以我一度以为是我的实现有bug,但对英文的数据分析后,发现同样存在一样的问题。

此处只展示最关键的分析,更多分析大家可以查看分析部分的源代码:https://github.com/Steven-Luo/MasteringRAG/blob/main/split/05_late_chunking_en_debug.ipynb

对于一个知识库片段,使用它自身作为Query去检索,如果只保留Top1,绝大多数情况下应该检索到它自身才对,而在Late Chunking中却不是这样。

下面的分析使用维基百科中DeepSeek词条的部分文本作为知识库,使用Jina公布的代码切分得到片段,然后分别拿每个片段作为Query,分别过Embedding模型得到Query的向量,与作为知识库片段的向量两两之间计算相似度,从这个结果来看,最相似的片段,并不总是自己,前5个句子,似乎都跟第一个句子最相似。

由于Late Chunking是将整个片段每个位置的hidden state做平均,所以可以想想,短句、代词较多的句子,应该会跟其他句子更相似。简便起见,此处检查句子长度。

下图中,横轴的0表示以每个片段作为Query,最相似的不是自身,1表是是自身,从结果可以看出,长句普遍都和自身最相似,而短句则和其他句子最相似。这也好理解,因为短句大都要借助前面的内容作为上下文,其中会有相对较多的代词。

如何学习大模型 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 分块检索难,Late Chunking 值得试试 实际线上部署使用过 RAG (Retrieval Augmented Generation)服务的研发同学或多或少都会发现,按照常规的 RAG 方案进行文本切片并向量化之后,部分文本切片可能难以检索命中。这个往往是因为对应的分片缺失可供检索的信息。以医疗领域的病例检索为例,单个病例文件中病情描述(现病史)一般在文档最上面,相关的诊断结论在文档最下面,而病例的诊断结论中一般没有任何相关的病例描述。按照常规的 RAG 方式进行分片后,病情描述与诊断结论完全分离了。 阅读详情

相关推荐

Late Chunking:突破RAG语义断裂的晚分块技术实践

RAG系统中,文本分块(chunking)是影响问答准确性的关键前置环节。传统早期分块(Early Chunking)因固定长度切分导致语义割裂、结构丢失与噪声混入,严重制约技术文档类场景的效果。Late Chunking作为一种动态分块范式,将切分动作延迟至检索之后、重排之前,依托多粒度嵌入与上下文感知策略实现按需精细化切分。其核心价值在于保留原始文档结构锚点、提升关键信息完整性,并显著改善长文本问答的准确率与首token延迟。本文聚焦Jina AI技术栈下的Late Chunking落地路径,涵盖结构化

weixin_33402252的博客 298

【论文译读】Late Chunking:Contextual Chunk Embeddings Using Long-Context Embedding Models

许多应用场景需要检索较小的文本片段,而基于密集向量的检索系统在处理较短文本片段时通常表现更好,因为语义在嵌入中不容易被 “过度压缩” 。因此,开发者通常会将文本文档分割成更小的块,并分别进行编码。然而,这种方式创建的块嵌入可能会丢失周围块的上下文信息,从而导致表示效果不理想。在本文中,作者提出了一种称为 “late分块” 的新方法,该方法利用长上下文嵌入模型首先嵌入长文本的所有token,然后在 Transformer 模型之后、均值池化之前进行分块。这样得到的块嵌入能够捕捉完整的上下文信息,从而在各种检

技术改变世界 1830

State of GPT (ChatGPT 原理及现状介绍)

要用 RLHF 的一个简单的原因就是 RLHF 模型效果更好,下面的图来源于 InstructGPT 论文,PPO (RLHF 算法) 后的模型生成的答案更被人类喜欢。karpathy 认为 RLHF 有用的原因是判别比生成更容易,让标注员去写一些 SFT 的 QA 数据对是比较难的,如果有一个 SFT 模型生成一些数据让标注员判断哪个更好就简单很多。,GPT4 最强,前三个都是 RLHF 模型,其他模型都是 SFT 模型。伯克利做的模型评测榜单。

kebijuelun的博客 3578

“后期分块”:用长上下文嵌入模型拯救文本检索

论文:Late Chunking: Contextual Chunk Embeddings Using Long-Context Embedding Models地址:https://arxiv.org/abs/2409.04701研究背景研究问题:这篇文章要解决的问题是文本块嵌入在处理长文本时丢失上下文信息的问题。具体来说,当文本被分割成多个小块进行嵌入时,每个块的嵌入可能会失去与其他块的上下文...

zenRRan的博客 1861

固定翼飞行器建模(一)——六自由度动力学

前两期文章讲完了气动力和气动力矩的模型,本期将来讲解一下六自由度部分的动力学与运动学方程。

2302_80148937的博客 1万+

低速信号设计之 LPC 篇

摘要:LPC总线作为服务器低速信号设计的关键技术,在BIOS芯片连接、Super I/O芯片控制和嵌入式管理等方面发挥着重要作用。其采用33MHz时钟频率和4位并行传输机制,理论速率达16.5MB/s。设计时需重点关注布线长度(建议<10cm)、信号完整性(45°走线、合理层间隔离)和过孔优化等要点。典型应用案例表明,通过规范设计可确保在工业控制等复杂环境中稳定工作。LPC总线凭借低成本、低引脚数和良好兼容性,仍是服务器低速外设连接的重要解决方案。

qq_16237389的博客 1165

长文本 Embedding 模型中的“迟分”策略

大约一年前,2023 年 10 月,我们推出了全球首个支持 8K 上下文长度的开源 Embedding 模型 —— jina-embeddings-v2-base-en。自此,长文本在 Embedding 模型中的应用引发了广泛讨论和争议。:将数千字的长文本编码为单一 Embedding 表示会导致语义信息的"过度压缩",使得检索系统难以准确定位特定信息。:许多应用,尤其是检索增强生成(RAG)系统,需要检索文档中的较小片段,而非整个长文档。

Python_cocola的博客 1061

【计算机组成原理】课程设计四:控制器设计(二)

本文主要是介绍了计算机组成原理课程设计四其二,即控制器设计(二),属于计算机课程设计专栏

superiony的博客 1429

长文本分块的新策略——后期分块(Late Chunking),让RAG应用“又准又高效“

后期分块技术为处理长文本提供了一个既聪明又实惠的新方案。它不仅能更好地理解文章的整体意思,还能大大节省存储和计算成本。对于那些想要构建大规模AI应用的开发者来说,这绝对是一个值得尝试的新方向。随着技术的不断进步,我们有理由相信,后期分块将在未来的AI应用中发挥越来越重要的作用。

2401_85373396的博客 2231

光流法实战:如何用OpenCV的Farneback算法实现图像对齐(附调参技巧)

本文详细介绍了如何使用OpenCV的Farneback稠密光流算法实现图像对齐,包括核心原理、参数调优和工程实现。通过实战代码和参数优化策略,帮助开发者解决动态场景中的图像对齐问题,提升多帧融合和视频处理的效果。

weixin_29266007的博客 291

HTML5期末大作业:关于家乡介绍的HTML网页设计——郑州美景HTML+CSS(5页) 学生DW家乡介绍网页设计作业成品 web课程设计网页规划与设计

HTML5期末大作业:我的家乡——郑州美景HTML+CSS(5页) 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业, 可满足大学生网页大作业网页设计需求, 喜

qq_365392777 1万+

【AI大模型】Late Chunking×Milvus:如何提高RAG准确率?看完这篇你就懂了!!

在RAG应用开发中,第一步就是对于文档进行chunking(分块),高效的文档分块,可以有效的提高后续的召回内容的准确性。而对于如何高效的分块是个讨论的热点,有诸如固定大小分块,随机大小分块,滑动窗口重新采样,递归分块,基于内容语义分块等方法。而Jina AI提出的Late Chunking从另外一个角度来处理分块问题,让我们来具体看看。

2401_85325557的博客 1215

深入探究贝叶斯网络(Bayesian Network):从基础原理到实际应用

贝叶斯网络,也称为信念网络或有向无环图模型,是一种概率图模型。它使用有向无环图(DAG)来表示随机变量之间的条件依赖关系。每个节点代表一个随机变量,边表示变量之间的条件依赖关系。贝叶斯网络作为一种强大的工具,通过结合概率论和图论,为复杂系统建模和推理提供了有效手段。无论是在医学诊断、故障检测还是自然语言处理等领域,它都展示了巨大的潜力。然而,其计算复杂度高、结构学习困难等挑战也需要我们在实际应用中不断优化算法和技术。希望通过本文,你能对贝叶斯网络有更深入的理解,并能够在实际项目中灵活应用这一强大工具。

qq_28791753的博客 5971

看懂 Embedding 分块,Naive Chunking 与 Late Chunking 的巅峰对决

在当今的大语言模型(LLM)应用架构中,检索增强生成(RAG)已成为解决模型幻觉和知识时效性问题的核心方案。

DEVELOPERAA的博客 1181

GEE:耦合5个因子的kRSEI遥感生态指数(K Remote Sensing Ecological Index, KRSEI)计算

本文将介绍在 Google Earth Engine (GEE)平台上,如何耦合5个因子,进行 kRSEI 的计算。具体来说,分别计算了 `NDVI, WET, NDBSI,LST,NDRI` 5个因子,并使用 PCA 主成分分析方法计算了权重,最后,计算了 kRSEI 指数。

养乐多的博客 1415

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

实话实说,RAG其实并没有你想的那么简单,Late Chunking vs Contextual Retrieval解决上下文难题

RAG是一种将外部知识库检索与生成模型相结合的技术,不过最近的Agent,MCP喧嚣至上,包括DS-R1模型的热度,让RAG的技术热度下降了很多。甚至我和一些AI的从业者讨论基本技术的时候,大家对RAG嗤之以鼻。其实RAG一点都不简单,我今天就总结了一下RAG的经常遇到的“左右手”怎么选的问题,算是给自己的学习做个总结。

2401_85325557的博客 1720

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Late Chunking×Milvus:如何提高RAG准确率

01.背景在RAG应用开发中,第一步就是对于文档进行chunking(分块),高效的文档分块,可以有效的提高后续的召回内容的准确性。而对于如何高效的分块是个讨论的热点,有诸如固定大小分块,随机大小分块,滑动窗口重新采样,递归分块,基于内容语义分块等方法。而Jina AI提出的Late Chunking从另外一个角度来处理分块问题,让我们来具体看看。02.Late Chunking是什么传统的分块在...

ZILLIZ 1256

NTscan扫描工具

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

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

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

RAG技术深度揭秘:Late Chunking与Contextual Retrieval如何巧妙解决上下文难题?

RAG是一种将外部知识库检索与生成模型相结合的技术,不过最近的Agent,MCP喧嚣至上,包括DS-R1模型的热度,让RAG的技术热度下降了很多。甚至我和一些AI的从业者讨论基本技术的时候,大家对RAG嗤之以鼻。其实RAG一点都不简单,我今天就总结了一下RAG的经常遇到的“左右手”怎么选的问题,算是给自己的学习做个总结。

m0_63171455的博客 1182

Late Chunking:先嵌入后分块的RAG语义增强技术

在RAG系统中,传统‘先切块后嵌入’流程导致长文本语义割裂、指代消解失败与长程依赖丢失,严重制约检索精度。Late Chunking作为一种新兴范式,通过让大模型先整体理解文档、再基于全局语义动态切块与聚合,从根本上缓解了嵌入向量维度恒定性与文本语义完整性之间的矛盾。该技术显著提升对‘该设备’‘上述条款’等上下文敏感表达的表征能力,兼顾高精度与低存储成本,已在法律合同审查、医疗文献检索和金融研报问答等真实场景验证有效性。其核心价值在于将嵌入从局部感知升级为全局感知,为中大型知识库提供工程友好、效果可落地的第

weixin_34163553的博客 399

RAG其实并没有你想的那么简单,Late Chunking vs Contextual Retrieval解决上下文难题

RAG是一种将外部知识库检索与生成模型相结合的技术,不过最近的Agent,MCP喧嚣至上,包括DS-R1模型的热度,让RAG的技术热度下降了很多。甚至我和一些AI的从业者讨论基本技术的时候,大家对RAG嗤之以鼻。其实RAG一点都不简单,我今天就总结了一下RAG的经常遇到的“左右手”怎么选的问题,算是给自己的学习做个总结。

2401_85327249的博客 1197

深入理解大模型分片优化:Late Chunking 技术解析

在编码前,将长文本切分成多个小段(如按固定 token 数、换行符、标点等),每段单独送入模型,单独编码。优点:实现简单缺点每个 chunk 独立编码,上下文信息丢失重复计算(重叠窗口)浪费资源对于每个样本中每段的,提取对应 token 的 embedding;对该区间执行;将结果转换为 numpy 向量,方便存储/检索。特性模型调用次数多次一次上下文信息丢失保留全局上下文实现复杂度简单稍复杂(需记录 span)聚合策略灵活性固定切片高度灵活,支持任意切分逻辑。

xiaoyanboke的博客 1227

Late Chunking:RAG中查询感知的动态语义分块技术

语义分块是RAG系统实现高精度检索的核心环节,其本质是将非结构化文本转化为模型可理解的语义单元。传统静态分块依赖预设长度或规则,导致语义割裂、结构失盲与查询失焦;而Late Chunking通过将分块动作延迟至查询触发后,利用查询本身作为语义探针,在原始长文本中动态定位并裁剪上下文相关区域,显著提升关键段落召回率与答案可追溯性。该技术依托Jina AI的长上下文嵌入、细粒度重排与结构化文档容器能力,已在法律合同、医疗器械注册资料、技术白皮书等强结构化长文档场景落地验证。本文聚焦Late Chunking的原

weixin_33720956的博客 480

Late Chunking:RAG中解决语义断裂的工程化切块方案

文本切块(chunking)是RAG系统的基础预处理环节,直接影响检索召回质量与LLM引用准确性。传统固定窗口切分易导致语义断裂、指代消解失败和领域术语歧义,根源在于脱离上下文进行孤立建模。Late Chunking通过‘先全文理解、后语义切分、再全局嵌入’的技术路径,在长文档场景下显著提升上下文保真度。其核心依赖长上下文embedding模型(如jina-embeddings-v2-base-en)与span-aware分词服务协同,实现token级语义锚定。该方案特别适用于法规、医疗、技术手册等高指代密

weixin_33721427的博客 447

RAG 文档切分(Chunking)策略与实现细节 —— 全网技术汇总

RAG文档切分策略与技术实现摘要 RAG系统的核心挑战在于文档切分,需要在语义完整性和检索精度间取得平衡。主流切分方法包括:固定大小切分、递归字符切分(LangChain默认方案)、文档结构切分、语义切分(质量最高但成本高)和LLM驱动切分等。

qq_63159036的博客 589

Late Chunking:RAG文本分块的语义重建革命

在向量检索系统中,文本分块是影响语义准确性的基础环节。传统‘先切后嵌’方法因割裂上下文导致召回失真、指代断裂与语义漂移;Late Chunking提出‘先读再切’新范式,通过全局编码+智能切片+条件池化,使每个chunk embedding天然携带文档级语义锚点。该技术显著提升长文档理解、跨段落推理与专业术语关联能力,尤其适配法律、医疗、技术文档等强逻辑依赖场景。结合KDB.AI等支持密度感知索引的向量数据库,可进一步放大其在真实业务中的检索精度与响应效率。

weixin_33895516的博客 383
上一篇: Nature发布颠覆传统的深度学习范式
下一篇: 【ai应用】Deepseek大模型在银行系统的部署方案设计
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值