尚学堂-掌柜智库RAG

1.1 掌柜智库RAG

1.1.1 基本概念

1.1.1.1 为什么大模型需要外挂(向量)知识库?

  • 解决 “知识时效性” 问题
  • 解决 “知识领域局限性” 问题
  • 解决 “事实准确性与幻觉” 问题
  • 降低 “模型训练 / 微调成本”

1.1.1.2 RAG工作流程

 

image

 

1.1.1.3 项目流程

 

image

 

image

 

 

1.1.1.4 项目核心

1)非结构化文档语义重建(PDF & 图片)

  • PDF 是排版格式,直接抽取会导致结构坍塌、图文割裂、断章
  • 版面语义重建:用 MinerU 等工具恢复标题、段落、表格、公式,输出标准 Markdown。
  • 图文联合解析:OCR + VLM 理解图表,转为可检索文本。
  • 结构校验:保证标题层级、段落归属、引用关系正确,减少语义漂移。
  • 目标:把 “展示型文档” 变成可计算、可检索的知识资产

2)语义自治切片

  • 固定长度切片会打断语义、破坏证据链
  • 按语义边界切分:以章节、段落、主题为界。
  • 动态块管理:长块拆分、短块合并,减少噪声(控制块大小)。
  • 上下文增强:设置 10%~20% 重叠(overlap),继承父标题,保证语义完整。
  • 目标:让每个 chunk 都是最小可解释知识单元

3)多路召回引擎

  • 单一向量检索存在语义盲区
  • 多路召回 = 多种检索方式并行(向量、关键词、稀疏向量等)。
  • 标准架构:多路召回 + 融合 + 重排序
  • 作用:提高召回率与鲁棒性,避免漏召回关键信息。

4)混合向量索引

  • 稠密向量(Dense):抓语义、同义、隐含关系。
  • 稀疏向量(Sparse):抓关键词、实体、精确匹配。
  • 混合检索 = 稠密 + 稀疏同时进行权重调配
  • 优势:语义广覆盖 + 关键词高精度,兼顾 “懂意思” 和 “查字面”。

5)重排序决策层

  • 初步召回(粗排)速度快,但精度不足、噪声多RRF
  • 重排序(Rerank):用专用模型对候选片段精细打分、重新排序。
  • 作用:过滤噪声、精选高相关证据,给 LLM 最优质上下文。
  • 直接决定答案准确性、 hallucination 控制、上限

1.1.2 索引准备阶段

1.1.2.1 怎么解析pdf?

1)使用langchain的UnstructuredPDFLoader,模型目标检测(YOLOX) + OCR文字识别(Tesseract

YOLOX:基于深度学习的实时目标检测模型。定位并分类 PDF 中的视觉元素(Text、Title、Table、Image 等),并确定坐标。

OCR:识别并转换为文字。

2)MinerU

MinerU是一款由上海人工智能实验室OpenDataLab团队开发的智能数据提取工具,尤其擅长处理PDF等复杂格式的文档。它的核心目标是高效地将文档转换为高质量、结构化的机器可读格式(如Markdown和JSON),为后续的数据分析、知识库构建或大模型训练提供支持。

1.1.2.2 扩展-关于以上两种解析pdf方法缺点对比以及如何选择

1)UnstructuredPDFLoader的核心问题:

  • 信息提取不完整:它主要是一个文本提取工具,在处理包含超链接、复杂表格、数学公式的文档时能力不足,常导致关键信息丢失。
  • 依赖环境复杂:作为封装工具,其正常运作严重依赖unstructured库及其底层组件(如pdfplumber、poppler),安装过程容易出现依赖缺失或版本冲突问题。

2)MinerU的局限性:

  • 部署与运行成本高:其基于深度学习的模型需要GPU以获得最佳性能,且安装部署比纯Python库复杂,对只想进行简单文本提取的用户来说门槛较高。
  • 处理扫描件时可能能力受限:对于纯图像格式的PDF,其OCR能力依赖于集成或额外的OCR引擎,并非其核心优势。

