前言
你有没有遇到过这样的尴尬?
问AI:"怎么申请信用卡?"
它答:"信用卡是银行发行的支付工具......"
------它根本没回答问题!
为什么?因为它"记性有限",训练数据到2023年就停了,而银行新规早改了。
RAG(检索增强生成)就是解决这个问题的"桥梁",它让AI能"边查资料边答题",把知识库变成它的"第二大脑"。
大模型系列系列目录(持续更新):
一、大模型应用开发的三种模式:Prompt、RAG、微调
想象一下,你有一个超级聪明但"记性有限"的助手(大模型)。你想让它帮你做事,有三种方式:
1. Prompt 工程(提示词工程)
- 怎么做:直接告诉它问题,比如"写一篇关于春天的作文"。
- 优点:简单、快速、零成本。
- 缺点 :它只能靠"训练时学过的知识"回答。如果你问公司内部制度?它不知道!还会"瞎编"------这叫 幻觉(Hallucination)
2. RAG(检索增强生成)
- 怎么做:先给它一本"参考书"(你的私有文档),它查完再回答。
- 优点 :能回答专业、私有、最新问题,不瞎编,成本低。
- 适用场景:企业知识库、客服问答、医疗/法律咨询等。
3. 微调(Fine-tuning)
-
怎么做:用你的数据重新训练模型的一部分。
-
优点:模型真正"学会"你的领域知识。
-
缺点:贵、慢、需要大量数据和算力。
对大多数企业和个人开发者来说,RAG 是性价比最高、最实用的选择!
二、RAG 是什么?核心原理与流程
RAG = Retrieval-Augmented Generation(检索增强生成)
简单说:让大模型"边查资料边答题" ,就像考试允许带课本!
RAG 的工作流程(5步走):
-
分片(Chunking) 把你的长文档(如PDF、Word)切成小段,比如每段512字。
-
向量化(Embedding) 用 Embedding 模型 把每段文字转成数字向量(就像给每段话生成"指纹")。
-
存入向量数据库 把所有"指纹"存进数据库(比如 FAISS、Chroma),方便快速查找。
-
用户提问 → 检索相关片段
- 用户问:"我们公司的年假政策是什么?"
- 系统把问题也转成向量,去数据库里找最相似的几段文字(这叫 召回 + 重排)。
-
生成答案 把问题 + 检索到的文档片段,一起喂给大模型(如 DeepSeek),让它生成基于事实的答案!
🌟 RAG 的最大价值 :解决幻觉 + 支持私有知识 + 无需重新训练模型
三、什么是 Native RAG?
"Native RAG" 并不是一个官方术语,但在社区中常指 最基础、最直接的 RAG 实现方式,特点如下:
- 文档 → 分片 → 向量化 → 存库 → 检索 → 生成
- 没有高级优化:比如没做查询改写、没用重排模型、没加缓存等
- 优点:结构清晰、容易上手
- 缺点:在复杂问题上可能召回不准
💡 对小白来说,先掌握 Native RAG 是必经之路!后续再学 Advanced RAG(加 reranker、多路召回等)。
四、Embedding 模型怎么选?
Embedding 模型是 RAG 的"眼睛"------它决定能否准确找到相关文档。
推荐选择(2026年主流):
| 模型 | 特点 | 适用场景 |
|---|---|---|
| text-embedding-3-small/large(OpenAI) | 效果好,API 调用 | 有预算、追求效果 |
| BGE-M3 / BGE-large-zh(智源) | 中文强、开源免费 | 中文项目首选 |
| E5 / multilingual-E5(微软) | 多语言支持好 | 国际化项目 |
| gte-Qwen(阿里) | 与通义千问生态兼容 | 阿里云用户 |
🔍 小白建议 :中文项目直接用 BGE-large-zh-v1.5(HuggingFace 可下载),效果稳、免费、支持长文本。
五、实战:用 DeepSeek + FAISS 搭建本地知识库
下面我们用 Python 写一个超简版 RAG 系统!
所需工具:
- 大模型:DeepSeek(通过 API 或本地部署)
- Embedding 模型:
BGE-large-zh - 向量库:
FAISS(Facebook 开源,轻量高效) - 文本处理:
LangChain(可选,简化流程)
代码示例(核心逻辑):
ini
from sentence_transformers import SentenceTransformer
import faiss
import numpy as np
# 1. 加载 Embedding 模型
embedder = SentenceTransformer('BAAI/bge-large-zh-v1.5')
# 2. 准备你的知识库(示例)
docs = [
"公司年假政策:工作满1年享5天年假,满3年享10天。",
"报销流程:需提交发票+审批单,3个工作日内到账。",
"入职第一天需签署保密协议和劳动合同。"
]
# 3. 向量化并存入 FAISS
doc_vectors = embedder.encode(docs)
dimension = doc_vectors.shape[1]
index = faiss.IndexFlatL2(dimension)
index.add(np.array(doc_vectors))
# 4. 用户提问
query = "年假有多少天?"
query_vec = embedder.encode([query])
# 5. 检索最相关片段
D, I = index.search(query_vec, k=1) # 找最相似的1个
retrieved_doc = docs[I[0][0]]
# 6. 调用 DeepSeek 生成答案(伪代码)
prompt = f"根据以下信息回答问题:\n\n{retrieved_doc}\n\n问题:{query}"
answer = call_deepseek_api(prompt) # 替换为实际API调用
print(answer)
效果:
用户问:"年假有多少天?" 系统自动找到年假政策,并让 DeepSeek 生成:"根据公司政策,工作满1年可享5天年假,满3年可享10天。"
🛠️ 进阶建议 :加入
reranker(如 bge-reranker)、支持 PDF 解析、加 Web 界面(Gradio/Streamlit)。
结语:RAG 是通往"真正有用 AI"的桥梁
大模型不是万能的,但 RAG 让它变得可靠、专业、可落地 。 无论你是想搭建企业知识库、做智能客服,还是仅仅想让 AI 帮你读文档,RAG 都是你必须掌握的第一步!