news 2026/5/6 14:13:46

RAG(Retrieval-Augmented Generation)构建详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RAG(Retrieval-Augmented Generation)构建详解

RAG(Retrieval-Augmented Generation)构建详解

一、离线构建阶段(索引构建)

文档加载 → 数据清洗 → 分块 → 向量化处理 → 存储
  1. 文档加载(Document Loading)
  • 支持格式:PDF、Word、Markdown、HTML、TXT、CSV、Excel、PPT、图片(OCR)、音视频(转录)
  • 加载方式:
    • 本地文件系统读取
    • 云存储集成(S3、OSS、GCS)
    • 数据库连接(MySQL、PostgreSQL、MongoDB)
    • API接口拉取(Confluence、Notion、SharePoint)
    • 网页爬虫抓取
  • 工具库:LangChain的Document Loaders、LlamaIndex的Readers
  1. 数据清洗(Data Cleaning)
  • 文本预处理:
    • 去除HTML标签、特殊符号、多余空格
    • 统一编码格式(UTF-8)
    • 处理表格数据(保留结构或转为文本)
    • 图片/图表内容提取(OCR或描述生成)
  • 质量过滤:
    • 去除重复内容
    • 过滤低质量/无意义文本
    • 敏感信息脱敏(PII数据)
    • 语言检测与过滤
  • 元数据提取:标题、作者、时间、来源、文档类型等
  1. 分块(Chunking / Text Splitting)
  • 分块策略:
    • 固定长度分块:按字符数或token数切分(如512、1024 tokens)
    • 递归分块:按段落→句子→词的层级递归切分
    • 语义分块:基于语义边界(段落、章节)切分
    • 滑动窗口:重叠分块,保留上下文连续性
    • 智能分块:基于LLM判断最佳切分点
  • 分块参数:
    • chunk_size:每块大小
    • chunk_overlap:块间重叠量(通常10%-20%)
  • 注意事项:块大小需匹配向量模型的最大输入长度
  1. 向量化处理(Embedding)
  • 向量模型选择:

模型类型 代表模型 适用场景
通用文本 OpenAI text-embedding-ada-003/004 通用场景,英文优先
中文优化 BGE、M3E、GTE、ERNIE 中文文档,性价比高
多模态 CLIP、Jina-CLIP 图文混合
长文本 GTE-long、BGE-M3 法律、论文等长文档
重排序 Cohere Rerank、BGE Reranker 精排优化

  • 向量化过程:
    • 将文本块输入Embedding模型
    • 输出高维稠密向量(通常768维或1024维)
    • 向量归一化(L2归一化)
  • 性能优化:批处理、GPU加速、模型量化
  1. 存储(Vector Database)
  • 向量数据库选型:

数据库 特点 适用规模
Milvus/Zilliz 功能全面,分布式 企业级大规模
Pinecone 全托管,易用 中小规模,快速上线
Weaviate 支持混合搜索 需要语义+关键词
Qdrant 开源,Rust高性能 高性能要求
Chroma 轻量,本地优先 原型开发、小规模
PGVector PostgreSQL扩展 已有PG基础设施
Redis 内存级速度 缓存场景

  • 索引结构:HNSW、IVF、Flat等近似最近邻(ANN)算法
  • 存储内容:
    • 向量(Vector)
    • 原始文本(Payload)
    • 元数据(Metadata):用于过滤和排序

二、在线查询阶段(检索生成)

Query → 向量化 → 向量检索 → 结果排序 → 提示词组装 → LLM生成
  1. 查询向量化(Query Embedding)
  • 使用与离线阶段相同的向量模型
  • 对用户的自然语言查询进行编码
  • 查询预处理:纠错、扩展、意图识别
  1. 向量检索(Vector Search)
  • 检索策略:
    • 相似度搜索:余弦相似度、点积、欧氏距离
    • 混合检索:向量相似度 + 关键词匹配(BM25)
    • 多路召回:向量检索 + 关键词检索 + 图检索并行
    • 元数据过滤:先按标签/时间/来源过滤,再向量检索
  • 检索参数:
    • top_k:召回数量(通常5-10条)
    • score_threshold:相似度阈值过滤
  1. 重排序与精排(Reranking)
  • 粗排:向量检索快速召回Top-K候选
  • 精排:使用更复杂的重排序模型(Cross-Encoder)对候选重新打分
  • 过滤策略:去除相似度过低的结果,避免引入噪声
  1. 查询结果放入提示词模板(Prompt Engineering)
  • 上下文组装:
