Skip to content

1. 什么是检索增强生成(Retrieval-Augmented Generation, RAG)?它的优势是什么?

检索增强生成(Retrieval-Augmented Generation, RAG)是一种结合检索系统与生成模型的技术框架,它通过从外部知识库检索相关信息来增强大型语言模型的生成能力。

RAG的工作流程:

  • 查询处理:将用户输入转换为检索查询

  • 知识检索:从外部知识库中检索相关文档或信息片段

  • 上下文增强:将检索到的信息与原始查询一起作为上下文

  • 增强生成:语言模型基于增强的上下文生成回答

RAG的核心优势:

提高事实准确性:

  • 减少模型幻觉(hallucination)

  • 提供最新和专业的知识

  • 增强回答的可靠性和可信度

知识更新与扩展:

  • 无需重新训练即可更新知识

  • 突破模型知识截止日期的限制

  • 轻松扩展到专业领域知识

提高透明度和可解释性:

  • 可以提供信息来源和引用

  • 使用户能够验证回答的准确性

  • 增强决策支持的可靠性

降低计算成本:

  • 减少对超大模型的依赖

  • 较小的模型配合检索可达到较好效果

  • 降低部署和运行成本

私有数据整合:

  • 安全地整合企业专有信息

  • 保护敏感数据不被包含在模型参数中

  • 实现细粒度的访问控制

适应性和灵活性:

  • 可根据需求动态调整知识库

  • 支持多源、多模态信息整合

  • 适应不同领域和应用场景

RAG的主要挑战和改进方向:

  • 检索质量:提高相关文档的检索准确性和召回率

  • 上下文整合:有效处理和整合多个检索结果

  • 长文本处理:处理超出模型上下文窗口的长文档

  • 多跳推理:支持需要多步骤信息整合的复杂查询

  • 实时性能:减少检索延迟,提高响应速度

RAG的基本原理:

  • 检索 (Retrieval):根据用户的查询或问题,从预先构建的知识库或文档集合中检索相关的信息片段

  • 增强 (Augmentation):将检索到的相关信息与用户的原始查询结合,形成增强的上下文

  • 生成 (Generation):将增强后的上下文输入到大型语言模型中,生成最终的回答或内容

RAG的核心思想是"检索+生成",前者利用向量数据库的高效存储和检索能力召回目标知识,后者利用大模型和Prompt工程将召回的知识合理利用,生成准确的答案。

RAG已成为构建可靠AI应用的关键技术,特别适用于需要高度准确性、最新信息或专业知识的场景,如客户支持、研究助手、医疗咨询和法律顾问等。

举例类比记忆:

  • 检索增强生成类似于你去图书馆查阅资料,拿到相关书籍后,根据书籍内容和你的问题生成精准的答案。

易错提醒:

  • 忽略了检索质量对生成答案准确性的影响。

  • 未充分解释上下文整合时需要处理的复杂情况,尤其是在长文本和多跳推理的挑战中。

可能的延伸面试提问及应答建议:

  • 为什么RAG能减少模型幻觉?

    • 简答:RAG通过外部检索真实的知识数据来增强生成模型的上下文,避免模型生成没有根据的信息,减少幻觉现象。
  • RAG与传统生成模型有什么区别?

    • 简答:传统生成模型依赖内部训练数据进行推理,而RAG结合了外部检索信息,能够利用实时或领域特定的知识来生成更为准确的回答。
  • 如何提高RAG的实时性能?

    • 简答:可以通过优化检索过程、采用高效的向量存储和索引方法,以及使用快速的生成模型来减少检索和生成的延迟,提高响应速度。
  • RAG是否适用于所有类型的任务?

    • 简答:RAG非常适合需要事实准确性和最新信息的任务,如客户支持、法律咨询等,但对于一些不需要实时数据或知识库的应用,可能不需要这种增强生成技术。

2. RAG对于大模型来说有什么好处?

知识丰富性:

  • 能够从大量文档中检索相关信息,生成更加丰富和准确的内容。

  • 不受模型训练数据截止日期的限制,可以获取最新信息。

