RAG + Embedding + 向量库
# RAG + Embedding + 向量库
📌 本文适合希望理解 AI 知识库技术(RAG)、Embedding 向量化、向量库检索、本地部署以及与大模型结合机制的开发者。以通俗语言解释概念、原理与实践,内容来源于一次系统性深度对话。
# 📚 一、什么是 RAG(检索增强生成)?
RAG 是 Retrieval-Augmented Generation 的缩写,即 检索增强生成技术。核心思想是:
🧠 当大模型不知道答案时,RAG可以帮它“查资料”,然后生成更准确的回答。
# ✅ 简单流程:
- 用户提问(如:“2024年劳动合同法有哪些修改?”)
- RAG 系统将问题转换为向量(Embedding)
- 去本地或云端的向量数据库中匹配最相关的知识文档
- 把相关文档拼接到 Prompt 中,交给大模型(如 GPT)生成答案
# ✅ RAG 的好处:
- 可以访问最新的、私有的、冷门的知识
- 无需修改大模型参数,只需给它“参考资料”
- 能快速适配不同领域和公司数据
# 🔢 二、Embedding:把文字变成“数学向量”
# ✅ 什么是 Embedding?
Embedding 就是一个“语义翻译器”:把一句话翻译成一个高维向量(比如 768 维)
举例:
"苹果公司" → [0.25, -0.19, 0.87, ...](768维)
1
# ✅ 谁来做 Embedding?
分两种:
- 厂商 API(如 OpenAI
text-embedding-ada-002
) - 本地部署模型(如
bge
,E5
,GTE
)
两者都可以用来:
- 文档入库向量化(一次性)
- 用户提问实时转向量(每次)
# ✅ Token 成本?
- Embedding 模型也按 token 收费
- 但相比 GPT 这类大语言模型便宜非常多(OpenAI 比如 $0.0001 / 1K tokens)
- 本地模型完全免费,只要你有 GPU
# 🧱 三、向量库(FAISS 等)是做什么的?
向量库是一个专门干“找相似内容”的数据库。
比如你给它一个问题向量,它会从里面找出:
“哪个知识片段和这个问题最像?”
# 常见的向量库:
- FAISS(开源、轻量、适合本地)
- Milvus(适合大规模、生产级)
- Weaviate / Qdrant(支持 REST 接口)
# 向量库的生命周期:
- 你构建知识库 → 每段文本都转成向量 → 存进去(一次性)
- 用户提问时 → 问题转成向量 → 去库里找最相似的内容(每次)
# 🔄 四、RAG 向量化流程的本质
RAG 是通过“知识增强”帮助大模型理解问题,让它看懂“冷门”语义。
# 完整流程:
1. 用户提问
2. 用 Embedding 模型把问题转向量
3. 去向量库里匹配最相近的文档(Top-K)
4. 把这些文档作为 context 拼接到 prompt
5. 交给大语言模型生成回答
1
2
3
4
5
2
3
4
5
# ✅ 本质上:
- RAG 是在提问时给大模型“偷偷塞小抄”
- 而不是让它靠记忆死撑
- 所以能有效支持“企业内训文档”、“冷门术语”、“实时数据”
# ⚠️ 五、向量模型与大语言模型一定要区分!
模型类型 | 用途 | 举例 |
---|---|---|
Embedding 模型 | 转换成向量,匹配语义 | text-embedding-ada-002 , bge , E5 |
大语言模型(LLM) | 生成自然语言回答 | GPT-4, DeepSeek, Claude, 通义千问 |
✅ 它们是两个完全不同的模型!
# ❗ 六、向量不一致风险与设计建议
# ❌ 向量空间不一致的坑
如果你用 OpenAI 的 embedding 模型建的知识库,用户提问时却用 DeepSeek 来生成 query embedding,那结果大概率会 匹配不上。
因为不同模型生成的向量坐标空间、维度压缩逻辑、语义表达方式都不同,导致“向量距离”毫无意义。
# ✅ 正确做法:
- 文档 embedding 和问题 embedding 必须来自同一个模型
- 构建知识库时 embedding 模型必须“钉死”,不要换
- 想换就只能“重新构建整个向量库”
# 🖥 七、本地 vs 云部署:对比与选型
维度 | 云厂商 API(如 OpenAI) | 本地部署(如 bge + FAISS) |
---|---|---|
成本 | 按 token 计费(便宜但有量) | 一次部署,无后续成本 |
隐私性 | 数据需上传 | 数据全本地保留 ✅ |
灵活性 | 模型固定、调用方便 | 模型可替换,需自己部署 |
速度 | 取决于网络与并发 | 本地控制更强 |
# 🤖 八、RAG 与微调、Agent 的关系
- RAG: 拿“外部知识”拼接进 Prompt
- 微调: 让大模型真正“学会”知识,适合长期固定内容
- Agent: 负责控制流程,决定什么时候用哪种工具
# ✅ 类比:
- 微调是“教 AI 记住”,RAG 是“告诉 AI 查一下”,Agent 是“AI 的管家”
# ✅ 九、总结一句话:
RAG 是一个“查资料 + 提示生成”的组合系统,Embedding 模型是桥梁,向量库是资料室,大模型是答题者,Agent 是调度员。它们彼此解耦但必须协同统一,尤其是 embedding 一致性是系统成败的关键。
上次更新: 2025/05/19, 17:31:24