3)如何选择:

如果你的首要任务是构建RAG系统或处理简单文档,希望快速上手,应选择UnstructuredPDFLoader;如果你的核心需求是深度解析含复杂表格、公式、版面的专业文档,并追求极致精度,则应选择MinerU。

1.1.2.3 pdf解析存在哪些问题? 可以怎么优化?

1)问题:

  • 内容提取:扫描件/图片文字需OCR识别(可能出错);非嵌入字体、加密或损坏的文件会导致提取失败或乱码。
  • 结构还原:复杂多栏排版、表格、公式、页眉页脚/水印等,难以还原阅读顺序和逻辑层级。
  • 批量与性能:大量或超大文件处理耗时耗资源。
  • 格式标准化:不同来源PDF质量/格式各异,输出结构不一,难直接利用。

2)优化手段:

(1)选用专业工具:

  • MinerU等AI驱动工具:擅长解析复杂版面、表格、公式。
  • 多模态大模型(如GPT-4V):理解文档整体布局与内容。
  • 专用OCR引擎(如Tesseract):提高扫描件文字识别率。

(2)优化处理流程:

  • 分阶段处理:先做版面分析(识别区域),再分区域提取内容。
  • 规则与AI结合:用AI识别,再用规则(如靠近原则)校正顺序。
  • 文档预处理:合并、压缩、去水印以提升输入质量。

(3)强化集成与后处理:

  • 正则表达式、模板等后处理规则清洗和结构化数据。
  • 部署健壮的错误处理与重试机制,应对异常文件。

1.1.2.4 为什么需要对文本分块?

1)模型上下文窗口限制

嵌入/重排序模型:如 BGE-base-zh-v1.5 的上下文窗口为 512 token,若直接处理超过此长度的文本,会导致语义截断,生成的信息不够精确或者有所缺失。

 

image

image

 

LLM:目前主流大模型上下文长度支持超过32k,但更消耗资源

2)检索精度优化

提升相关性准确性:分块后,每个文本块的语义更集中,无关内容更少,向量相似度计算更精准,能够快速检索到与用户查询最相关的内容,减少误召回。

避免噪声干扰:长文本中可能包含与查询无关的噪声信息,分块可将噪声信息与核心信息分离,避免噪声“稀释”核心内容的权重,提升检索效果。

3)保持语义完整性

通过合理的分块策略(如 RecursiveCharacterTextSplitter 递归字符分块),可在拆分长文档的同时,保留文本的语义完整性,避免因切分导致的逻辑断裂,确保大模型能基于完整的证据生成连贯、准确的回答。

1.1.2.5 能不能介绍一下常见的文本分块方法?

文本分块方法需结合文档类型、语义特点和 RAG 场景选择,常见的 5 种分块方法如下,各有适配场景和优缺点:

1)固定长度分块(Fixed-Size Chunking)

核心逻辑:按照固定的字符数或 token 数(如 512 token)切分文本,设置固定的重叠长度(overlap),确保上下文连续性。

优点:实现简单、效率高,无需复杂逻辑,适合快速验证 RAG 流程。

缺点:易打断文本语义链路,破坏逻辑完整性,适合结构简单、语义连贯的短文本。

2)递归字符分块(Recursive Character Splitting)

核心逻辑:按层次化分隔符列表(如 \n\n、\n、.、, 等)进行递归切分,优先按大分隔符(段落分隔)切分,若块长度仍超标,再按小分隔符(句子分隔)切分,结合滑动窗口设置重叠。

优点:最大程度保留文本的自然语义边界,减少语义断裂,是目前最常用、适配性最广的分块方法(LangChain 中 RecursiveCharacterTextSplitter 为默认推荐)。

缺点:对分隔符不规范的文档(如无段落分隔的纯文本)效果较差。