减少幻觉:

  • 通过引入真实世界的数据,减少模型生成不真实或错误信息的现象。

  • 提高生成内容的真实性和可靠性。

上下文扩展:

  • 大型语言模型通常受到上下文长度的限制。

  • RAG通过检索相关的外部信息,可以在不增加模型输入长度的前提下扩展可用的上下文信息。

提高效率:

  • 对于某些查询,不需要完全依赖模型的内部知识。

  • 通过检索现有信息来快速回答,提高模型的效率。

适应性和可定制性:

  • 可以根据不同的任务需求,检索特定领域或主题的信息。

  • 使模型更加适应特定的应用场景。

减少训练成本:

  • 对于特定问题,使用RAG可以减少模型需要记忆的信息量。

  • 模型可能不需要那么大,从而减少训练成本。

时效性:

  • 可以检索最新的信息,对于需要生成时间敏感内容的任务非常有用。

  • 解决了大模型知识截止日期的问题。

可解释性:

  • 检索的文档可以作为模型回答的来源依据,增强了可解释性。

  • 用户可以验证回答的准确性。

长文本处理:

  • 对于长文本处理,RAG可以帮助模型聚焦于文本中最相关的部分。

  • 不需要处理整个长文本。

多样性和新颖性:

  • 从多个来源检索信息,有助于模型生成更加多样化和新颖的内容。

3. RAG的主要工作流程是什么?

RAG的主要工作流程包括以下几个关键步骤:

数据准备阶段:

  1. 文档收集:收集相关领域的文档、知识库或数据源。

  2. 文档分块:将长文档切分成适当大小的文本块(chunks)。

  3. 向量化:使用嵌入模型(embedding model)将文本块转换为向量表示。

  4. 索引构建:将向量存储在向量数据库中,建立高效检索索引。

检索阶段:

  1. 查询处理:接收用户查询并转换为向量表示。

  2. 相似度搜索:在向量数据库中查找与查询向量最相似的文本块。

  3. 结果排序:根据相似度分数对检索结果进行排序。

  4. 过滤与重排:可能进行额外的过滤或重新排序,提高相关性。

生成阶段:

  1. 上下文构建:将检索到的文本块与原始查询组合成增强的提示(prompt)。

  2. 提示工程:设计有效的提示模板,指导大模型如何使用检索内容。

  3. 内容生成:将增强的提示输入大型语言模型,生成最终回答。

  4. 后处理:对生成的内容进行格式化、引用添加等处理。

优化与反馈阶段(高级RAG系统):

  1. 结果评估:评估生成内容的质量和相关性。

  2. 系统调优:基于评估结果调整检索参数或提示模板。

  3. 用户反馈:收集用户反馈以进一步改进系统。

这个工作流程可以根据具体应用场景和需求进行调整和扩展,例如添加多轮检索、查询重写、混合检索等高级技术。

4. RAG系统中的文档分块(Chunking)策略有哪些?如何选择合适的分块方式?

文档分块是RAG系统中的关键步骤,不同的分块策略会直接影响检索效果和生成质量。

常见的分块策略:

固定大小分块:

  • 按固定的字符数、词数或标记数进行分块

  • 优点:实现简单,计算开销小

  • 缺点:可能会切断语义完整的内容,影响理解

基于句子分块:

  • 以句子为基本单位进行分块

  • 优点:保持了基本的语义完整性

  • 缺点:句子长度差异大,可能导致块大小不均

基于段落分块:

  • 以段落为单位进行分块

  • 优点:保持了较完整的语义单元

  • 缺点:段落长度可能差异很大

基于语义分块:

  • 使用语义理解算法,根据内容的语义边界进行分块

  • 优点:保持语义完整性,提高检索质量

  • 缺点:实现复杂,计算开销大

递归分块:

  • 先进行大块分割,然后根据需要递归地进行更细粒度的分割

  • 优点:可以处理不同层次的内容结构

  • 缺点:实现复杂,需要更多的处理逻辑

