RAG架构:检索器与重排序策略
RAG架构:检索器与重排序策略
检索器优化、向量数据库选型与重排序策略详解
原题:请详细阐述RAG(Retrieval-Augmented Generation)系统的架构设计和关键组件,并讨论提升检索效果的技术方法,包括检索器优化、向量数据库选择、重排序策略等?
重排与优化 · 字节真题
30 秒回答
- RAG核心架构三要素(检索器、生成器、融合机制)
- 检索器优化方法(Dense vs Sparse、混合检索、查询改写)
- 向量数据库选型要点(HNSW索引、量化压缩、分布式能力)
- 重排序策略(Cross-Encoder、ColBERT、多阶段漏斗)
回答与解析
答案要点
RAG核心架构三要素(检索器、生成器、融合机制)
检索器优化方法(Dense vs Sparse、混合检索、查询改写)
向量数据库选型要点(HNSW索引、量化压缩、分布式能力)
重排序策略(Cross-Encoder、ColBERT、多阶段漏斗)
实际落地中的关键权衡(延迟vs效果、成本vs覆盖)
RAG核心架构
RAG = 检索器(Retriever) + 生成器(Generator) + 融合机制
用户Query → 检索器 → 相关文档Top-K → 拼接Prompt → LLM生成答案
关键设计:检索结果作为**上下文(Context)**注入,而非直接替换模型参数。
关键组件详解
1. 检索器优化
| 方法 | 核心思想 | 适用场景 |
|---|---|---|
| Dense Retrieval | 双塔Embedding(Query/Doc各编码) | 语义匹配、长尾Query |
| Sparse Retrieval | BM25、TF-IDF词项匹配 | 精确匹配、高频术语 |
| 混合检索(Hybrid) | Dense+Sparse结果融合(RRF/线性加权) | 通用场景首选 |
| 查询改写 | HyDE(生成假设文档)、Query Expansion | Query与Doc语义Gap大 |
Embedding模型选型:MTEB榜单参考,业务域微调(Domain Adaptation)通常比通用模型提升10-20% Recall@K。
2. 向量数据库选择
核心考量维度:
索引算法:HNSW(内存型,延迟低)vs IVF(磁盘型,容量大)
量化压缩:FP32→FP16/INT8,平衡精度与内存
过滤能力:Metadata过滤(权限、时间范围)必须在向量搜索前完成
分布式与实时性:Milvus/Pinecone适合云原生,Faiss适合离线实验
关键参数:ef_construction(建图质量)、M(邻居数)影响召回-延迟权衡。
3. 重排序(Reranking)策略
两阶段漏斗设计:
第一阶段(召回):高Recall,轻量模型,候选池大(如Top-100)
第二阶段(精排):高Precision,重模型,最终Top-K(如Top-5)
Cross-Encoder:Query+Doc拼接输入,交互式编码,精度高但延迟大(~100ms/对)
ColBERT:Late Interaction,Token级相似度,延迟与精度折中
多任务Reranker:同时优化相关性、时效性、权威性
提升效果的关键技术
| 问题 | 解决方案 |
|---|---|
| 上下文过长截断 | 检索结果摘要压缩、层次化检索(先章节后段落) |
| 多跳推理 | 迭代检索(IRCoT)、知识图谱增强 |
| 幻觉与归因 | 检索结果显式引用、置信度阈值过滤 |
| 冷启动/新文档 | 增量索引、实时向量更新管道 |
落地权衡
- 延迟:端到端关键一句:知识库频繁更新时增量索引的工程实践,包括双索引、软删除、异步重建和一致性校验。
面试官还可能这样问
- 问法 1 · 场景切入假设你在做一个电商客服助手,用户问‘这个手机多少钱’,系统从文档里找到价格回复了。但如果用户接着问‘那另一个颜色呢?’,这时候光靠生成器可能答不准。你怎么设计一个检索增强的架构,让系统能自己去找对应的商品详情?
- 问法 2 · 层层追问RAG系统里检索怎么做的?……如果召回的结果不准,你一般从哪些角度优化?……那检索器、向量库、还有重排序,你觉得哪个环节对效果影响最大?……具体到向量数据库,你怎么选?
- 问法 3 · 直球架构给我详细讲讲RAG系统的完整架构,从检索器、向量数据库到重排序,每个组件你怎么选型优化?还有,如果业务要求首条回复在1秒内,你会在哪些地方做取舍?