3)基于模型的分块(Model-Based Chunking)

核心逻辑:两种主流思路,一是通过嵌入模型计算相邻句子的相似度,在语义发生突变(相似度低于阈值)的位置进行切分;二是通过主题模型(如 LDA)对文本进行主题聚类,按主题划分文本块。

优点:语义划分更精准,能够根据文本内容动态确定切分边界,适合复杂语义、多主题的长文档。

缺点:计算成本高,效率低于传统分块方法,对模型性能有一定要求。

假设长文本拆分后有 3 句话:

马年新款手机搭载了高清摄像头。

该摄像头支持夜景模式,拍照更清晰。

这款手机的电池容量为 5000mAh。

用 BGE 模型生成 3 个句子的向量,计算相似度:1 和 2 的相似度是 0.82(≥0.65),2 和 3 的相似度是 0.43(<0.65);切分结果:[1+2] 合并成一个块(语义连贯,都讲摄像头),[3] 单独成一个块(语义突变,讲电池)。

选择嵌入模型(推荐实操款):优先选 BGE-base-zh-v1.5(中文适配)、Sentence-BERT(多语言),轻量且语义精度足够,不用选太复杂的模型。

用主题模型对文本聚类,推荐模型:LDA(Latent Dirichlet Allocation,经典主题模型)优势:开源成熟,无需标注数据,可自主设定主题数量,适配长文本、多主题文档,是主题分块的基础模型,易上手部署。

适配场景:通用领域多主题长文档(如行业报告、论文),对主题划分精度要求适中的场景。

BERTopic(进阶推荐,高精度)优势:结合 BERT 嵌入与 LDA 聚类,主题划分更精准,能自动识别主题关键词,支持动态调整主题数量,适配复杂语义、多细分主题的文档。适配场景:专业领域长文档(如医疗、金融论文)、多细分主题的复杂文本,对主题分块精度要求高的场景。

4)小-大分块(Small-Large Chunking)

核心逻辑:维护两套向量数据库,一套按句子粒度切分(小块),用于精准匹配用户查询;另一套按段落粒度切分(大块),用于保留完整语义。检索时,先通过小块检索定位相关句子,再通过句子关联到对应的大块,获取完整上下文。

优点:兼顾检索精度和语义完整性,适合长文档、多段落的复杂场景。

缺点:架构复杂,维护成本高,需要额外处理小块与大块的关联关系。

5)基于 LLM 分块(LLM-Based Chunking)

核心逻辑:利用 LLM Agent 模拟人类的阅读理解过程,输入文本后,让 LLM 动态判断语义边界,自主决定分块大小和切分位置,生成符合语义的文本块。

优点:语义划分最精准,能够处理复杂结构、多领域的专业文档,适配性极强。

缺点:成本高,需频繁调用 LLM,效率低,不适合批量处理大量文档。

注:加载文档时,使用 Unstructured 库(包括 LangChain 的封装版本),已可感知文本的层次结构(如标题、段落),因此不再单独讨论“按照文档结构分块”的方法。

1.1.2.6 常用向量数据库介绍

https://milvus.io/docs/zh/comparison.md (比较说明)

Milvus:专为AI设计的云原生开源向量数据库,功能全面,从轻量级到企业级一应俱全,尤其擅长处理十亿级大规模数据。

Pinecone完全托管、无需运维的向量数据库,提供最简单的API,能让你最快地构建和上线应用。

Weaviate模块化设计的AI原生数据库,内置强大的向量与关键词混合检索能力,并支持多租户。

PGvectorPostgreSQL的扩展插件,让你能在熟悉的SQL生态中直接进行向量搜索,集成成本最低。

FaissFacebook推出的高性能向量检索库(非数据库),在纯向量相似性搜索上速度极快。

Elasticsearch传统的全文搜索引擎巨头,通过扩展插件支持向量检索,擅长处理文本与向量的混合查询。