滑动窗口分块:

  • 使用重叠的窗口进行分块,相邻块之间有一定的重叠部分

  • 优点:减少了信息在块边界处的丢失

  • 缺点:增加了存储和计算开销,可能有冗余

选择合适分块方式的考虑因素:

文档类型和结构:

  • 结构化文档(如论文、技术文档)适合基于章节或段落的分块

  • 非结构化文档可能需要更灵活的分块策略

查询特性:

  • 如果查询通常针对特定事实,较小的分块可能更合适

  • 如果查询需要综合理解,较大的分块可能更好

模型上下文窗口大小:

  • 分块大小应考虑大模型的上下文窗口限制

  • 太大的分块可能无法完全输入模型

检索精度要求:

  • 更精确的检索可能需要更小的分块

  • 需要更全面理解的场景可能需要更大的分块

计算资源限制:

  • 更复杂的分块策略需要更多的计算资源

  • 在资源有限的环境中可能需要简化策略

领域特性:

  • 不同领域的文本可能需要不同的分块策略

  • 例如,法律文档可能需要基于条款的分块

最佳实践:

最佳实践通常是结合多种策略,并通过实验确定最适合特定应用场景的分块方法。许多高级RAG系统会使用混合策略或自适应分块方法,根据内容特性动态调整分块大小和方式。

5. 如何评估RAG系统的检索结果的质量?有哪些常用的评估指标?

评估RAG系统检索结果的质量是确保系统有效性的关键步骤。以下是常用的评估方法和指标:

检索质量评估指标:

  • 精确率 (Precision):检索结果中相关文档的比例
    公式:相关检索文档数 / 总检索文档数
    衡量检索结果的准确性

  • 召回率 (Recall):成功检索到的相关文档占所有相关文档的比例
    公式:相关检索文档数 / 所有相关文档总数
    衡量检索的完整性

  • F1分数:精确率和召回率的调和平均数
    公式:2 * (精确率 * 召回率) / (精确率 + 召回率)
    平衡考虑精确率和召回率

  • 平均精度均值 (Mean Average Precision, MAP):对多个查询的平均精度的平均值
    考虑了检索结果的排序质量

  • 归一化折扣累积增益 (NDCG):考虑检索结果的相关性和排序位置
    对排名靠前的相关文档给予更高的权重,适用于评估排序质量

  • 检索准确率@K (Retrieval Accuracy@K):前K个检索结果中至少有一个相关文档的查询比例
    衡量检索系统在限定结果数量下的性能

  • 上下文精度 (Context Precision):检索的上下文中包含回答问题所需信息的比例
    特别适用于问答系统的评估

  • 语义相似度:使用嵌入模型计算检索结果与查询的语义相似度
    可以捕捉语义层面的相关性

评估方法:

  • 人工评估:专家审查检索结果的相关性和质量
    最准确但成本高、耗时长

  • 自动评估:使用预定义的相关性判断或黄金标准数据集
    可以大规模快速评估,但可能不如人工评估准确

  • 端到端评估:评估最终生成结果的质量,间接评估检索质量
    考虑了检索和生成的整体效果

  • A/B测试:比较不同检索策略在实际应用中的表现
    可以直接反映用户体验

  • 检索效率评估:评估检索速度和资源消耗
    在大规模应用中尤为重要

改进检索质量的策略:

  • 查询扩展或重写:扩展原始查询以包含相关术语,使用大模型重写查询以提高检索效果

  • 混合检索策略:结合关键词搜索和语义搜索,融合多种检索方法的结果

  • 重排序机制:对初步检索结果进行二次排序,使用更复杂的模型评估相关性

  • 用户反馈利用:收集用户对检索结果的反馈,使用反馈信息调整检索策略

在实际应用中,通常需要结合多种评估指标和方法,全面评估RAG系统的检索质量,并根据评估结果不断优化系统。

6. RAG系统中常用的向量数据库有哪些?它们各有什么特点?

RAG系统中的向量数据库是存储和检索文本嵌入向量的关键组件。以下是常用的向量数据库及其特点:

向量数据库及特点:

  • Faiss (Facebook AI Similarity Search)
    特点:Facebook开发的高性能向量搜索库,支持十亿级向量的高效相似性搜索,提供多种索引类型,如精确搜索和近似搜索,C++实现,有Python绑定
    优势:极高的搜索效率,适合大规模应用
    局限:主要是库而非完整数据库系统,持久化需额外实现

  • Pinecone
    特点:专为向量搜索设计的全托管云服务,提供实时更新和查询能力,支持元数据过滤和混合搜索,自动扩展以处理大规模数据
    优势:易于使用,无需维护,生产环境友好
    局限:作为SaaS服务,有使用成本,数据存储在第三方

  • Milvus
    特点:开源的向量数据库系统,支持多种索引类型和相似度计算方法,提供混合搜索(向量+标量),分布式架构,可水平扩展
    优势:功能全面,社区活跃,适合大规模部署
    局限:配置和维护相对复杂

  • Weaviate
    特点:开源的向量搜索引擎和知识图谱,支持语义搜索和GraphQL查询,内置多种向量索引方法,支持多模态数据(文本、图像等)
    优势:结合了知识图谱功能,查询灵活
    局限:学习曲线较陡,资源消耗较高

  • Chroma
    特点:专为RAG应用设计的开源嵌入式向量数据库,轻量级,易于集成,Python原生,适合快速开发,支持多种嵌入模型
    优势:简单易用,适合小型项目和原型开发
    局限:在大规模应用中性能可能受限

  • Qdrant
    特点:开源的向量相似度搜索引擎,支持实时过滤和复杂查询,提供REST API和各种语言客户端,支持向量集合的CRUD操作
    优势:查询灵活性高,性能优良
    局限:相比其他选项,社区规模较小

  • Elasticsearch with Vector Search
    特点:在成熟的Elasticsearch基础上添加向量搜索功能,结合全文搜索和向量搜索,丰富的生态系统和工具,支持复杂的聚合和分析
    优势:可利用现有Elasticsearch基础设施,功能丰富
    局限:在纯向量搜索性能上可能不如专用解决方案

  • pgvector (PostgreSQL扩展)
    特点:PostgreSQL的向量扩展,支持向量存储和相似度搜索,可与关系数据库功能结合,支持多种距离计算方法
    优势:与关系数据库集成,适合需要事务支持的应用
    局限:在大规模向量集上性能可能不如专用解决方案

选择向量数据库的考虑因素:

  • 规模需求:数据量和查询负载

  • 性能要求:查询延迟和吞吐量

  • 部署环境:云服务、本地部署或嵌入式

  • 集成需求:与现有系统的兼容性

  • 功能需求:元数据过滤、多模态支持等

  • 成本考虑:开源vs商业、维护成本

  • 安全和隐私:数据存储位置和访问控制

不同的应用场景可能需要不同的向量数据库解决方案,有时甚至需要组合使用多种技术来满足复杂需求。

7. RAG系统中常见的挑战有哪些?如何解决这些挑战?

RAG系统在实际应用中面临多种挑战,以下是常见挑战及其解决方案:

  1. 检索相关性挑战:

挑战:检索结果与用户查询不够相关,影响生成质量
解决方案:
查询重写:使用大模型重写和扩展原始查询
混合检索:结合关键词搜索和语义搜索的优势
多阶段检索:先广泛检索,再精细筛选
相关性反馈:利用用户反馈优化检索算法
上下文感知嵌入:使用考虑上下文的嵌入模型

  1. 知识时效性挑战:

挑战:知识库中的信息可能过时
解决方案:
定期更新:建立自动化流程定期更新知识库
时间戳元数据:为文档添加时间信息,优先检索最新内容
实时集成:与实时数据源集成,如新闻API
版本控制:维护知识库的历史版本,支持时间点查询

  1. 长文本处理挑战:

挑战:大模型的上下文窗口有限,无法处理过多检索结果
解决方案:
内容压缩:使用模型总结或提取检索内容的关键信息
分层检索:先检索相关文档,再检索文档内的相关段落
动态上下文管理:根据重要性动态调整包含的上下文内容
多轮检索:在对话过程中逐步引入相关信息

  1. 幻觉残留挑战:

挑战:即使有检索支持,模型仍可能产生幻觉
解决方案:
引用机制:要求模型明确引用检索内容的来源
事实验证:使用额外模型验证生成内容的事实准确性
不确定性表达:训练模型在不确定时明确表达不确定性
提示工程:设计专门减少幻觉的提示模板

  1. 领域适应性挑战:

挑战:通用RAG系统在特定领域表现不佳
解决方案:
领域特定嵌入:使用领域适应的嵌入模型
专业知识库:构建领域专业知识库
领域专家反馈:邀请专家评估和改进系统
领域术语处理:特别处理专业术语和缩写

  1. 计算效率挑战:

挑战:大规模RAG系统的计算和存储成本高
解决方案:
向量量化:使用向量压缩技术减少存储需求
分层索引:使用多层索引结构加速检索
缓存机制:缓存常见查询的检索结果
异步处理:将检索和生成过程异步化

  1. 隐私和安全挑战:

挑战:处理敏感信息时的隐私保护
解决方案:
访问控制:实施细粒度的文档访问权限
数据脱敏:在索引前对敏感信息进行脱敏处理
本地部署:敏感场景使用本地部署而非云服务
审计跟踪:记录所有检索和生成操作

  1. 多语言和跨语言挑战:

挑战:支持多语言查询和文档
解决方案:
多语言嵌入:使用支持多语言的嵌入模型
翻译桥接:在检索前后使用翻译服务
跨语言检索:实现跨语言的语义匹配
语言识别:自动检测查询语言并应用相应处理

  1. 评估和调优挑战:

挑战:难以客观评估RAG系统性能
解决方案:
多维度评估:同时评估检索质量和生成质量
人机结合评估:结合自动指标和人工评估
A/B测试:在实际应用中比较不同配置
持续监控:建立性能监控系统,及时发现问题

  1. 用户体验挑战:

挑战:用户可能对检索结果和生成过程缺乏理解
解决方案:
透明度设计:显示检索的来源和依据
交互式反馈:允许用户调整检索结果
结果解释:解释为什么提供特定信息
用户控制:给予用户对检索范围和深度的控制权

解决这些挑战通常需要综合应用多种技术和方法,并根据具体应用场景进行定制化调整。随着技术的发展,RAG系统也在不断演进,出现了如Self-RAG、Adaptive RAG等新型架构来应对这些挑战。


举例类比记忆

  • 可以将 RAG 系统类比为一个“智能图书管理员”。

    • 如果管理员找书不准(检索相关性差),你就会收到不相关的答案。

    • 如果图书过期(知识时效性问题),即使找到的书也可能没用。

    • 如果你一次给太多资料(长文本问题),读者也消化不了。

    • 即使查了书,讲解者有时仍可能说错(幻觉残留)。

    • 如果管理员不熟悉专业领域(领域适应性挑战),找的资料也不精确。

这种类比有助于理解每个问题都对应现实中的一个“管理缺陷”。


易错提醒

  • 回答中容易只讲“检索不准”和“幻觉”两个问题,而忽略 时效性、长文本、效率、隐私、多语言 等更全面的挑战,会显得不够系统。

  • 常见错误是将“检索”和“生成”混为一谈,没有指出两者都可能导致最终结果错误。

  • 回答过于工程化,容易忽略 用户体验挑战(例如透明度与交互),但面试官经常会问。

  • 容易忘记强调:RAG 的痛点不单是技术问题,还包含 评估难领域适配困难


延伸面试提问及应答建议


1. 为什么即使加入检索,RAG 系统仍会出现幻觉?

简答:
因为检索并不能完全约束生成模型的自由表达,模型可能基于经验模式补全信息。同时,检索内容不一定被完全使用,或检索内容本身不准确,也会导致幻觉。


2. 如何在不扩大上下文窗口的情况下处理长文档?

简答:
可以通过分层检索、内容压缩(例如摘要、提取关键句)、段落级检索等方式减少需要传入模型的文本量,同时保持信息的完整性。


3. RAG 与微调(Fine-tuning)相比,有哪些优劣?

