当前位置: 首页 > news >正文

RAG 从零到一:构建你的第一个检索增强生成系统

导语

大模型很强,但它不知道你公司的内部文档、最新产品手册、私有数据。你问它"我们公司的退货政策是什么?"——它只能瞎编。

RAG(Retrieval-Augmented Generation,检索增强生成)是解决这个问题的最主流方案:先从知识库中检索相关信息,再交给大模型生成回答。简单、有效、不需要训练模型。

RAG 也是企业 LLM 落地最多的应用模式——你能在市场上看到的大部分"企业知识问答"、"智能客服"、"文档助手",底层都是 RAG。


一、为什么需要 RAG

1.1 大模型的三大局限

局限表现例子
知识截止不知道训练数据之后发生的事"2026 年世界杯谁赢了?"→ 不知道
幻觉自信地编造不存在的信息编造不存在的论文引用
无法访问私有数据不知道你公司的内部信息公司制度、产品文档、客户数据

1.2 三种解决方案对比

方案RAGFine-tuning长上下文
原理先检索后生成用数据重新训练模型把所有数据塞进 Prompt
成本低(只需向量库)高(需要训练)中(Token 费用高)
实时性高(更新文档即可)低(重新训练)
适用数据量大(百万级文档)中(万级数据)小(受上下文限制)
最佳场景企业知识问答特定风格/格式单次分析少量文档

决策指南:90% 的企业 LLM 应用,先试 RAG。Prompt Engineering + RAG 搞不定的,再考虑 Fine-tuning。

1.3 RAG 工作流程概览

用户提问: "公司的年假政策是什么?" │ ▼ ┌──────────────┐ │ 1. 查询处理 │ → 将问题转换为向量 └──────┬───────┘ │ ▼ ┌──────────────┐ │ 2. 检索 │ → 在向量库中找最相关的文档片段 └──────┬───────┘ │ ▼ ┌──────────────┐ 检索到的文档: │ 3. 增强 │ → "员工入职满一年后享有5天年假..." └──────┬───────┘ "年假需提前3天申请..." │ ▼ ┌──────────────┐ │ 4. 生成 │ → LLM 基于检索到的文档生成回答 └──────┬───────┘ │ ▼ 回答: "根据公司制度,入职满一年后享有5天年假, 需要提前3天向主管提交申请..."

二、RAG 完整流程拆解

2.1 文档加载

from langchain_community.document_loaders import ( PyPDFLoader, TextLoader, Docx2txtLoader, UnstructuredHTMLLoader, CSVLoader ) # 支持多种格式 pdf_docs = PyPDFLoader("company_handbook.pdf").load() txt_docs = TextLoader("faq.txt").load() word_docs = Docx2txtLoader("policy.docx").load() html_docs = UnstructuredHTMLLoader("product.html").load() csv_docs = CSVLoader("customer_data.csv").load() all_docs = pdf_docs + txt_docs + word_docs + html_docs + csv_docs print(f"加载了 {len(all_docs)} 个文档片段")

2.2 文本分块(Chunking)

文档太长放不进一个 Embedding,需要切分成小块:

from langchain.text_splitter import RecursiveCharacterTextSplitter splitter = RecursiveCharacterTextSplitter( chunk_size=500, # 每块最大 500 字符 chunk_overlap=50, # 相邻块重叠 50 字符(保持上下文连贯) separators=["\n\n", "\n", "。", ",", " ", ""], # 按优先级切分 ) chunks = splitter.split_documents(all_docs) print(f"分块后: {len(chunks)} 个块")

2.3 向量化与存储

from langchain_openai import OpenAIEmbeddings from langchain_chroma import Chroma # 生成 Embedding 并存入向量库 embeddings = OpenAIEmbeddings(model="text-embedding-3-small") vectorstore = Chroma.from_documents( documents=chunks, embedding=embeddings, persist_directory="./chroma_db" )

2.4 检索

# 基础检索 retriever = vectorstore.as_retriever( search_type="similarity", search_kwargs={"k": 5} # 返回 Top 5 最相关的文档块 ) results = retriever.invoke("公司年假政策") for doc in results: print(f"[{doc.metadata.get('source', 'unknown')}] {doc.page_content[:100]}...")

2.5 生成

from langchain_openai import ChatOpenAI from langchain.prompts import ChatPromptTemplate llm = ChatOpenAI(model="gpt-4o", temperature=0) prompt = ChatPromptTemplate.from_template(""" 基于以下参考资料回答用户的问题。如果资料中没有相关信息,请明确说明"根据现有资料无法回答"。 不要编造任何不在资料中的信息。 参考资料: {context} 用户问题:{question} 回答: """) # 组装 RAG 链 from langchain.schema.runnable import RunnablePassthrough rag_chain = ( {"context": retriever, "question": RunnablePassthrough()} | prompt | llm ) answer = rag_chain.invoke("公司的年假政策是什么?") print(answer.content)

三、分块策略深入对比

分块策略直接影响检索质量——块太大,语义不精确;块太小,丢失上下文。

策略做法优点缺点适用场景
固定长度每 N 个字符切一刀简单可能切断语义快速原型
递归字符分割按段落→句子→字符递归切分尽量保持语义完整块大小不均匀通用场景(最推荐)
语义分块根据语义相似度变化切分语义最精确计算成本高高质量需求
文档结构分块按标题、段落、章节切分保持文档结构需要结构化文档技术文档/手册

分块大小经验值

  • 通用推荐:chunk_size=500-1000,overlap=50-100
  • 精确检索:chunk_size=200-500(小块更精确)
  • 上下文丰富:chunk_size=1000-2000(大块信息更完整)

四、检索优化技巧

基础向量检索的效果往往不够好。以下是递进式的优化手段:

4.1 混合检索

from langchain.retrievers import EnsembleRetriever from langchain_community.retrievers import BM25Retriever # BM25 关键词检索 bm25_retriever = BM25Retriever.from_documents(chunks, k=5) # 向量检索 vector_retriever = vectorstore.as_retriever(search_kwargs={"k": 5}) # 混合:各占 50% 权重 hybrid_retriever = EnsembleRetriever( retrievers=[bm25_retriever, vector_retriever], weights=[0.5, 0.5] )

4.2 查询改写(Query Rewriting)

用户的问题可能不够好——太简短、有歧义、或者用词和文档不一致。

rewrite_prompt = ChatPromptTemplate.from_template(""" 将以下用户问题改写为更适合搜索的形式。生成 3 个不同角度的查询: 原始问题:{question} 改写后的查询(每行一个): """) # 用 LLM 改写查询,每个查询分别检索,合并结果

4.3 重排序(Reranking)

初步检索返回 Top 20,用更精准的 Cross-Encoder 模型重排,取 Top 5。

from sentence_transformers import CrossEncoder reranker = CrossEncoder("BAAI/bge-reranker-v2-m3") # 初步检索 Top 20 initial_results = retriever.invoke(query, k=20) # 重排序 pairs = [(query, doc.page_content) for doc in initial_results] scores = reranker.predict(pairs) # 按分数排序,取 Top 5 reranked = sorted(zip(initial_results, scores), key=lambda x: x[1], reverse=True)[:5]

4.4 优化技巧层级

Level 0: 基础向量检索(baseline) ↓ +15% 效果 Level 1: 混合检索(向量 + BM25) ↓ +10% 效果 Level 2: 查询改写 + 多查询检索 ↓ +10% 效果 Level 3: 重排序(Reranking) ↓ +5% 效果 Level 4: 上下文压缩 + 父文档检索

五、RAG 常见问题与调优

问题症状诊断解决方案
检索不到回答"无法找到相关信息"查看检索结果的相似度分数调整分块策略/换 Embedding 模型
检索到但答案错回答偏离问题检查检索到的文档是否真的相关添加重排序/查询改写
混入无关信息回答中夹杂不相关内容检索返回了噪声文档提高相似度阈值/减少 Top K
延迟太高响应时间 > 5秒定位是检索慢还是生成慢向量库索引优化/流式输出
回答太泛没有具体细节分块太大,信息被稀释减小 chunk_size
幻觉编造不在文档中的信息Prompt 约束不够强强化"只基于资料回答"的指令

六、进阶:生产级 RAG 的注意事项

6.1 数据更新策略

策略做法适用场景
全量重建删除旧索引,重新构建数据量小,更新不频繁
增量更新只添加新文档/更新变化的文档数据量大,实时性要求高
版本管理每个版本一个索引,切换生效需要回滚能力

6.2 权限控制

不同用户应该看到不同的数据。在 metadata 中标记权限:

# 存储时带上权限标签 vectorstore.add_documents( documents=hr_docs, metadata=[{"access_level": "hr_only", "department": "hr"} for _ in hr_docs] ) # 检索时过滤 retriever = vectorstore.as_retriever( search_kwargs={ "k": 5, "filter": {"access_level": "hr_only"} } )

6.3 评估指标

指标含义如何计算
Context Precision检索到的文档中有多少是相关的相关文档数 / 检索文档数
Context Recall应该被检索到的文档有多少被找到了被检索到的相关文档数 / 总相关文档数
Faithfulness回答是否忠实于检索到的文档LLM-as-Judge 评估
Answer Relevancy回答是否回答了用户的问题LLM-as-Judge 评估

七、职业视角

  • RAG 是目前企业 LLM 落地最多的方向——AI 应用工程师岗位几乎必考
  • 面试必问:RAG 的完整流程?检索效果不好怎么优化?RAG vs Fine-tuning 怎么选?
  • 相关岗位:AI 应用工程师、LLM 工程师、搜索工程师
  • 建议:自己动手搭一个完整的 RAG Demo 放到 GitHub 上,比任何证书都有说服力

想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?

别再浪费时间啦!2025 年AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享

👇👇扫码免费领取全部内容👇👇

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势

想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI

1. 100+本大模型方向电子书

2. 26 份行业研究报告:覆盖多领域实践与趋势

报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:

  • 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
  • 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
  • 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
  • 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。

3. 600+套技术大会 PPT:听行业大咖讲实战

PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

  • 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
  • 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
  • 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
  • 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。

二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走

想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位

面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析

2. 102 道 AI 大模型真题:直击大模型核心考点

针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题

专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:


三、路线必明:AI 大模型学习路线图,1 张图理清核心内容

刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。

L1阶段:启航篇丨极速破界AI新时代

L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

L5阶段:专题集丨特训篇 【录播课】


四、资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取

👇👇扫码免费领取全部内容👇👇

2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!

http://www.jsqmd.com/news/434575/

相关文章:

  • 2026年3月蠕动软管泵厂家推荐,行业权威盘点与品质红榜 - 品牌鉴赏师
  • BuildingAI:开源时代的企业级智能体搭建新基建
  • 2026年质量好的劳保工装/普通工装优质供应商推荐参考 - 品牌宣传支持者
  • 2026年常州漏水检测服务推荐榜单:专业精准定位,高效解决建筑外墙、卫生间、屋顶、阳台、地下室、厨房及厂房渗漏难题 - 品牌企业推荐师(官方)
  • 油性脱发用什么洗发水?无硅油无月桂醇无防腐剂的洗发水推荐,2026年6款洗发水实测防脱靠谱 - 博客万
  • 2026年3月纸箱包装厂家推荐榜,甄选企业实测解析 - 品牌鉴赏师
  • 2026年“光学与雷达遥感应用培训班”启动计划 - ENVI
  • ssm+java2026年毕设轻松短租网【源码+论文】
  • 2026年质量好的劳保定制/防静电劳保用品厂家选购参考建议 - 品牌宣传支持者
  • 北京附近收酒|京城亚南酒业就近上门,告别奔波更便捷 - 品牌排行榜单
  • ssm+java2026年毕设青少年心理健康公益扶助网站【源码+论文】
  • 2026年热门的安徽家装管/红叶家装管品牌厂商推荐(更新) - 品牌宣传支持者
  • 2026年 北京管道疏通服务推荐榜单:下水道疏通/朝阳区马桶疏通,专业高效解决堵塞难题的靠谱之选 - 品牌企业推荐师(官方)
  • ssm+java2026年毕设青少年心理健康教育平台【源码+论文】
  • 数组内存分析
  • 2026精品水果店加盟品牌排行榜 靠谱之选 - 优质品牌商家
  • ssm+java2026年毕设轻型卡车零部件销售平台【源码+论文】
  • 2026年 离子交换树脂厂家推荐排行榜,抛光树脂/混床树脂/食品级树脂/半导体级树脂/超纯水树脂等源头实力品牌深度解析 - 品牌企业推荐师(官方)
  • 2026年比较好的高强度合金模板/本地合金模板行业内口碑厂家推荐 - 品牌宣传支持者
  • ssm+java2026年毕设轻院网上奶茶商店【源码+论文】
  • 微信立减金总过期?3次回收血泪史教你秒回血! - 京顺回收
  • 分期乐红包怎么回收?一步步教你轻松解决! - 团团收购物卡回收
  • 园区租赁率低、空置期长,如何用数据优化招商策略? - 搭贝
  • 2026数据升级权威服务商推荐榜:智能风控、金融风控、风控技术、风控服务、风控模型、风控系统、风控解决方案选择指南 - 优质品牌商家
  • 2026年热门的焊接不锈钢管接头/螺纹不锈钢管接头厂家选择参考建议 - 品牌宣传支持者
  • 韩式热狗粉生产厂家选购指南:4大标准帮你避开90%的坑 - 速递信息
  • redis - 分布式缓存
  • 征地补偿纠纷律师怎么选,北京市盛廷律师事务所吗 - 工业推荐榜
  • 医药塑料瓶选购指南:从0到1建立科学决策框架 - 速递信息
  • 2026年性价比高的安徽家装水管/红叶家装水管厂家口碑推荐汇总 - 品牌宣传支持者