尚硅谷大模型技术之高频面试题
版本:V2.1.9
核心技术 / RAG

RAG

21 个问题

基本概念#

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

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

QRAG工作流程#

索引阶段#

Q怎么解析pdf?#

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

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

OCR:识别并转换为文字。

MinerU#

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

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

UnstructuredPDFLoader的核心问题:#
  • 信息提取不完整:它主要是一个文本提取工具,在处理包含超链接、复杂表格、数学公式的文档时能力不足,常导致关键信息丢失。
  • 依赖环境复杂:作为封装工具,其正常运作严重依赖unstructured库及其底层组件(如pdfplumber、poppler),安装过程容易出现依赖缺失或版本冲突问题。
MinerU的局限性:#
  • 部署与运行成本高:其基于深度学习的模型需要GPU以获得最佳性能,且安装部署比纯Python库复杂,对只想进行简单文本提取的用户来说门槛较高。
  • 处理扫描件时可能能力受限:对于纯图像格式的PDF,其OCR能力依赖于集成或额外的OCR引擎,并非其核心优势。
如何选择:#

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

Qpdf解析存在哪些问题? 可以怎么优化?#

问题:#
  • 内容提取:扫描件/图片文字需OCR识别(可能出错);非嵌入字体、加密或损坏的文件会导致提取失败或乱码。
  • 结构还原:复杂多栏排版、表格、公式、页眉页脚/水印等,难以还原阅读顺序和逻辑层级。
  • 批量与性能:大量或超大文件处理耗时耗资源。
  • 格式标准化:不同来源PDF质量/格式各异,输出结构不一,难直接利用。
优化手段:#
选用专业工具:#
  • MinerU等AI驱动工具:擅长解析复杂版面、表格、公式。
  • 多模态大模型(如GPT-4V):理解文档整体布局与内容。
  • 专用OCR引擎(如Tesseract):提高扫描件文字识别率。
优化处理流程:#
  • 分阶段处理:先做版面分析(识别区域),再分区域提取内容。
  • 规则与AI结合:用AI识别,再用规则(如靠近原则)校正顺序。
  • 文档预处理:合并、压缩、去水印以提升输入质量。
强化集成与后处理:#
  • 用正则表达式、模板等后处理规则清洗和结构化数据。
  • 部署健壮的错误处理与重试机制,应对异常文件。

Q为什么需要对文本分块?#

模型上下文窗口限制#

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

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

检索精度优化#

提高检索相关性的准确性(更少的无关内容,向量相似度计算更精准)

避免噪声信息干扰(无关内容会"稀释"相关内容的权重,影响检索效果)

保持语义完整性#

通过合理的分块策略(如RecursiveCharacterTextSplitter),可以在保持语义完整性的前提下将长文档切分为合适大小的块。

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

固定长度分块:固定字符数 chunk_size 切分文本。

递归字符分块:按层次化分隔符列表进行递归切分,结合滑动窗口。

基于模型的分块:在语义发生突变(相似度低)的位置进行切分,或主题模型(如LDA)按主题划分。

小-大分块:维护两套向量数据库。一个按照句子粒度切块,一个按照段落粒度切块。检索时:query->句子,句子-》段落。

基于LLM分块:利用一个LLM Agent来模拟人类的阅读理解过程,动态决定分块边界。

注:加载文档时,用Unstructured库(包括langchain的封装),已可感知文本层次结构,所以不讨论按照文档结构分块。

Q常用向量数据库介绍#

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

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

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

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

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

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

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

高级RAG优化#

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

检索前:#
  • 文本切块:选择合适的切分策略(递归字符切分+合适的chunk_size\chunnk_overlap)
  • 查询重述:query 的纠错、改写,规范化和扩展(多查询)
  • query和检索答案语义偏差较大,使用HyDE
检索时:#
  • 混合检索(关键词检索+向量检索)
检索后:#
  • 如果有多个检索器或多次检索,使用rrf算法重排
  • 检索结果进行rerank(bge-rerank或者qwen3-rerank),按照查询和结果的语义评分排序
缓存加速:对query的Embedding结果缓存、对检索结果缓存#

QRAG 如何提升索引数据的质量?#

做好数据清洗:

去重、去除特殊字符。

实体对齐、歧义消解(对多义词进行上下文标注,如 “苹果” 标注为 “水果” 或 “公司”)。

Q查询重述(QueryTransformations)#

在某些情况下,用户的 query 可能出现表述不清、口语化、内容无关等问题。

利用LLM的强大能力,将原始的用户问题转换或重写为更合适的、能够更准确地返回所需结果的查询。

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

向量相似度检索+关键词检索(BM25)。

对两种检索结果进行rrf重排。

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

向量数据库的相似度评分(如余弦相似度)本质是向量空间的距离匹配,但无法解决 “语义匹配偏差” 和 “复杂意图理解” 问题。

使用rerank模型(如bge-reranker-base) 模型来对检索结果进行语义相关性评分,按照评分重新排序。

Q什么是RAG Fusion?工作流程?#

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

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

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

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

QRAG Fusion为什么使用RRF#

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

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

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

Q介绍一下HYDE思路?#

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

使用 LLM 根据查询先生成假设性文档#
再使用文档(嵌入成向量)去进行检索。#

Q介绍一下HYDE问题?#

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

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

评估#

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

从检索效果、生成效果、端到端效果三个核心维度综合衡量,结合量化指标、定性评估和场景适配性,形成完整的评估体系。

方式:人工评估(业务部门、运营人员)+指标评估(benchmark跑量化指标,使用开源框架Ragas):

QRAG有哪些关键评估指标和能力”#

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

关键指标:#
检索阶段:#

上下文召回率(Context Recall): 检索到的相关上下文占所有相关上下文的比例

上下文相关性(Context Relevance): 检索到的上下文与用户Query的相关程度

上下文精确度(Context Precision): 检索内容中相关信息的比例

生成阶段:#

答案真实性(Groundedness):生成内容是否有上下文支撑,是否存在臆造

答案相关性(Answer Relevance):生成内容与问题的相关性

忠诚度(Faithfulness):生成内容与上下文的一致性,是否存在曲解。

关键能力:#

抗噪声能力(Noise Robustness):评估模型处理与问题相关但缺乏实质性信息的噪声文档的能力。

负向拒绝(Negative Rejection):评估模型在检索到的文档不包含回答问题所需知识时拒绝回答的能力。

信息整合(Information Integration):评估模型从多个文档中综合信息以回答复杂问题的能力。

反事实鲁棒性(Counterfactual Robustness):评估模型识别并忽略文档中已知错误的能力。

Q什么是评估框架RAGAS#

Ragas 是一个开源的、用于评估 RAG 系统质量的端到端评估框架,使用基于 LLM 和传统指标精确评估 RAG 系统中的检索质量、生成质量以及二者之间的耦合关系。