一般轻量级可以使用 Milvus Lite和  PGvector进行快速验证,企业级RAG一般使用Milvus居多。传统搜索引擎一般用的是Elasticsearch。

 

1.1.3 高级RAG优化

1.1.3.1 针对通用的RAG,你觉得还有哪些改进点?

1)检索前:

  • 文本切块:选择合适的切分策略(递归字符切分+合适的chunk_size\chunnk_overlap)
  • 查询重述:query 的纠错、改写,规范化和扩展(多查询)
  • query和检索答案语义偏差较大,使用HyDE

2)检索时:

  • 混合检索(关键词检索+向量检索)

3)检索后:

  • 如果有多个检索器或多次检索,使用rrf算法重排
  • 检索结果进行rerank(bge-rerank或者qwen3-rerank),按照查询和结果的语义评分排序

4)缓存加速:对query的Embedding结果缓存、对检索结果缓存

1.1.3.2 RAG 如何提升索引数据的质量?

索引数据的质量直接决定 RAG 系统的检索和生成效果,核心是做好“数据清洗与标准化”,从源头提升数据质量,具体措施如下:

  1. 基础数据清洗:对采集到的文档进行去重(避免重复数据占用资源、影响检索精度)、去除特殊字符(如乱码、多余符号、无关标记)、过滤无效信息(如空白段落、广告内容),确保数据的纯净度。
  2. 实体对齐与歧义消解:对文档中的多义词、同名实体进行处理,比如“苹果”需标注为“水果苹果”或“苹果公司”,“Java”需标注为“编程语言 Java”或“岛屿 Java”,避免检索时出现歧义,提升检索准确性。
  3. 语义标准化:对文档中的专业术语、缩写进行统一(如“AI”统一为“人工智能”),对口语化、不规范的表述进行规范化,确保文本语义清晰、统一,提升向量嵌入的准确性。
  4. 结构标准化:通过文档解析和语义重建,将不同格式的文档(PDF、Word、网页)转换为统一的结构化格式(如 Markdown),确保文本块的语义完整性和结构一致性,便于后续分块和检索。
  5. 数据更新与维护:定期清理过期数据、补充最新数据,建立数据质量校验机制,对新增数据进行质量检测,确保索引数据的时效性和准确性。

1.1.3.3 查询重述(QueryTransformations)

查询重述(Query Transformations)是 RAG 检索前的关键优化步骤,核心解决“用户 Query 表述不规范、语义模糊”导致的检索精度低问题,具体说明如下:

  1. 核心背景:在实际应用场景中,用户输入的 Query 可能存在表述不清、口语化、内容无关、语义模糊等问题(如“咋查明天的温度”“苹果咋样”),直接用原始 Query 进行检索,易出现漏召回、误召回,影响检索效果。
  2. 核心逻辑:利用 LLM 的强大语义理解能力,将原始用户问题转换或重写为更合适、更规范、更能准确反映用户真实需求的查询,让检索系统更精准地捕捉用户意图。

常见的查询重述方式:

  1. 规范化重述:将口语化 Query 转为标准化表述(如“咋查明天的温度”→“查询明日当地气温”)。
  2. 纠错重述:修正 Query 中的错别字、语法错误(如“查一下今田天气”→“查询今天天气”)。
  3. 扩展重述:对 Query 进行语义扩展,补充相关关键词(如“苹果”→“苹果公司 最新产品”),提升检索全面性。
  4. 多查询生成:从不同角度生成多个与原始 Query 相关的查询(如“推荐手机”→“推荐性价比高的手机”“推荐拍照好的手机”),用于多路召回或 RAG Fusion,提升召回率。
  5. 核心价值:通过查询重述,缩小用户 Query 与索引数据之间的语义鸿沟,提升检索的召回率和精度,为后续的重排序和生成阶段提供高质量的候选证据。

1.1.3.4 如何通过 混合检索 提升 RAG 效果?