简答:
RAG 更灵活、更新快、成本低,可以无需重新训练即可扩展知识。但在强结构化知识与专业推理场景下,微调可能比 RAG 更稳定。实际应用中经常将两者结合,例如:对大模型微调 + 档案级检索。


4. 如何评估一个 RAG 系统是否真正有效?

简答:
需要分层评估:

  • 检索相关性指标(如 Recall@K)

  • 生成质量指标(如 BLEU、ROUGE 或人工评审)

  • 用户体验指标(透明度、可控性)
    并结合在线 A/B 测试持续验证。

8. 什么是高级RAG技术?请介绍几种常见的高级RAG方法。

高级RAG技术是对基础RAG框架的扩展和优化,旨在解决传统RAG的局限性并提高系统性能。以下是几种常见的高级RAG方法:

1. 多阶段检索(Multi-stage Retrieval)

原理

将检索过程分为多个阶段,逐步细化和提高相关性

实现方式

  • 粗检索:使用高效但相对简单的方法(如BM25)快速筛选大量候选文档

  • 精检索:对初步筛选的结果使用更复杂的语义模型进行精确排序

  • 重排序:使用交叉编码器等模型对检索结果进行最终排序

优势

平衡检索效率与准确性,适合大规模知识库

2. 查询重写(Query Rewriting)

原理

使用大模型重写原始查询,使其更适合检索系统

实现方式

  • 扩展查询:添加相关术语和同义词

  • 分解复杂查询:将复杂问题拆成多个简单查询

  • 上下文感知重写:考虑对话历史进行重写

  • 多样化重写:生成多个不同角度的查询版本

优势

提高召回率,适应含糊或不完整查询

3. 混合检索(Hybrid Retrieval)

原理

结合多种检索方法的优势

实现方式

  • 关键词+语义混合检索

  • 多模型融合:结合多个嵌入模型

  • 加权组合:根据查询动态调整权重

优势

提高鲁棒性与覆盖面

4. 自适应检索(Adaptive Retrieval)

原理

根据查询特性和上下文动态调整检索策略

实现方式

  • 查询分类:识别查询类型映射到不同检索模式

  • 动态参数调整:例如动态调整k值

  • 反馈学习:从用户交互中优化策略

优势

根据查询提供定制化体验

5. Self-RAG

原理

模型对检索内容与生成内容进行自我评估

实现方式

  • 检索评估器:判断检索结果是否相关

  • 生成评估器:判断生成内容是否需外部知识

  • 自主决策:决定是否检索及如何使用检索结果

  • 反思机制:生成后自我校验、必要时重生成

优势

减少不必要检索,提高可靠性

6. 递归检索(Recursive Retrieval)

原理

基于初步生成结果进行二次、多次检索

实现方式

  • 生成-检索-生成循环

  • 知识图谱遍历

  • 深度探索策略

优势

适合复杂问题,获取更深入信息

7. 上下文压缩(Context Compression)

原理

在有限上下文窗口内压缩检索内容

实现方式

  • 提取式摘要

  • 生成式摘要

  • 信息蒸馏

优势

允许在有限窗口中容纳更多信息

8. 检索增强提示(Retrieval-Augmented Prompting)

原理

利用检索内容动态构建提示模板

实现方式

  • 示例检索:检索相似问答作为示例

  • 模板选择:按查询类型选择提示模板

  • 动态指令:根据检索结果动态调整指令

优势

提高对检索内容的利用效率

9. 多模态RAG

原理

扩展RAG至图像、视频、音频等模态

实现方式

  • 跨模态嵌入

  • 多模态索引

  • 模态转换

优势

适用于多媒体内容理解与生成

10. 对话式RAG

原理

为多轮对话优化检索逻辑

实现方式

  • 对话历史感知

  • 增量检索

  • 记忆机制

  • 主动检索

优势

提供更连贯的对话体验


