微调是把模型的"底子"换成你的领域语料,但 90% 的业务场景,你
不需要微调。你只需要让模型在回答的时候,去翻你公司内部的文档、产品手册、客服记录——这叫 RAG(Retrieval-Augmented Generation,检索增强生成)。
RAG 是 2024-2026 年所有 AI 应用项目的事实默认方案。OpenAI 的 GPTs、Anthropic 的 Projects、阿里云百炼、智谱的「知识库」——背后全是 RAG。
但 90% 的 RAG 项目困在「检索」这一步,而不是生成。
这篇文章会跟你说三样东西:
-
一条能照着走的 RAG 路径——从 0 到能上线的最小可用版本
-
一份实操最小代码清单——5 个文件就能跑通一次
-
一张避坑表——按"卡死严重度"排序的 7 个常见坑
- 先把"RAG"拆开
RAG = 检索 + 增强 + 生成 三个动作。
检索(Retrieval):用户问一个问题,系统先去你的文档库里找相关的几段文本。
增强(Augmented):把这几段文本塞进 prompt 里,作为模型的"参考资料"。
生成(Generation):模型基于这些参考资料,输出最终答案。
看起来就 3 步。但每一步都有坑。 90% 的项目在这 3 步里踩到至少 1 个坑,最终答案质量就崩了。
把这 3 步归拢到"用什么技术":
| 步骤 | 技术选型 | 国内推荐 |
| 检索 | 向量检索 / 关键词检索 / 混合检索 | Milvus / 阿里云 DashVector / 腾讯云 VectorDB |
| 增强 | prompt 组装、rerank | 阿里云通用 rerank、bge-reranker |
| 生成 | LLM 调用 | GLM-5 / Qwen / DeepSeek / Kimi …… |
- RAG 之前,先做一次诚实的盘点
动手之前,先做一次诚实的盘点。这一步能省掉 80% 的人至少一周时间。
1.1 你的数据是什么形态
数据形态决定切分策略。
| 数据形态 | 该用什么切分 | 为什么 |
| 几百页 PDF 产品手册 | 按章节切,每段600-800字左右 | 章节天然有边界 |
| 几千条客服对话 | 一问一答切,每段 200-400 字 | 单轮对话是独立知识单元 |
| 几万条 SQL 文档 | 按表结构切,每段 1 张表 | 结构化文档按 schema 切 |
| 100+ 篇技术博客 | 按段落切,每段 400-600 字 | 长文按主题段切 |
| Markdown 文档树 | 按标题层级切 | markdown 标题是天然切点 |
很多RAG 项目一开始就「切错」。
切太粗:检索出来的段落太长,模型抓不住重点。
切太细:检索出来的段落太碎,模型看不到上下文。
切错位置:把一句话从中间切开,模型读到一半不知道在讲什么。
1.2 你的查询是哪种
不同查询需要不同的检索策略。
| 查询类型 | 该用什么 | 例子 |
| 事实型(FAQ) | 关键词检索 + 向量检索 | “你们的退款政策是什么?” |
| 概念型(解释) | 向量检索为主 | “什么是 QLoRA?” |
| 比较型 | 向量检索 + rerank | “A 和 B 哪个更适合我?” |
| 多步推理型 | RAG + Agent | “基于这份合同,帮我算下到期金额” |
| 实时型 | RAG + 搜索 API | “今天的新闻头条” |
查询类型决定后续是否需要 Agent 编排。 简单 FAQ 用单轮 RAG 就能解决,多步推理需要把 RAG 接进 Agent 循环里。
1.3 你的容忍度是多少
| 容忍度 | 方案 | 成本 |
| 能接受 70% 准确率、偶尔答错 | 纯向量检索 + LLM | 几百到几千元 |
| 必须 90%+ 准确率 | 混合检索 + rerank + 答案验证 | 几千元到几万元 |
| 必须 99%+ 准确率(金融/医疗) | RAG + 微调 + 规则兜底 + 人工审核 | 几十万到几百万 |
RAG 不是万能的。 RAG 能解决"知识截止"、“知识错误”、“幻觉”,但解决不了"逻辑混乱"、“胡说八道”。配合答案验证、人工兜底才能真正落地。
- 工具链:近 2 年事实上的标准
2.1 LangChain
- 干什么:LLM 应用最主流的开发框架
- 核心组件:
DocumentLoader/TextSplitter/Embedding/VectorStore/Retriever/Chain - 优势:组件全、社区大、文档多
- 劣势:抽象层太厚,性能调优不直观
2.2 LlamaIndex
- 干什么:专门做 RAG 的框架,比 LangChain 更聚焦
- 核心组件:
SimpleDirectoryReader/NodeParser/VectorStoreIndex/QueryEngine - 优势:RAG 场景设计更合理,索引策略丰富
- 劣势:通用 Agent 能力不如 LangChain
2.3 向量数据库
- 国内选择:
- Milvus(开源,自部署)
- Qdrant(开源,自部署)
- 阿里云 DashVector(云服务,按量付费)
- 腾讯云 VectorDB(云服务,按量付费)
- Chroma(适合小规模 Demo)
- 怎么选:100 万条以内用 Chroma;100 万-1 亿条用 Milvus/Qdrant;上亿条用云服务
2.4 Embedding 模型
- 干什么:把文本变成向量(数字序列)
- 国内选择:
- bge-large-zh-v1.5(智源,中文最强开源 embedding)
- text2vec-base-chinese(哈工大)
- M3E(开源,中文场景表现优秀)
- 怎么选:中文场景默认 bge-large-zh;英文用 OpenAI text-embedding-3
4 个工具的分工:

