文档切片技术详解:提升大模型RAG系统效果的五大前提
文档切片是将长文档分割成适合语言模型处理的小块,是RAG系统成功的关键前提。文章介绍了五种文档重要性前提(有文档、组织性、一致性、版本管理、属性管理)和四种切片方法(固定大小、递归、语义、元数据),针对不同文档类型提供处理建议,并详细说明了切片后的存储方式和在RAG系统中的应用流程。强调高质量文档和数据治理是构建有效大模型应用的基础。
1. 文档的重要性
文档切片的目的是将长文档分割成适合语言模型处理的、有意义的小块。这里的前提我认为有五个需要特别注意,否则对于“大模型+RAG”做的知识库、客服系统等很难成功。
- 有文档:对于知识性的、经验性的、制度性的、产品描述及介绍性的等文档必须得有。
- 文档内容具备很好的组织性:有章节,且对于文章的章节代表的中心思想具有高耦合的特性。对于上下文相关的最好在一个文档中描述,或至少在处理时知道这些上下文相关的内容。
- 文档内容的一致性:如果有多个文档针对同样的内容的话,应该具有一致性。
- 版本管理:具备很好的版本管理机制,防止不同版本的内容进入模型且不具备版本感知性而产生不一致的结果。
- 文档属性管理:如果具备文档的总体描述信息则更容易实现文档的向量存储,这些属性对于理解文档、文档与文档之间的上下文至关重要。
鉴于传感器的广泛应用,目前很多企业对于结构化数据的收集都是自动的,数据量也很大,但对于如何使用处于迷茫状态。
而对于文档类的数据却是相反的,数据欠缺、数据组织混乱、重复或不一致性问题严重,因为大模型的出现导致数据荒。对于那些有文档管理系统且具备文档管理流程的企业而言,是一个很好的契机去使用文档内容。
早年我在推广IBM FileNet Content Management时见到过很多企业对于知识、财务文件、供应商管理文件、流程文件、制度文件、产品文件等文档的重视程度很高,能够很好地管理文档,虽然当时对于文档的搜索处于初级阶段,但在当下大模型盛行的年代,对于实施“大模型+RAG”的确是一个很大的优势。
如果具备了文档且对文档进行了有效的组织,那么选择哪种切片方法取决于文档的类型和内容的复杂性。
2. 文档的切片方法
2.1 基于固定大小的切片
这是最简单直接的方法。你只需设定一个固定的字符数或token数,然后按此大小进行切片。
- 优点:简单易实现,处理速度快。
- 缺点:可能会将一个完整的句子或段落从中间切断,导致切片内容不完整或失去上下文。
2.2 基于递归的切片
这种方法比固定大小切片更智能。它会按照预设的分隔符(如换行符、句号、空格等)尝试切分。如果切分后的大小仍然超过限制,它会递归地使用更小的分隔符再次切分,直到满足要求。
- 优点:能够更好地保留句子的完整性,使切片内容更有意义。
- 缺点:实现起来相对复杂,需要根据不同文档类型调整分隔符。
2.3 基于语义的切片
这是一种更先进的方法,它不依赖于简单的字符数或分隔符,而是通过语言模型来理解文档的语义。它将文档分割成具有独立语义的段落或句子,确保每个切片都包含一个完整且有意义的信息单元。
- 优点:生成的切片质量最高,RAG检索时能返回更相关的结果。
- 缺点:计算成本高,速度较慢,需要使用额外的模型(与下属所描述的嵌入模型一致)进行语义分析。
2.4 基于元数据的切片
在切片时,除了文本内容,还可以将文档的元数据(如标题、作者、创建日期、章节信息等)一并保留。在检索时,这些元数据可以帮助模型更好地理解切片的上下文。
- 优点:丰富了切片的信息,有助于提高检索准确性。
- 缺点:需要额外处理和存储元数据。
3. 对于不同类型的文档的切片的注意事项
- Word和PDF:它们不仅仅是纯文本,还包含结构化信息(如标题、列表、表格、图片)。在切片前,你需要使用库(如pdfminer.six、PyMuPDF、python-docx等)来解析文档,提取出纯文本和结构信息,常见的切片库如下:
名称 | 语言 | 擅长领域 | 在RAG中的核心作用 |
LangChain RecursiveCharacterTextSplitter | Python | 基于文本的分块,支持多种分隔符。 | 通用文本切片:适用于大多数纯文本、代码、Markdown等文档。通过递归方式确保切片尽可能保留句子的完整性,避免在句子中间切断。 |
LlamaIndex SentenceSplitter | Python | 专注于句子的完整性。 | 以句子为中心的切片:确保每个切片都是一个或多个完整的句子,这在问答任务中可以提供更连贯的上下文。 |
Unstructured | Python | 多格式文档(Word、PDF、HTML、PPT等)的解析和分块。 | 多格式文档预处理:能够自动识别并提取不同格式文档中的结构化信息(如标题、段落、列表、表格),并将其转换为结构化的切片。特别擅长处理复杂、非结构化的文档。 |
PyMuPDF / pdfminer.six | Python | PDF文档的解析和内容提取。 | PDF文档结构化:用于将PDF中的文本、表格、图像等元素提取出来。pdfminer.six 擅长复杂的布局分析,而 PyMuPDF 则以速度见长。它们是处理PDF的 RAG 工作流中的基础工具。 |
python-docx | Python | Microsoft Word (.docx) 文档的解析。 | Word文档结构化:专注于从Word文档中提取标题、段落、列表和表格,并保留其结构关系。这对于基于Word文档构建知识库非常重要。 |
- 对于Visio、PPT、Excel等,你需要先将它们转化为可处理的格式(如文本、表格描述或图像),再利用OCR或多模态模型进行处理
4. 切片文档的输出
文档切片是将原始文档从“人类可读”格式转化为“机器可读”和“向量可搜索”格式的关键步骤,它为后续的 RAG 检索和增强生成奠定了基础。文档切片最后的输出通常是文本切片,而不是一个单一的巨大文件。这些切片是结构化的数据,可以轻松地被存储和使用。
4.1 切片的输出和格式
切片后的最终输出是一个列表或数组,其中每个元素都是一个独立的切片对象。每个切片对象通常包含以下关键信息:
文本内容:这是切片最核心的部分,即从原始文档中提取的文本片段。
元数据:这是关于切片的额外信息,对于后续的检索和过滤至关重要。常见的元数据包括:
- 源文件:原始文档的名称或路径。
- 页码:该切片来自文档的哪一页。
- 标题/章节:该切片所属的标题或章节信息。
- 数据类型:该切片是表格、列表、还是普通段落。
- 时间戳:文档创建或修改的时间。
4.2 存储方式
切片后的数据通常会被存储在两种主要的地方:
4.2.1 向量数据库
这是最常见的也是最核心的存储方式。
如何存储:每个文本切片会被一个嵌入模型转换为一个向量。这个向量代表了切片的语义信息。然后,这个向量和它的元数据一起被存储到向量数据库中。如下是常见的嵌入模型:
模型/工具 | 模型名称举例 | 主要特点 | 适用场景 |
OpenAI Embeddings | text-embedding-ada-002 | 高质量、易用:模型性能经过广泛验证,API 调用非常简单,无需本地部署和维护。 | 追求高效率与高性能:适合初创公司、快速原型开发和对结果质量要求高的项目,但需要承担 API 调用费用。 |
Hugging Face Models | all-MiniLM-L6-v2,bge-large-zh-v1.5 | 开源、本地部署:模型种类丰富,可免费商用,支持本地运行,能更好地保护数据隐私。 | 注重隐私与成本控制:适合有数据安全要求、需要离线运行或希望通过本地部署来降低长期运营成本的个人或企业。 |
Google Models | text-embedding-004,gemma-2b-it | 集成性强:与 Google 的 AI 生态系统(如 Vertex AI)紧密集成,便于在 Google Cloud 环境中部署和管理。 | Google Cloud 生态用户:适合已在使用 Google Cloud 服务的企业,可以无缝整合其 AI 基础设施。 |
Sentence-BERT (SBERT) | paraphrase-multilingual-mpnet-base-v2 | 高效、多语言支持:基于预训练的 BERT 模型,能够快速生成高质量的句子嵌入,且许多模型支持多种语言。 | 多语言 RAG 系统:适合需要处理多种语言文档的 RAG 项目,能有效处理跨语言语义搜索任务。 |
Cohere Models | embed-english-v3.0 | 专为嵌入优化:Cohere 是一家专注于 NLP 模型的公司,其嵌入模型通常在语义相似度任务上表现出色。 | 追求顶级性能:适合对语义搜索精度有极高要求,并希望使用专门优化过的模型的专业用户。 |
优点:向量数据库专门为相似性搜索而优化。当用户提问时,问题也会被转换成一个向量,数据库会快速检索出与问题向量最相似的那些切片向量。
主流向量数据库:Chroma、Faiss、Weaviate、Milvus、Pinecone 等。
4.2.2 传统数据库(如关系型数据库或文档数据库):
如何存储:你可以将切片作为一行记录存储在数据库中,每列对应一个字段(如id、text、source、page_number等)。
优点:易于管理和查询,特别是当你的查询主要基于元数据时(例如,“找出所有关于项目A的文档切片”)。
缺点:不擅长进行向量相似性搜索。如果你需要结合向量搜索,通常会采取混合存储的方式,即在传统数据库中存储元数据,在向量数据库中存储向量。
5. 后续使用
切片文档在存储后,主要用于 RAG 系统的检索阶段。
基本流程如下:
- 用户提问:用户输入一个问题,例如:“什么是RAG,它有什么优势?”
- 问题嵌入:RAG 系统将用户的提问通过与切片时相同的嵌入模型,转换为一个查询向量。
- 向量检索:系统将这个查询向量发送给向量数据库。
- 相似性搜索:向量数据库执行高效的相似性搜索,找出与查询向量最相似的Top-K个切片。这些切片就是与用户问题最相关的“知识”。
- 增强生成:系统将用户问题和检索到的相关切片(知识)一起打包,形成一个完整的上下文,然后发送给大语言模型。
- 生成回答:大语言模型基于这个完整的上下文(问题+知识)来生成最终的回答,确保回答的准确性和相关性。
6. 总结
文档及文档切片不成功就像是结构化数据没有或不标准,没有数据或数据质量差都会导致差的AI结果。如果企业寄希望于先进的大模型平台而忽视文档则说明起点就错了,对于后续要实施的智能体更是把文档、结构化数据、系统服务综合起来实现自动化,其对数据的要求更高,基础的薄弱注定很难跟上先进生产力的步伐。
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!
在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
大模型全套学习资料展示
自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。
希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!
01 教学内容
-
从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!
-
大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
02适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
vx扫描下方二维码即可
本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!
03 入门到进阶学习路线图
大模型学习路线图,整体分为5个大的阶段:
04 视频和书籍PDF合集
从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)
新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
05 行业报告+白皮书合集
收集70+报告与白皮书,了解行业最新动态!
06 90+份面试题/经验
AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)
07 deepseek部署包+技巧大全
由于篇幅有限
只展示部分资料
并且还在持续更新中…
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
更多推荐
所有评论(0)