RAG 实战:搭建检索问答
检索增强生成(Retrieval-Augmented Generation,简称 RAG)让大模型在回答前先从知识库检索相关片段,再结合这些片段生成答案。它缓解了模型「不懂私有数据」与「容易编造」的问题,是企业落地的常见方案。
为什么用 RAG
大模型训练数据有截止时间,也不掌握你的内部文档。直接问往往答不准。RAG 把外部知识在推理时注入上下文,让答案有据可依,且比全量微调更轻量、易更新。
落地步骤
- 文档切分:把长文切成有重叠的小块,便于精确检索。
- 向量化:用嵌入模型把每块转成向量,存入向量数据库。
- 检索:用户提问同样向量化,取最相近的若干块。
- 拼装提示:把检索到的片段与问题一起交给大模型生成答案。
# 伪代码示意检索到生成
context = retrieve(query, top_k=3)
prompt = f"根据以下资料回答:\n{context}\n\n问题:{query}"
answer = llm.generate(prompt)
注意点
切分粒度影响召回质量,过长会引入噪声,过短会丢失上下文。检索到的内容必须随答案可追溯,便于核对来源。生产环境要评估准确率与延迟,必要时加重排序。
小结
RAG 用「检索加生成」把私有知识接入大模型:切分、向量化、检索、拼装四步构成主链路。它比微调更快上线、更易维护,是构建可信问答系统的首选模式。
参考与延伸阅读
- RAG 原理论文(Lewis 等, 2020)。已核验。https://arxiv.org/abs/2005.11401
- Hugging Face 文档中心。已核验。https://huggingface.co/docs
- PyTorch 官方教程。已核验。https://pytorch.org/tutorials/
本文累计阅读 — 次