RAG 检索增强生成

加载中... 浏览

RAG (Retrieval-Augmented Generation) 是将外部知识检索与大语言模型生成相结合的技术框架,旨在解决大模型的时效性与幻觉问题。

一、 基础理解

1. 什么是 RAG?解决什么问题?

RAG 通过在生成答案前从外部知识库检索相关信息,并将其作为上下文提供给 LLM,从而提升回答的准确性。

核心解决问题:

问题说明
知识时效性LLM 训练数据有截止日期,RAG 可接入实时数据
幻觉问题通过真实文档约束生成,减少编造
领域知识弥补通用模型在垂直领域(如医疗、法律)的不足
可溯源性支持引用原文,证据可查

2. RAG vs Fine-tuning (微调)

维度RAGFine-tuning
数据需求无需训练,只需索引文档需要大量高质量标注数据
成本低(维护向量库)高(计算资源与人工成本)
时效性实时更新(增删索引即可)极低(需重新训练)
灵活性高,易于调整知识库低,模型权重固化

建议:知识问答选 RAG;风格迁移或特定任务选微调;复杂场景可两者结合。


二、 RAG Pipeline 与核心环节

标准的 RAG 流程:文档加载文本分割Embedding向量存储检索重排序生成

环节详解

  • Chunk 切分策略
    • 固定长度:简单但易切断语义。
    • 递归切分:按段落/句子分层。
    • 语义切分:按主题分布切分,最为精准。
    • 重叠切分:通常设置 20-30% 重叠区,确保上下文连续。最佳实践建议 Chunk 大小在 256-512 tokens 之间。
  • Embedding 模型选择
    • 通用场景: text-embedding-3-small/large (OpenAI)。
    • 中文场景: BGE (BAAI)、M3E
    • 多语言: E5 (Microsoft)。
  • 混合检索 (Hybrid Search): 由于向量检索在语义上精细但在关键词匹配(如 ID、专有名词)上较弱,通常结合 BM25 (稀疏向量)Dense Vector (稠密向量)最终分数 = alpha * 向量分数 + (1 - alpha) * BM25 分数

三、 深水区优化

1. 召回率 (Recall) vs 精确率 (Precision)

  • 召回优化:扩大 Top-K、多路召回、Query 扩展。
  • 精确优化:引入 Rerank (重排序) 模型进行精排(如 Cross-encoder)。

2. 什么是 GraphRAG?

将知识图谱(Entity-Relation)引入 RAG。相比传统基于向量块的 RAG,它能捕捉显式的实体关系,擅长处理多跳推理(如:A 的校友 B 创办的公司 C 是做什么的?)。

3. 长文档与冲突处理

  • 冲突处理:时效优先原则(使用最新版本)或置信度加权。
  • 长文档:采用分层摘要(Map-Reduce)或滑动窗口检索。

四、 前端结合实战

1. 系统架构

前端 (Vue/React) 上传文件后,后端完成解析并索引。问答界面通过 SSE (Server-Sent Events) 实现流式输出。

2. UX 设计要点

  • Streaming 设计:逐字显示的打字机效果,Markdown 实时渲染,代码块高亮跟随。
  • 引用溯源 (Citation)
    • 生成内容中标记 [1], [2]
    • 悬浮显示引用片段,点击跳转原文高亮位置。
    • 侧边栏展示资源清单。

留言板

加载评论中...
Agent 智能体基础
闭包与函数柯里化
Valaxy v0.28.0-beta.1 驱动|主题-Yunv0.28.0-beta.1