举例类比记忆

  • 多阶段检索类似“机场安检”:先粗筛,再精筛,最后人工复核。

  • 查询重写类似“翻译官”:把模糊的问题翻译成检索系统能理解的关键词组合。

  • 混合检索像“两个老师一起批卷”:一个看关键词,一个看语义,最后综合得分。

  • Self-RAG类似“会自己检查作业的学生”:写完答案后会问自己是否需要查资料。

  • 上下文压缩像“把一本书的重点做成笔记”:保留关键信息,让模型能一次读完。


易错提醒

  • 只列举方法但不解释其原理、实现方式和适用场景,容易显得浅层。

  • 混淆多阶段检索与混合检索,两者关注点不同:一个是“分阶段”,一个是“多类型融合”。

  • 忽略 Self-RAG 的核心是“自主评估与反思”,而不是简单的再次检索。

  • 忽略上下文压缩与摘要的区别:前者是为适配模型窗口而优化结构,后者是信息提取。

  • 回答中只堆砌技术名词,不结合“为什么需要这些高级方法”,会降低说服力。


延伸面试提问及应答建议

1. 为什么需要多阶段检索,而不是直接使用向量检索?

示例答句

多阶段检索通过在粗检索阶段减少候选文档数量,使得后续的精检索可以使用计算更昂贵但更精确的模型,从而兼顾效率与准确性。

关键要点

  • 大规模知识库下计算成本高

  • 粗检索减少候选集

  • 精检索使用高质量模型

  • 整体延迟显著降低

回答模板

“在大规模场景下,单次精检索成本过高,因此需要先用轻量方法缩小候选范围,再用高精度模型精排,从而达到兼顾速度与质量的效果。”

可能追问

  • 什么时候不需要多阶段检索?
    应对建议:强调小规模库、延迟要求极高或设备资源受限场景。

2. Self-RAG 与递归检索的根本区别是什么?

示例答句

Self-RAG的核心是生成模型会评估检索是否必要并自我审查,而递归检索的重点是利用生成内容进行进一步检索,两者关注点不同。

关键要点

  • Self-RAG:自评、反思、决定是否检索

  • 递归检索:通过生成结果不断触发新检索

  • 一个偏“策略决策”,一个偏“流程深化”

回答模板

“Self-RAG侧重让模型自己决定是否需要检索,而递归检索则是利用生成结果继续检索信息,两者解决的痛点不同。”

可能追问

  • Self-RAG 会带来什么额外开销?
    应对建议:强调评估模型、策略模型的额外成本。

3. 上下文压缩如何避免丢失关键信息?

示例答句

通常通过提取式摘要、评分机制或重要性标注保留核心句子,同时结合生成式摘要进一步浓缩内容。

关键要点

  • 抽取+生成结合

  • 重要性评分机制

  • 面向模型窗口优化而非简单压缩

回答模板

“上下文压缩不是简单删除信息,而是结合抽取、评分和生成式摘要,确保核心信息得以保留。”

可能追问

  • 若压缩导致误导性上下文怎么办?
    应对建议:说明可加入人工校验或反思机制(Self-RAG)。

9. RAG与微调(Fine-tuning)相比有什么优势和劣势?在什么情况下应该选择RAG而非微调?

RAG和微调是增强大型语言模型能力的两种主要方法,各有优劣势。了解它们的差异可以帮助在不同场景下做出合适的选择。

RAG的优势:

知识更新灵活:

  • 只需更新外部知识库,无需重新训练模型

  • 可以快速适应新信息和变化的事实

实施成本低:

  • 不需要大量计算资源进行模型训练

  • 开发周期短,可以快速部署

透明度高:

  • 可以清楚地看到模型使用了哪些外部知识

  • 生成结果可以附带引用和来源

减少幻觉:

  • 通过提供外部事实依据,显著减少模型幻觉

  • 特别适合需要高准确性的应用

可扩展性好:

  • 知识库可以不断扩充,不受模型参数限制

  • 适合处理大量专业或领域特定知识

隐私保护:

  • 敏感信息可以保留在知识库中,不需要包含在训练数据中

  • 更容易实现访问控制和数据治理

RAG的劣势:

运行时开销:

  • 每次查询都需要进行检索操作,增加延迟

  • 需要维护额外的向量数据库基础设施

