RAG(Retrieval-Augmented Generation,检索增强生成)是当前企业AI应用中使用最广泛的技术架构之一。其核心思路:在LLM生成回答之前,先从外部知识库中检索相关文档片段,将其作为上下文提供给模型,从而让模型的回答基于真实文档而非训练数据中的”记忆”。这一方案有效缓解了LLM的两大痛点:幻觉(Hallucination)和知识截止日期(Knowledge Cutoff)。
## RAG的标准流程
**文档处理阶段(离线)**:
1. **分块(Chunking)**:将长文档切分为适合嵌入的小块(通常256-1024 tokens),分块策略(固定大小、语义分块、递归分块)直接影响检索质量
2. **嵌入(Embedding)**:用嵌入模型(OpenAI text-embedding-3、BGE、Nomic等)将每个文块转化为高维向量
3. **存储(Indexing)**:将向量存入向量数据库(Chroma、Pinecone、Weaviate、pgvector等)
**检索生成阶段(在线)**:
1. 用户提问 → 问题向量化
2. 向量相似度搜索 → 召回Top-K相关文块
3. 将文块+用户问题组装为提示词
4. LLM生成最终回答,附带引用来源
## 进阶RAG技术
**混合检索(Hybrid Search)**:结合向量语义检索和BM25关键词检索,用RRF(Reciprocal Rank Fusion)融合排序,提升召回率。对于专有名词和精确查询,纯向量检索容易漏检,混合检索效果更稳定。
**重排序(Reranking)**:召回Top-K文块后,用更精细的交叉编码器(Cross-Encoder)模型对文块重排序,选出真正最相关的Top-N。Cohere Rerank、BGE-Reranker等是常用选项。
**GraphRAG(微软)**:将文档内容构建为知识图谱,利用图结构捕捉实体关系,适合需要推理跨文档关联的复杂查询。
**Self-RAG**:模型自主决定何时检索、检索什么,而非对所有查询都强制检索,减少不必要检索对生成质量的干扰。
参见[本地LLM部署](https://sunqi.org/local-llm-deployment-zh/);[AI工作流自动化](https://sunqi.org/ai-workflow-automation-zh/);[LlamaIndex文档](https://docs.llamaindex.ai/)。




