链载Ai

标题: 大模型私有知识库如何提高准确率?切块是关键 [打印本页]

作者: 链载Ai    时间: 4 小时前
标题: 大模型私有知识库如何提高准确率?切块是关键

前言

RAG 就像我们做开卷考试,在回答考题之前,先翻我们准备的资料(通过检索相关文档来增强自己的能力),这样一来,答题不仅更准确,还能带上更多上下文信息,显得更有深度和针对性。

在 RAG 中,我们需要提前预备知识资料,然后向量化后存到向量数据库中,在回答问题的时候,并对问题进行向量化,然后去检索我们数据库是否有相似的内容,如果相似则召回,并把召回的内容一并给到大模型(如:Deepseek),然后通过大模型的推理归纳给出相应的答案。

类似下面步骤:

第一步:预备数据 首先,把我们准备的资料知识文档,“切”成一个个小文档块,然后存到数据库里。如果这些小文档块还生成了对应的“嵌入”(可以理解成一种数学表示),那这个数据库就可以升级成向量存储,方便后续的快速查找。

第二步:检索 当用提问时,系统先把问题向量化,并通过向量搜索、全文搜索,或者多模态的方式,去数据库里检索最相关的小文档块。当定位到那些和用户问题最匹配的信息片段后,以上下文的方式喂给大模型,这样大模型不仅能更快找到答案,还能确保回答得更精准、更有针对性,同时也减少了幻觉。

面临的挑战

对于企业或者个人来说,有很多政策条文,或者文献,通常都是很长篇幅的内容。如果把这些很长的篇幅给到大模型,基于现有大模型的计算能力则无法一次性处理,那就需要对文本进行切块,然而切块不是越大越好,在向量化时,长文本面临以下核心挑战:

一、语义信息稀释

二、计算复杂度与资源消耗

三、文本分块技术限制

四、模型架构制约

五、质量与效率平衡

切块方法论

在上面我们看到“分块”在 RAG 中起到关键角色和面临的挑战,它直接决定了我们召回知识的准确性,因此选择合适的分块方法尤为重要;有效切割文件的关键在于平衡信息的完整性和管理的便捷性,‌ 可以采用固定大小分块、语义分块、递归分块、基于文档结构的分块以及基于 LLM 的分块等多种策略 ‌‌。

总结表格如下:

分块策略 ‌
优点 ‌
缺点 ‌
典型适用场景 ‌
1. 固定大小分块 ‌
  • ✅ 实现简单快速
  • ✅ 计算成本极低
  • ✅ 内存占用稳定
  • ❌ 可能切断语义关联
  • ❌ 需反复调试块大小
  • ❌ 对长文本不友好
  • 基础问答系统
  • 处理格式统一文档
2.语义分块
  • ✅ 保留完整语义单元
  • ✅ 提升上下文相关性
  • ✅ 动态适应内容
  • ❌ 依赖 NLP 模型质量
  • ❌ 计算资源消耗较高
  • ❌ 处理速度较慢
  • 专业领域分析
  • 逻辑推理任务
3. 递归分块
  • ✅ 多粒度内容覆盖
  • ✅ 冗余信息捕获能力强
  • ✅ 灵活调整层级深度
  • ❌ 实现复杂度高
  • ❌ 可能产生信息重复
  • ❌ 需要多层索引管理
  • 学术文献处理
  • 法律合同解析
4. 文档结构分块
  • ✅ 精准定位章节信息
  • ✅ 保持原始逻辑结构
  • ✅ 支持跨块引用
  • ❌ 依赖文档格式规范
  • ❌ 处理非结构化数据困难
  • ❌ 需要预解析规则
  • 技术手册处理
  • 论文解析系统
5. 基于 LLM 的分块
  • ✅ 理解深层语义意图
  • ✅ 动态生成最优块结构
  • ✅ 适配复杂任务
  • ❌ 推理延迟显著
  • ❌ API 调用成本高
  • ❌ 存在模型幻觉风险
  • 高精度问答系统
  • 跨文

RAGFlow 支持的切块方法

结合业务场景与文本特点选择合适分块策略是相对较好的方式,在 RAGFlow 中就支持多种分块的方法,下面表格展示了不同分块方法说明及其支持的文档格式

分块方法:

Template
Description
File format
General(通用)
支持的文件格式比较多,需要自己设置对应的分割方式,比较难以控制,需要配合自然语言处理模型才会有好的效果
DOCX、EXCEL、PPT、IMAGE、PDF、TXT、MD、JSON、EML、HTML, JPEG, JPG, PNG, TIF, GIF
Resume(简历)

DOCX、PDF、TXT
Q&A (问答)
问题描述及问题答案,比较适合做客服问答相关
EXCEL, CSV/TXT
Manual(手册)
会使用 OCR 分割文档
PDF
Table(表格形式文件

EXCEL, CSV/TXT
Paper(论文)

PDF
Book(书籍类型)

DOCX, PDF, TXT
Laws(律法相关)

DOCX, PDF, TXT
Presentation(演示文稿)

PDF, PPTX
Picture(图片)

JPEG, JPG, PNG, TIF, GIF
One(完整文件)
文件不会被切割,直接一个文件给到大模型,有很好的上下文,但是文件长度取决于配置的大模型支持的长度
DOCX, EXCEL, PDF, TXT
Tag(标签)
需要提前设置标签描述与标签,类似 Q&A,在上面的解析中,设置标库用,会自动匹配命中的块并增加标签
EXCEL, CSV/TXT

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">召回方式也很关键

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">虽然我们掌握了如何对文档进行分块,但对分块的数据召回也是很关键的步骤,怎么提升数据的召回准确率也是一项亟待解决的问题。

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">影响数据召回准确率的原因有很多,从单一方面很难甚至可以说根本无法解决这个问题,因此提升数据的准确性就需要从多个方面入手。

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">‌以下是目前主流的一些方式:

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">‌1. 混合检索方法‌同时执行向量检索(语义匹配)和全文检索(关键词匹配),通过线性加权或倒序融合(RRF)合并结果‌。 引入重排序模型(如BGE-Reranker),对多路召回结果二次排序,优先保留高相关片段‌。

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">‌2. 多路召回策略‌采用多模型并行检索(如BM25、DPR、Embedding模型),覆盖不同粒度的匹配需求‌。 对于复杂查询,将问题拆解为多个子查询,分别检索后合并结果‌。

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">‌3. 动态参数调整‌设置相似度阈值(如0.5-0.7),过滤低相关片段;根据业务反馈动态调整分块大小和召回数量‌

ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">在RAGFlow中已使用了上述的方法对数据进行召回增强,我们在使用的时候可以对相关参数进行调整验证,以达到更好的效果。







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5