RAG 检索增强生成:从零到上线端到端架构数据摄取 → 文档清洗 → 切分(Chunking) → 向量化(Embedding) → 索引构建 → 检索(Top‑K/MMR) → 重排序(Rerank) → 生成(Answer)。读写分离:离线批处理构建索引,在线检索走只读路径,保障稳定性。切分与向量化(可验证参数)通用文本 Chunk 大小建议 300–500 tokens,重叠 50–100 tokens,以降低语境断裂。基线嵌入模型:`all-MiniLM-L6-v2`(384 维,适合通用英文/多语场景,体积小、速度快)。相似度度量:Cosine 相似度;索引结构可选 HNSW/IVF(具体取决于向量库)。检索与重排序Top‑K 初值 8–20;结合 MMR 减少冗余,提高信息覆盖面。重排序(cross‑encoder/reranker)用于提升相关性,可在低延迟场景中按需启用。生成与防幻觉严格引用检索到的段落,模板化回答结构(来源/摘要/细节/限制)。设置拒答策略:召回低于阈值(如 Recall@10 < 0.6)时给出「信息不足」。评估与监控检索评估:Recall@K、nDCG;答案评估:基于参考答案的准确率与事实性(faithfulness)。线上监控:命中率、平均延迟、生成长度、参考段落覆盖率。最小可行实现(伪代码)docs = load_docs() chunks = chunk(docs, size=400, overlap=80) vectors = embed(chunks, model="all-MiniLM-L6-v2") # 384 维 index = build_index(vectors, kind="HNSW") def answer(q): hits = search(index, q, top_k=12, method="mmr") reranked = rerank(hits) # 可选 return generate_with_citations(q, reranked) 上线要点版本化语料与索引;检索日志可回放;A/B 对比重排序策略。按业务域划分索引,避免混用造成相关性下降。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.494714s