检索质量依赖:

  • 系统性能严重依赖检索质量

  • 如果检索失败,可能导致回答质量下降

上下文整合能力有限:

  • 模型可能难以有效整合多个检索片段

  • 对于需要深度推理的任务可能表现不佳

知识库维护成本:

  • 需要持续维护和更新知识库

  • 可能需要专门的数据管理流程

上下文窗口限制:

  • 受限于模型的上下文窗口大小

  • 无法一次处理过多的检索结果

微调的优势:

知识内化:

  • 知识直接编码到模型参数中

  • 无需外部检索即可访问信息

推理能力增强:

  • 可以提高模型在特定领域的推理和理解能力

  • 适合需要深度领域理解的任务

响应速度快:

  • 推理时无需额外检索步骤

  • 端到端延迟通常较低

行为一致性:

  • 可以训练模型遵循特定的回答风格和格式

  • 更容易控制输出的一致性

适合程序化任务:

  • 对于需要遵循特定流程的任务表现更好

  • 可以学习特定的解决问题模式

微调的劣势:

计算资源需求高:

  • 需要大量计算资源进行训练

  • 开发和迭代周期长

知识更新困难:

  • 更新知识需要重新训练模型

  • 难以适应快速变化的信息

容量限制:

  • 模型参数数量有限,无法存储无限知识

  • 新知识可能导致旧知识被遗忘

幻觉风险:

  • 模型可能会过度自信地生成错误信息

  • 难以提供明确的信息来源

数据需求:

  • 需要高质量的领域特定训练数据

  • 数据收集和标注成本高

应该选择RAG而非微调的情况:

知识频繁更新:

  • 当领域知识快速变化或需要实时更新时

  • 例如:新闻、市场数据、产品信息等

资源受限:

  • 当计算资源有限,无法支持大规模微调时

  • 适合小团队或预算有限的项目

需要高透明度:

  • 当需要明确知识来源和引用时

  • 例如:法律、医疗、学术等领域的应用

大量专业知识:

  • 当需要处理大量专业或领域特定知识时

  • 特别是这些知识难以全部包含在训练数据中

隐私和合规要求:

  • 当处理敏感信息且需要严格访问控制时

  • 适合金融、医疗等高度监管的行业

快速原型开发:

  • 当需要快速验证概念或构建原型时

  • 允许快速迭代和调整

混合知识需求:

  • 当应用需要结合通用知识和专业知识时

  • RAG可以补充模型已有的通用知识

长尾知识:

  • 当需要处理大量低频但重要的信息时

  • 这类信息在微调中可能因出现频率低而被忽略

在实践中,RAG和微调并不是互斥的选择,而是可以结合使用的互补技术。许多先进的系统会先对模型进行领域适应性微调,然后再结合RAG来处理具体的事实性知识,从而结合两种方法的优势。


举例类比记忆

  • RAG像“查字典”,随查随用,字典更新即可获得新知识,不需要重新学习。

  • 微调像“把知识背进脑子里”,记住之后查得更快,但更新内容需要重新学习。

易错提醒

  • 容易只对比效率与更新成本,而忽略两者在推理深度、行为一致性方面的差异。

  • 误以为RAG可完全替代微调,没有认识到RAG对检索质量高度依赖。

  • 回答时如果没有结合具体应用场景,容易显得抽象。

延伸面试提问及应答建议

  • RAG能否通过更好的检索技术减少对微调的需求?
    简答:可以在一定程度上减少,但无法完全替代。检索再好也无法让模型获得深度推理或流程化能力,而这些需要通过微调内化到参数中。

  • 在什么情况下,两者结合比单独采用一种方式效果更好?
    简答:当希望模型既具备领域推理能力(微调提供)又能实时访问最新知识(RAG提供)时,可以采用微调+RAG的混合方案,如企业知识助手或专业客服系统。

  • 检索不稳定时,RAG有哪些改进方式?
    简答:可以通过重写查询、增加检索多样性、改进向量化模型、使用分层检索等方式提升检索稳定性,从而保证生成质量。