RAG 技术详解:从检索增强生成到企业级知识库系统

举报
yd_259694738 发表于 2026/11/06 23:43:24 2026/11/06
【摘要】 RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索与大语言模型生成能力相结合的技术架构。它的核心思想是:在大语言模型回答问题之前,先从外部知识库中检索相关信息,再将检索结果作为上下文提供给模型,从而生成更加准确、可靠的回答。

一、什么是 RAG?

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索与大语言模型生成能力相结合的技术架构。它的核心思想是:在大语言模型回答问题之前,先从外部知识库中检索相关信息,再将检索结果作为上下文提供给模型,从而生成更加准确、可靠的回答。

传统的大语言模型主要依赖预训练阶段学习到的参数化知识。这种方式存在几个明显的问题:

  1. 知识时效性不足:模型无法天然感知训练数据之后发生的事件。
  2. 专业知识有限:模型可能缺乏企业内部文档、行业资料等私有知识。
  3. 幻觉问题:当模型缺乏可靠依据时,可能生成看似合理但实际错误的内容。
  4. 知识更新成本高:通过重新训练或微调更新模型知识,通常需要较高的计算和数据成本。

RAG 通过引入外部知识检索机制,将模型自身的语言理解与生成能力和外部知识库结合起来,不需要频繁修改模型参数,就能够让模型使用最新的、特定领域的知识。

二、RAG 的整体架构

一个典型的 RAG 系统可以划分为两个主要阶段:离线知识库构建和在线检索生成。

1. 离线阶段:知识库构建

离线阶段负责将原始数据转换为可以检索的知识表示。

主要流程如下:

  • 数据采集:获取 PDF、Word、Markdown、网页、数据库等不同来源的数据。
  • 数据解析:提取文本内容,处理表格、图片、标题和文档结构。
  • 文本切分(Chunking):将长文档切分成适当大小的文本片段。
  • 向量化(Embedding):通过 Embedding 模型将文本转换为高维向量。
  • 数据存储:将文本、向量以及相关 Metadata 保存到向量数据库中。

其中,文本切分和 Embedding 是影响检索效果的两个重要环节。

如果 Chunk 过大,可能引入大量无关信息;如果 Chunk 过小,又可能破坏原始语义的完整性。因此,需要根据文档类型、内容结构和具体业务选择合适的切分策略。

2. 在线阶段:检索增强生成

在线阶段负责接收用户问题,并利用知识库辅助模型回答。

典型流程如下:

  1. Query Embedding:将用户问题转换为向量。
  2. 向量检索:在向量数据库中寻找与问题语义相似的文本片段。
  3. 结果排序(Rerank):利用重排序模型对候选文档进行相关性评分。
  4. Prompt 构建:将用户问题和检索到的上下文组合成 Prompt。
  5. LLM 生成:将构建好的 Prompt 输入大语言模型,生成最终答案。

整个过程可以概括为:

用户提问 → 问题向量化 → 知识检索 → 结果重排序 → 上下文构建 → LLM 生成 → 最终回答。

三、RAG 的核心技术

1. Embedding:文本向量化

Embedding 是将文本映射到高维向量空间的过程。语义相近的文本通常具有较高的向量相似度。

例如:

  • 用户问题:如何申请公司的年假?
  • 知识库内容:员工年度带薪休假申请流程。

虽然两段文本使用的词语不同,但它们表达的语义相近,因此有机会通过向量检索匹配成功。

常见的相似度计算方式包括:

  • 余弦相似度(Cosine Similarity)
  • 点积(Dot Product)
  • 欧氏距离(Euclidean Distance)

Embedding 模型的选择需要结合语言类型、领域知识、向量维度以及检索效果进行评估。

2. 向量数据库

向量数据库主要负责存储和检索文本向量,同时保存原始文本及其 Metadata。

常见方案包括:

  • Milvus:面向大规模向量数据的开源向量数据库。
  • Qdrant:支持向量检索和丰富的 Metadata 过滤能力。
  • Weaviate:提供向量搜索和混合检索等能力。
  • Chroma:适合轻量级应用和开发测试。
  • FAISS:由 Meta 开源的向量检索库,并非完整的数据库系统。