混合检索是解决“单一检索方式局限性”的核心策略,通过“稠密向量 + 稀疏向量”的协同检索,兼顾语义理解和精确匹配,具体实现方式和优势如下:

  1. 核心实现:采用“向量相似度检索(稠密向量)+ 关键词检索(BM25 等稀疏向量)”的混合方案,并行执行两种检索方式,获取各自的候选证据列表。
  2. 融合策略:对两种检索结果进行融合,常用 RRF(逆向排名融合)算法,核心逻辑是“一个文档如果在多种检索方式中都排在靠前位置,说明其相关性更高,应在最终排名中获得更高权重”,通过算法计算综合排名,避免单路检索结果“劫持”最终结果。
  3. 核心优势:

弥补单一检索的盲区:向量检索擅长语义理解,但可能遗漏关键词匹配的内容;关键词检索擅长精确匹配,但无法捕捉语义相关的内容,混合检索可兼顾两者优势。

提升检索精度和召回率:既保证关键词匹配的精准性,又具备语义检索的全面性,让检索结果既准又全,提升 RAG 系统的整体效果。

  1. 实操建议:根据场景调整两种检索方式的权重,比如专业领域场景(如法律、医疗),可提高关键词检索的权重,确保实体、术语的精确匹配;通用场景可提高向量检索的权重,提升语义泛化能力。

1.1.3.5 如何通过重新排名提升RAG效果?

重新排名(Rerank)是 RAG 检索后的核心优化步骤,核心解决“初步召回精度不足、噪声多”的问题,通过精细打分筛选高相关证据,具体实现和价值如下:

  1. 核心痛点:向量数据库的相似度评分(如余弦相似度)本质是向量空间的距离匹配,只能反映 Query 与文本块的表面向量相似性,无法解决“语义匹配偏差”和“复杂意图理解”问题,导致初步召回的候选证据中混入大量低相关噪声。
  2. 实现方式:使用专用的重排序模型(如 BGE-Reranker-base、Qwen3-Rerank、Cross-BERT 等),对初步检索到的候选证据进行二次语义相关性打分,按照打分结果重新排序,筛选出 Top-K 高相关证据。
  3. 重排序模型的优势:专用重排序模型基于深层语义理解,能够捕捉 Query 与文本块的内在语义关联,比传统的向量相似度评分更精准,可有效区分“表面相似”和“语义相关”的内容。
  4. 核心价值:过滤低相关噪声,精选高置信证据,为 LLM 提供最优质的上下文,直接提升最终回答的准确性、连贯性,降低幻觉概率,是提升 RAG 效果的关键一步。
  5. 实操建议:初步召回时可多捞取候选证据(如 Top-50),再通过重排序筛选出 Top-5~Top-10 高相关证据,既保证召回率,又提升精度,同时控制 LLM 上下文窗口占用。

1.1.3.6 什么是RAG Fusion多查询 + 多检索 + 融合重排?工作流程?

多查询+RRF(逆向排名融合算法)+按评分重排序

 

image

 

1.1.3.7 为什么RAG Fusion需要生成多个查询?

单一查询可能无法完全捕捉用户感兴趣的全部范围,或者可能过于狭窄而无法产生全面的结果。

从不同角度生成多个查询,不仅与原始查询相似,还提供不同的视角或角度。

1.1.3.8 RAG Fusion为什么使用RRF

RRF是一种将多个搜索结果列表的排名结合起来产生单一统一排名的技术。

核心思想:一个文档如果在多个检索方法中都排在靠前的位置,那么它应该在最终的融合排名中获得更高的权重。

 

结合不同查询的排名,增加了最相关文档出现在最终列表顶部的机会。

1.1.3.9 介绍一下HYDE思路?

HyDE解决检索阶段可能遇到的 “查询 - 文档” 语义鸿沟问题。

(1)使用 LLM 根据查询先生成假设性文档

(2)再使用文档(嵌入成向量)去进行检索。

