RAG 流程概览
RAG(Retrieval-Augmented Generation) 通过检索外部知识库增强 LLM 的生成能力,是构建企业知识问答、文档助手的基础架构。典型流程为:分块 → 嵌入 → 存储 → 检索 → 重排序 → 注入 Prompt → 生成。
Chunking(分块)
分块决定了检索的粒度与质量:
- 固定长度:简单但可能切断语义,适合通用文本
- 语义分块:按段落、小节、标题等自然边界切分,保留完整语义
- 重叠窗口:相邻块有重叠,避免边界信息丢失
- 混合策略:标题+内容、代码按函数/类分块,表格单独处理
Embedding(嵌入)
将文本转为向量,用于相似度计算:
- 模型选择:OpenAI、Cohere、开源如 BGE、m3e、E5 等
- 维度:768–1536 常见,高维度通常效果更好但存储与计算成本更高
- 归一化:多数场景下对向量做 L2 归一化,便于余弦相似度计算
Retrieval(检索)
- 向量检索:FAISS、Milvus、Pinecone、pgvector 等
- 混合检索:向量 + 关键词(BM25),兼顾语义与精确匹配
- 过滤:按元数据(来源、时间、类型)过滤,缩小检索范围
Reranking(重排序)
初检返回 Top-N(如 50)后,用 Reranker 模型精排取 Top-K(如 5):
- 交叉编码:BGE-reranker、Cohere Rerank 等,对 query-doc 对打分
- 成本:只对少量候选重排,延迟与成本可控
- 收益:显著提升最终注入上下文的准确性
优化策略
小结
RAG 的效果取决于分块、嵌入、检索、重排序各环节的协同。从分块策略入手,选好 Embedding 与 Reranker,再结合业务做混合检索与上下文压缩,可系统性地提升 RAG 的准确率与效率。