RAG 入门:用检索增强生成打造企业级智能问答

什么是 RAG?

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种将信息检索大模型生成相结合的技术架构。

核心思路:先从知识库中检索最相关的信息片段,再将这些片段作为上下文传给大模型,让模型基于真实数据生成回答。

用户提问 → 向量检索 → 找到相关文档片段 → 拼入 Prompt → 大模型生成回答

为什么需要 RAG?

大模型的局限性

问题说明RAG 如何解决
知识截止模型训练数据有截止日期外接实时更新的知识库
幻觉模型可能编造事实基于真实文档生成,可溯源
领域知识不足通用模型缺少专业知识注入企业私有文档
成本高长上下文 = 更多 Token只检索最相关片段

RAG vs 长上下文 vs 微调

方案适用场景成本知识更新
RAG大规模知识库即时
长上下文单次处理少量文档每次重传
微调风格/格式定制很高需重新训练

RAG 核心架构

离线阶段:文档预处理

原始文档 → 文本提取 → 文本分块 → Embedding 向量化 → 存入向量数据库

1. 文本分块(Chunking)

将长文档拆分为适当大小的片段。常用策略:

策略块大小适用场景
固定长度256-512 Token通用场景
按段落/章节不固定结构化文档
递归分割256-1024 Token推荐默认选择
语义分块动态高精度场景

2. 向量化(Embedding)

将文本块转换为高维向量,捕捉语义信息:

from openai import OpenAI

client = OpenAI(
    api_key="your-key",
    base_url="https://api.your-relay.com/v1"
)

response = client.embeddings.create(
    model="text-embedding-3-small",
    input="什么是 API 中转站?"
)

vector = response.data[0].embedding  # 1536 维向量

3. 向量数据库选型

数据库特点适用场景
Pinecone全托管、免运维快速起步
Weaviate内置混合搜索企业级
Qdrant高性能、Rust 实现大规模
ChromaDB轻量、嵌入式原型开发
pgvectorPostgreSQL 扩展已有 PG 的团队

在线阶段:检索 + 生成

# 1. 用户提问向量化
query_vector = embed("API 中转站的价格怎么比?")

# 2. 在向量数据库中检索 Top-K 最相似的文档块
relevant_chunks = vector_db.search(query_vector, top_k=5)

# 3. 拼装 Prompt
context = "\n---\n".join([chunk.text for chunk in relevant_chunks])
prompt = f"""基于以下参考资料回答用户问题。如果资料中没有相关信息,请说明。

参考资料:
{context}

用户问题:API 中转站的价格怎么比?"""

# 4. 调用大模型生成回答
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": prompt}]
)

提升 RAG 效果的关键技巧

1. 混合检索(Hybrid Search)

向量检索(语义匹配)与关键词检索(精确匹配)结合,效果优于单一方式:

最终得分 = α × 向量相似度 + (1-α) × BM25 关键词得分

2. 重排序(Reranking)

用 Cross-Encoder 模型对初步检索结果进行精细排序,显著提升 Top-K 的相关性。

3. 查询改写(Query Rewriting)

让模型先将用户的口语化提问改写为更适合检索的形式:

  • 原始:"那个便宜的 GPT 替代品叫什么来着?"
  • 改写:"低成本 GPT-4 替代模型名称"

4. 上下文窗口管理

根据模型的上下文窗口大小和Token 预算决定检索数量:

  • 预算充足:检索 10-15 个块
  • 预算有限:检索 3-5 个高质量块

RAG 的成本优势

以一个包含 10,000 篇文档的知识库为例:

方案每次查询的 Token每 1,000 次查询成本
全量塞入上下文~500K$1,250
RAG(Top-5 检索)~3K$7.50
节省99.4%

典型应用场景

  • 企业客服:基于产品文档自动回答用户问题
  • 法律助手:检索法规和案例辅助律师分析
  • 技术文档搜索:在 API 文档中精准找到答案
  • 学术研究:基于论文库回答研究问题

💡 RAG 中的 Embedding API 也可以通过中转站调用。使用 APIS 费用计算器 估算 Embedding 和对话模型的综合成本。