从基础原理到高级策略,构建生产级检索增强生成系统
Retrieval-Augmented Generation(检索增强生成)
在 LLM 生成答案之前,先从外部知识库检索相关文档,将检索结果作为上下文注入 Prompt,使模型能够"基于事实"回答问题。
语义完整性差,可能切断句子和段落
按换行符、句子、段落逐级切分
基于内容主题边界切分,质量最高
OpenAI 最新模型,体积小速度快,适合通用文档检索
更高维度更强性能,中文语义理解显著提升
阿里 / 智华开源,中文效果优秀,支持本地部署
MTEB:Massive Text Embedding Benchmark,涵盖 58 个数据集的综合评估基准。生产环境优先在目标领域数据上做 微调或知识蒸馏。
向量检索擅长语义相似,但 漏掉精确关键词匹配。例如:型号、代码片段、人名、精确数值。
# Hybrid Search 伪代码 query_vec = embed(query) query_terms = tokenize(query) # 1. 向量检索 Top-K vec_results = vector_db.search( query_vec, k=20) # 2. BM25 关键词检索 bm25_results = bm25_index.search( query_terms, k=20) # 3. RRF 融合(k=60) def rrf(results, k=60): scores = defaultdict(0) for rank, doc in enumerate(results): scores[doc.id] += 1 / (k + rank) return sorted(scores, key=scores.get, reverse=True)
用 LLM 将口语化问题改写为检索友好的表达,提升检索命中率。
复杂问题拆分为多个简单子查询,分别检索后合并结果。
让 LLM 先生成"假设性答案"再检索,或先提炼高层概念再细化。
向量数据库做 粗筛(召回快),Cross-Encoder 做 精排(质量高)。
RAG 评估指标与优化策略 — 包含 RAGAS、Trulens 等主流评估框架对比...
全文检索系统的评估方法 — BM25 评估指标与调参技巧...
NLP 预训练模型综述 — BERT、GPT 系列模型架构对比...
重排后 Doc_042 从第 3 位升至第 1 位,显著提升最终答案质量。
噪声多,上下文长
去除了低相关片段
核心信息保留 95%+
无论问题难易,一律检索。简单问题不需要外部知识,复杂问题可能检索不足。
让 LLM 自主判断 是否需要检索,以及检索多少。
CRAG(Corrective RAG):当检索结果质量低时,自动触发网络搜索补充,或降级为纯 LLM 回答。
在向量检索前,用元数据(时间、来源、类型等)预过滤,减少检索空间,提升精度。
组合策略:先文档级粗筛 → 段落级精排 → 句子级提取答案