RAG核心原理

检索增强生成(Retrieval-Augmented Generation)通过将外部知识库与LLM结合,解决了大模型知识截止、幻觉和数据隐私三大痛点。RAG系统将用户问题先转化为向量查询,从知识库中检索相关文档片段,再将检索结果作为上下文输入给LLM生成最终答案。

文档处理流水线

高质量的文档处理是RAG系统的基石。首先需要将原始文档进行格式统一,PDF、Word、网页等不同来源需要不同的解析策略。第二步是文档分块(Chunking),这是影响检索质量的关键因素。

分块策略选择:固定大小分块简单但可能切断语义完整性;基于句子的分块能保持自然语义边界;递归分块则结合两者优势。推荐使用语义分块法,利用Embedding模型判断文本的语义转折点,在主题变化处分块。

块大小推荐在256-1024 tokens之间,具体取决于文档类型。技术文档可以稍大,FAQ类宜小。

向量检索优化

Embedding模型选择:中文场景推荐使用BAAI/bge-large-zh-v1.5或moka-ai/m3e-base。需要注意Embedding维度与向量数据库的兼容性。

混合检索:纯向量检索可能遗漏关键词精确匹配的场景。结合BM25全文检索的混合方案能显著提升召回率。使用RRF(互惠排名融合)或倒数排序融合算法将两种检索结果合并排序。

高级RAG技巧

查询重写:用户原始查询可能表述不清。让LLM将查询重写为更规范的表述后再检索,或生成多个相关查询进行批量检索后去重。

重排序(Re-ranking):初检索后使用Cross-Encoder模型对结果进行精排,将最相关片段排在前面。虽然增加了少量延迟,但能显著提升最终回答质量。

上下文压缩:检索到的文档可能包含冗余信息。使用LLM提取与问题最相关的段落,减少输入给生成模型的Token数量,既节省成本又提升精度。

生产环境考量

RAG系统上线后需要持续监控检索的查准率和查全率。推荐构建评测数据集,包含标准问答对,定期评估系统的回答质量。同时注意文档更新机制,确保知识库内容的时效性。