系统提示:你是一个专业的问答助手,请基于以下参考资料回答问题。 参考资料: [1] {chunk_1_content} [2] {chunk_2_content} ... [N] {chunk_N_content} 用户问题:{query} 要求: - 仅基于以上参考资料回答 - 如果资料不足,请明确说明"根据现有资料无法回答" - 引用来源编号 [1][2]...
  • 提示词优化技术:
    • 上下文压缩:对长检索结果进行摘要压缩
    • 多轮对话:维护对话历史,支持追问
    • Chain-of-Thought:引导模型逐步推理
    • Few-shot示例:提供回答格式示例
  1. 大模型调用与结果生成(LLM Generation)
  • 模型选择:
    • 闭源:GPT-4、Claude、Gemini、文心一言
    • 开源:Llama、Qwen、ChatGLM、Baichuan
  • 生成参数:
    • Temperature:控制创造性(RAG通常0.1-0.3,要求稳定)
    • Max_tokens:控制输出长度
    • Top_p:核采样
  • 输出后处理:
    • 格式校验(JSON/XML)
    • 内容安全过滤
    • 引用溯源标注

三、系统架构与优化要点

完整架构图

┌─────────────────────────────────────────────────────────┐ │ 用户交互层(Web/APP/API) │ ├─────────────────────────────────────────────────────────┤ │ 查询理解 → 意图识别 → 查询改写 → 查询扩展 → 查询向量化 │ ├─────────────────────────────────────────────────────────┤ │ 混合检索(向量+关键词) → 重排序 → 上下文压缩 → 提示词组装 │ ├─────────────────────────────────────────────────────────┤ │ 大语言模型(LLM)推理生成 │ ├─────────────────────────────────────────────────────────┤ │ 结果格式化 → 引用标注 → 安全审核 → 流式输出 → 缓存记录 │ └─────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────┐ │ 离线管道:文档加载 → 清洗 → 分块 → Embedding → 向量库索引 │ └─────────────────────────────────────────────────────────┘

关键优化方向

环节 优化策略 效果
召回率 多路召回、查询扩展、混合检索 找到更多相关文档
准确率 重排序、元数据过滤、阈值调优 减少无关内容
成本控制 上下文压缩、缓存机制、模型选择 降低Token消耗
延迟优化 向量索引优化、缓存、流式输出 提升响应速度
效果评估 RAGAS、Ares、TruLens等评估框架 量化系统表现


四、典型应用场景

  1. 企业知识库问答:内部文档、规章制度、技术文档
  2. 客服机器人:基于产品手册和FAQ的智能客服
  3. 法律助手:法规检索、案例匹配、合同审查
  4. 医疗咨询:医学文献检索、症状分析辅助
  5. 教育辅导:教材内容检索、个性化答疑
  6. 代码助手:基于代码库和文档的编程辅助
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 14:13:28

FlicFlac音频转换终极指南:5分钟学会Windows免费音频格式转换

FlicFlac音频转换终极指南:5分钟学会Windows免费音频格式转换 【免费下载链接】FlicFlac Tiny portable audio converter for Windows (WAV FLAC MP3 OGG APE M4A AAC) 项目地址: https://gitcode.com/gh_mirrors/fl/FlicFlac 还在为不同设备需要不同音频格…

作者头像 李华
网站建设 2026/5/6 14:08:46

Unpaywall终极指南:3分钟破解学术付费墙的免费解决方案

Unpaywall终极指南:3分钟破解学术付费墙的免费解决方案 【免费下载链接】unpaywall-extension Firefox/Chrome extension that gives you a link to a free PDF when you view scholarly articles 项目地址: https://gitcode.com/gh_mirrors/un/unpaywall-extensi…

作者头像 李华
网站建设 2026/5/6 14:07:28

【含五月最新安装包】OpenClaw保姆级一键部署全流程

OpenClaw(小龙虾)Windows 一键部署保姆级教程 | 10 分钟养出你的数字员工 2026 年备受关注的开源 AI 智能体 OpenClaw(昵称小龙虾),GitHub 星标超 28 万,凭借本地运行、零代码、自动执行任务等特点收获大量…

作者头像 李华
网站建设 2026/5/6 14:07:06

红杉 2026 AI 闭门会,到底聊透了什么?

这场会真正给出的,不是某个模型答案,而是一个更硬的判断:AI 已经从“会聊天”进入“能干活”,接下来拼的是长周期 Agent、工作流重构和商业化闭环。开场引入:这不是一次“模型发布会” 如果你只把 2026 年红杉资本的 A…

作者头像 李华
网站建设 2026/5/6 14:06:04

利用快马AI快速生成openclaw命令脚本原型,实现服务器批量管理

今天想和大家分享一个运维小技巧——如何用InsCode(快马)平台快速生成openclaw命令脚本原型。作为经常需要管理多台服务器的运维人员,这个工具真的帮我省下了不少重复劳动的时间。 先说说为什么需要openclaw这类工具。当手头要管理几十台服务器时,最头疼…

作者头像 李华