【AI大模型学习路线】第二阶段之RAG基础与架构——第六章(RAG基础与架构)RAG(Retrieval‑Augmented Generation)的经典结构与模块?

【AI大模型学习路线】第二阶段之RAG基础与架构——第六章(RAG基础与架构)RAG(Retrieval‑Augmented Generation)的经典结构与模块?

【AI大模型学习路线】第二阶段之RAG基础与架构——第六章(RAG基础与架构)RAG(Retrieval‑Augmented Generation)的经典结构与模块?



欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “学术会议小灵通”或参考学术信息专栏:https://fighting.blog.csdn.net/article/details/147360609


前言

RAG 架构典型地分为七大模块索引(Indexing)、查询编码(Query Encoder)、检索(Retriever)、上下文增强(Augmentation)、生成(Generator)、重排序/过滤(Reranker/Filter)和评估监控(Evaluation & Monitoring)。各模块环环相扣,实现“检索‑增强‑生成”闭环,有效提升大模型的时效性、准确性与可审计性

1. 索引(Indexing)

目的:

  • 将海量文档转为向量并构建高效索引,支持后续近似最近邻检索。

技术要点:

  • 文本切分(chunking):固定长度、基于句法或文件格式切分,兼顾上下文完整性与检索粒度​。
  • 向量化模型:采用稠密(Dense)嵌入(如 Sentence‑Transformers)或混合稀疏+稠密方案(Hybrid Sparse+Dense)​。
  • 向量库:Faiss、Pinecone、Weaviate 等支持 ANN 检索,保证大规模文档下的低延迟检索。

2. 查询编码(Query Encoder)

功能:

  • 将用户自然语言查询编码为向量,作为检索器的输入。

实现:

  • 与文档嵌入模型共享参数(双塔模型)或单独预训练,再通过最大内积搜索(MIPS)匹配最相似文档​。
  • 可端到端微调:在生成任务上联合优化检索器与生成器,提高检索质量与 downstream 性能​。

3. 检索(Retriever)

职责:

  • 基于查询向量,在索引中召回 Top‑k 相关文档

策略:

  • 纯向量检索(Dense Retrieval)
  • 稀疏检索(Sparse Retrieval,如 BM25)
  • 混合检索(Hybrid Retrieval),结合稠密和稀疏信号提高召回与精度​

模块化趋势:

  • Modular RAG 将检索器拆分为可插拔子模块,支持不同检索算法和重排名器自由组合​

4. 上下文增强(Augmentation)

作用:

  • 将检索到的文档拼接或融合进原始查询,形成增强后的 prompt。

方法:

  • 简单拼接:把 Top‑k 文本直接拼入 prompt
  • 片段筛选:基于相似度或关键词过滤,保留最相关段落
  • 结构化融合:将文档元信息(来源、时间戳)一并编码,提升可解释性与可审计性​。

5. 生成(Generator)

目标:

  • 在增强后的上下文上进行文本生成,输出最终回答或内容。

模型选择:

  • GPT‑4、LLaMA、BART、T5 等 seq2seq/Decoder‑only 模型均可​。

策略:

  • 可采用 Beam Search、采样(top‑k、top‑p)等解码策略,并在生成时附带文档引用以降低hallucination​

6. 重排序与过滤(Reranker/Filter)

必要性:

  • 初步检索有时召回噪声文档,需要二次排序提升精度。

实现:

  • Cross‑encoder 重排序:将 query 与每个文档拼接,输入轻量级分类器评分

过滤策略:

  • 基于文档可信度、时效性或来源权重剔除不合规内容​。

7. 评估与监控(Evaluation & Monitoring)

评估指标:

  • 检索阶段用 Recall、MRR;生成阶段用 ROUGE、BLEU、EM 和人工评估​。

实时监控:

  • 日志来源文档引用分布
  • 用户反馈闭环,动态调整检索库与重排模型
  • 异常检测(如生成内容偏离主题、低置信度)报警

模块间数据流 (Mermaid 图示)

flowchart LR
  A[用户 Query] --> B[Query Encoder]
  B --> C[Retriever<br/>(Index & Search)]
  C --> D[Reranker/Filter]
  D --> E[Augmentation<br/>(拼接 & 结构化)]
  E --> F[Generator]
  F --> G[输出答案 + 来源]
  G --> H[评估与监控]

Python 代码示例:模块化 RAG 实现

下面示例用 Hugging Face Transformers 展示各模块的调用与协同:

from transformers import (
    RagTokenizer, RagRetriever, RagSequenceForGeneration
)

# 1. 初始化:Tokenizer、Retriever(Indexing & Query Encoder)与 Generator
tokenizer = RagTokenizer.from_pretrained("facebook/rag-token-base")  # Query & Doc 分词
retriever = RagRetriever.from_pretrained(
    "facebook/rag-token-base",
    index_name="exact",          # 精确索引
    passages_path="docs.json"    # 已嵌入文档库
)
model = RagSequenceForGeneration.from_pretrained("facebook/rag-token-base")  # Generator

def run_rag(query: str, top_k:int=5):
    # 2. 查询编码 + 检索
    inputs = tokenizer(query, return_tensors="pt")
    # 3. 生成(内部执行检索、重排序、Augmentation & Generation)
    generated_ids = model.generate(
        input_ids=inputs["input_ids"],
        attention_mask=inputs["attention_mask"],
        num_return_sequences=1,
        num_beams=2,
        n_docs=top_k              # 控制检索 Top‑k 文档
    )
    # 4. 解码输出
    return tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

# 示例调用
answer = run_rag("什么是 RAG 架构的核心模块?", top_k=3)
print("回答:", answer)

  • RagRetriever 完成索引(Indexing)与查询编码(Query Encoder)并召回 Top‑k 文档
  • generate 阶段自动执行重排序(Reranker)、上下文增强(Augmentation)与文本生成(Generator)
  • 参数 n_docs 精细控制检索模块的召回数量

通过上述经典结构与模块剖析,以及 Python 端到端示例,可见 RAG 如何以“模块化、可插拔”的方式,将检索与生成有效融合,为 AI 大模型在知识密集型场景中提供高准确性、低幻觉率与可审计的解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

985小水博一枚呀

祝各位老板前程似锦!财源滚滚!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值