1.1.3.10 介绍一下HYDE问题?

假答案质量依赖 LLM 能力,易引入噪声。(如果是专业领域知识,LLM还需要经过领域知识微调)

需要额外调用 LLM 生成假答案,增加系统开销。

1.1.4 评估

1.1.4.1 如何评价 RAG项目效果的好坏?

评 RAG 项目效果需从检索效果、生成效果、端到端效果三个核心维度综合考量,结合量化指标、定性评估及场景适配性,构建全面、科学的评估体系,三个核心维度具体说明如下:

  1. 检索效果:核心衡量“能否精准、全面找到与用户查询相关的知识库内容”,是 RAG 效果的基础,直接影响后续生成质量。
  2. 生成效果:核心衡量“大模型结合检索到的证据,能否生成准确、连贯、贴合需求的回答”,重点关注答案的事实正确性和实用性。
  3. 端到端效果:核心衡量“从用户输入查询到获取最终回答的全流程体验”,包括响应速度、回答的可解释性、是否符合业务场景需求等。

具评估方式采用“人工评估+指标评估”相结合的模式,两者互补,确保评估结果贴合业务、精准可信,具体细节如下:

人工评估:主要由业务部门、运营人员负责,结合实际业务场景判断效果,核心评估点包括:回答是否符合业务需求、是否解决用户实际问题、语言表达是否流畅易懂、是否存在明显幻觉或错误。

指标评估:通过 benchmark 运行量化指标,可借助开源框架 Ragas 高效完成指标测算与评估,核心关注两类指标:一是检索类指标(如召回率、精确率、MRR 等,衡量检索的精准度和全面性);二是生成类指标(如事实准确性、相关性、流畅度等,衡量生成回答的质量)。

参考:https://developer.aliyun.com/article/1490294  【Ragas】

参考:https://github.com/vibrantlabsai/ragas 【github地址】

1.1.4.2 RAG有哪些关键评估指标和能力”

记住指标名,文本说明用于理解。

1)关键指标:

(1)检索阶段

  1. 上下文召回率(Context Recall):检索到的相关上下文,占所有相关上下文的比例(理解:衡量检索的全面性,是否能把所有相关内容都找到)。
  2. 上下文相关性(Context Relevance):检索到的上下文与用户Query的相关程度(理解:衡量检索的针对性,避免检索无关内容)。
  3. 上下文精确度(Context Precision):检索内容中,相关信息所占的比例(理解:衡量检索的精准度,减少无关噪声干扰)。

(2)生成阶段

  1. 答案真实性(Groundedness):生成内容是否有检索到的上下文支撑,是否存在臆造、幻觉(理解:避免大模型“无中生有”,确保回答有依据)
  2. 答案相关性(Answer Relevance):生成内容与用户问题的相关性(理解:确保回答紧扣问题,不偏离用户需求)。
  3. 忠诚度(Faithfulness):生成内容与上下文的一致性,是否存在曲解(理解:确保回答不篡改、不歪曲检索到的原始信息)。

2)关键能力:

  1. 抗噪声能力(Noise Robustness):评估模型处理与问题相关但缺乏实质性信息的噪声文档的能力(理解:过滤无效噪声,不被无意义信息干扰)。
  2. 负向拒绝(Negative Rejection):评估模型在检索到的文档不包含回答问题所需知识时,拒绝回答的能力(理解:不会强行臆造答案,保证回答的可信度)。
  3. 信息整合(Information Integration):评估模型从多个文档中综合信息,以回答复杂问题的能力(理解:能整合多份相关信息,解决单一文档无法回答的复杂问题)。
  4. 反事实鲁棒性(Counterfactual Robustness):评估模型识别并忽略文档中已知错误的能力(理解:能区分文档中的错误信息,避免生成错误回答)。
posted @ 2026-06-15 19:28  quyf  阅读(67)  评论(0)    收藏  举报