向量数据库通常通过 HNSW、IVF 等近似最近邻(ANN)索引算法提高检索效率,在检索速度和召回率之间取得平衡。

3. Hybrid Search:混合检索

单纯依赖向量检索并不能解决所有问题。

例如,用户询问:

“Qwen3-8B 模型的最大上下文长度是多少?”

这类问题包含具体的模型名称和数字标识。向量检索可能无法准确匹配这些关键词。

因此,实际系统通常结合:

  • 向量检索:关注语义相似度,适合自然语言表达。
  • 关键词检索:例如 BM25,关注词项匹配,适合专有名词、编号和精确关键词。

将两种检索方式结合,可以提升不同类型问题的召回能力。常见的融合方式包括 RRF(Reciprocal Rank Fusion,倒数排名融合)。

4. Rerank:重排序

初始检索的目标是尽可能召回相关文档,但召回结果不一定按照真正的相关性排列。

Rerank 通常采用 Cross-Encoder 架构,对用户问题和候选文本进行联合编码,输出相关性分数。

例如,初始检索返回 Top 20 文档,经过 Rerank 后,重新选取最相关的 Top 5 文档进入上下文。

这种方式能够进一步改善检索结果的精确性,但也会增加一定的计算延迟。

四、如何优化 RAG 系统?

在实际项目中,RAG 的效果并不完全取决于模型本身,数据处理、检索策略和上下文构建同样重要。

以下是几种常见的优化方向:

1. 优化文本切分策略

根据文档结构进行切分,而不是简单按照固定字符数截断。可以结合标题、段落、语义边界进行切分,并使用适当的 Chunk Overlap 保留上下文联系。

2. Query 改写

用户的问题可能存在表达不完整、指代不明确等情况。可以先利用 LLM 对问题进行改写、扩展关键词,或者将复杂问题拆分成多个子问题,再分别检索。

3. Metadata 过滤

在检索时加入文档类型、部门、时间、权限等 Metadata 条件,缩小检索范围。例如,查询财务制度时,可以优先检索财务部门相关文档。

需要注意,权限过滤应在检索层可靠执行,不能仅依赖 Prompt 要求模型忽略无权访问的信息。

4. 父子文档检索

将文档切分为较小的子 Chunk 用于精准检索,同时保留较大的父级文档作为生成上下文。这样既能提高匹配精度,也能避免上下文过于碎片化。

5. 自适应检索

并不是所有问题都需要进行知识库检索。可以通过问题分类或检索置信度判断是否需要检索、是否需要二次检索,以及是否应该直接拒绝回答。

五、RAG 系统如何评估?

RAG 是一个由检索和生成组成的复合系统,因此不能只依赖最终答案的主观质量进行评估。

通常可以从三个维度考虑:

评估维度 核心指标 评估目标
检索质量 Recall@K、Precision@K、MRR、NDCG 判断相关知识是否被召回
生成质量 Faithfulness、Answer Relevance 判断答案是否忠于上下文、是否切合问题
系统性能 Latency、吞吐量、Token 成本 衡量系统的响应速度和运行成本

其中,Recall@K 衡量前 K 个检索结果中是否包含目标相关文档;Faithfulness 则关注生成答案是否能够从检索到的上下文中得到支持。

在实际项目中,建议构建固定的测试数据集,分别评估检索模块、生成模块和端到端链路,避免出现检索效果差却通过调整 Prompt 掩盖问题的情况。

六、总结

RAG 并不是简单地将向量数据库连接到大语言模型,而是一套包含数据处理、文本切分、向量化、检索、排序和生成的完整工程体系。

从实际落地来看,RAG 的核心竞争力往往不在于使用了哪一个大模型,而在于能否构建高质量的知识数据、设计合理的检索策略,并通过持续评估优化整个链路。

随着 Agent 技术的发展,RAG 也正在从传统的单次检索生成模式向 Agentic RAG 演进。系统可以根据任务需求自主决定何时检索、检索什么内容、是否需要重新检索,以及如何组合多个知识来源。

未来,RAG 将继续作为大语言模型连接外部知识、企业数据和业务系统的重要技术基础设施。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。