图 1 · 按项目规模选:Demo / 生产级 RAG / 云服务一站式
- 简单 RAG Demo → LangChain + Chroma + bge + GLM-5
- 生产级 RAG → LlamaIndex + Milvus + bge + Qwen3.5
- 云服务一站式 → 阿里云百炼(DashVector + bge + 通义一站式)
- 实操:跑通你的第一个 RAG
我把"打开电脑到跑通第一次 RAG"切成 7 步。(langchain下)每一步都给最小可执行代码。
第 1 步:环境
# 推荐环境:Python 3.10+ conda create -n rag python=3.10 -y conda activate rag pip install langchain langchain-community chromadb sentence-transformers zhipuai
第 2 步:准备数据
# 把你的文档放进 ./docs 文件夹 # 支持 pdf / txt / md / docx from langchain_community.document_loaders import DirectoryLoader loader = DirectoryLoader('./docs', glob='/*.md', show_progress=True) docs = loader.load() print(f'加载 {len(docs)} 个文档')
这一步是大部分人踩坑的开始。
3 个常见踩坑:
- 坑 1:PDF 加载出来是乱码 → 装
pymupdf或pdfplumber - 坑 2:表格被破坏 → 用专门的 table extractor
- 坑 3:扫描版 PDF 没文字 → 先 OCR
第 3 步:切分文档
from langchain.text_splitter import RecursiveCharacterTextSplitter splitter = RecursiveCharacterTextSplitter( chunk_size=500, # 每段最大 500 字符 chunk_overlap=50, # 段间重叠 50 字符(保留上下文) separators=[' ', ' ', '。', '!', '?'], # 中文友好切分符 ) chunks = splitter.split_documents(docs) print(f'切分成 {len(chunks)} 个段落')
3 个关键参数:
chunk_size:根据你的数据形态选。FAQ 200-400;产品手册 800-1200;技术文档 500-800chunk_overlap:10%-20% 的 chunk_size。太小上下文断裂;太大检索冗余separators:中文场景必须包含。!?。
第 4 步:Embedding + 入库
from langchain_community.embeddings import HuggingFaceBgeEmbeddings from langchain_community.vectorstores import Chroma # 中文 embedding embeddings = HuggingFaceBgeEmbeddings( model_name='BAAI/bge-large-zh-v1.5', model_kwargs={'device': 'cuda'}, # 没 GPU 就改成 'cpu' encode_kwargs={'normalize_embeddings': True}, ) # 入库 vectorstore = Chroma.from_documents( documents=chunks, embedding=embeddings, persist_directory='./chroma_db', ) vectorstore.persist() print('入库完成')
国内环境特别提示:
- HuggingFace 模型下载可能慢,建议用国内镜像
- 或者用魔搭 modelscope 下载
第 5 步:检索
# 检索 top 5 retriever = vectorstore.as_retriever( search_type='similarity', search_kwargs={'k': 5}, ) results = retriever.invoke('你们的退款政策是什么?') for i, doc in enumerate(results): print(f' --- 结果 {i+1} ---') print(doc.page_content[:200])
关键参数:
k:检索返回多少段。太少漏掉,太多稀释。FAQ 用 3-5,复杂问题用 8-10score_threshold:可以加search_kwargs={'score_threshold': 0.7}过滤掉太不相关的结果
第 6 步:增强 + 生成
from langchain.prompts import PromptTemplate from zhipuai import ZhipuAI # Prompt 模板 template = """你是专业客服助手。请基于以下参考资料回答用户问题。 如果参考资料里没有答案,请直接说"我不清楚,请联系人工客服"。 参考资料: {context} 用户问题:{question} 你的回答:""" prompt = PromptTemplate(template=template, input_variables=['context', 'question']) # 调用智谱 GLM-4 client = ZhipuAI(api_key='你的智谱 API key') def rag_query(question): # 检索 docs = retriever.invoke(question) context = ' '.join([d.page_content for d in docs]) # 生成 response = client.chat.completions.create( model='glm-4-flash', messages=[{ 'role': 'user', 'content': prompt.format(context=context, question=question) }], temperature=0.3, ) return response.choices[0].message.content # 测试 print(rag_query('你们的退款政策是什么?'))
3 个 prompt 技巧:
-
明确说"不知道":避免幻觉。
如果参考资料里没有答案,请直接说"我不清楚" -
给参考资料标记:让模型知道哪些是引用,方便溯源
-
temperature 调低:RAG 场景用 0.2-0.4,过高会"自由发挥"
第 7 步:评估 + 上线
别直接上线。 用 50-100 个测试问题验证。
test_questions = [ {'q': '你们的退款政策是什么?', 'expected_keywords': ['7天', '无理由']}, {'q': '如何联系客服?', 'expected_keywords': ['电话', '在线']}, # ... 准备 50-100 个 ] correct = 0 for item in test_questions: answer = rag_query(item['q']) if all(kw in answer for kw in item['expected_keywords']): correct += 1 print(f'准确率:{correct}/{len(test_questions)} = {correct/len(test_questions)*100:.1f}%')
评估指标:
- 召回率(Recall):检索出来的段落里,有多少包含正确答案
- 准确率(Precision):生成的答案里,有多少包含期望关键词
- 幻觉率(Hallucination Rate):答案里有多少内容是参考资料里没有的
这 7 步跑通,RAG 项目就走完了 80%。 剩下 20% 是优化:切分策略调优、embedding 升级、rerank 加入、prompt 工程。
- 进阶:你想从 Demo 到生产,路径在这里
跑通最小可用版本之后,往上走有 3 条路。

图 2 · 3 个核心指标 · 上线前必跑 50-100 题
4.1 检索质量优化
- 混合检索:BM25(关键词) + 向量检索。单独向量检索会漏掉专业术语
- rerank:用专门的重排序模型对 top-k 重新打分。bge-reranker-large 是中文最强开源 rerank
- query 改写:用 LLM 把用户的口语化问题改写成多个候选查询
- 多路召回:向量 + 关键词 + 结构化查询(如 SQL)并行召回,再合并
4.2 切分策略优化
- 语义切分:用 embedding 计算段落相似度,在语义断点处切开(而不是按固定字符数)
- 结构化切分:对 markdown 按标题、对代码按函数、对表格按行
- small-to-big:检索时用小段落,生成时把小段落所属的大段落一起给模型
4.3 评估体系建设
- 人工盲评:准备 100 个测试问题,原 RAG vs 改进 RAG 各跑一次,让人盲选
- LLM-as-Judge:用更强的模型做裁判,对比答案质量
- 业务指标:真实用户满意度、问题解决率、转人工率
RAG 最贵的环节不是搭起来,是评估。 多数团队的 RAG 准确率评估靠"我看着好像还行",这是错觉。
- 新手最容易踩的 7 个坑
按"卡死严重度"从高到低排序:

图 3 · 7 个常见坑 · 90% 的人卡在前 3 个
| 坑 | 现象 | 解决 |
| 切分错了 | 检索出来的段落看不懂 | 用语义切分;按标题层级切;先人工看 20 段 |
| 没做 rerank | top-1 经常不是最相关的 | 加 bge-reranker-large |
| 没限定"不知道" | 模型自由发挥,胡说八道 | prompt 明确"参考资料没答案就说不知道" |
| k 太大 | 检索 10 段,模型被淹没 | k 调到 3-5,配 rerank |
| embedding 模型没选对 | 中文检索召回率低 | 中文必用 bge-large-zh,不要用 OpenAI text-embedding-3 |
| 没做混合检索 | 专业术语搜不到 | 加 BM25;向量 + 关键词双路召回 |
| 没评估就上线 | 用户投诉"答非所问" | 50-100 题测试集上线前必跑 |
- 写在最后:RAG 是连接器,不是魔法
RAG 是一个连接器。它把"模型的通用能力"和"你的领域知识"接起来。
RAG 能接上的:知识截止、领域术语、产品文档、客服话术、规章制度、内部 wiki。
RAG 接不上的:实时数据(需要搜索 API)、结构化查询(需要 SQL)、多步推理(需要 Agent)、专业判断(需要微调或 RLHF)。
微调是把模型"重新训练";RAG 是让模型"查资料"。 99% 的业务场景,先用 RAG,不够再微调。
给第一次搭 RAG 的人 3 条建议:
-
先跑通 1 次,再优化。
-
切分比 embedding 重要。 同样的数据,切分策略好,准确率能高 20 个百分点
-
评估是入场券,不是选做题。 50-100 题测试集上线前必跑。RAG 答错一道题,用户就觉得"AI 不行"
一个能接上你自己知识库的 LLM,比一个什么都会答但什么都答不准的 LLM,有用 100 倍。
如果这篇对您有用,欢迎点赞、评论、关注和转发。
这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
👇👇扫码免费领取全部内容👇👇

1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。

2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

4. 2026行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

7. 资料领取:全套内容免费抱走,学 AI 不用再找第二份
不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:
👇👇扫码免费领取全部内容👇👇


7618

被折叠的 条评论
为什么被折叠?



