RAG技术的核心思想是:在生成回答之前,先从外部知识库中检索相关文档片段,然后将其作为上下文提供给生成模型,从而提升回答的准确性和时效性。
RAG流程通常分为索引、检索和生成三个阶段。索引阶段将原始文档切分为固定长度的块,使用嵌入模型将每个块转换为向量,并存入向量数据库(如FAISS、Pinecone)。检索阶段接收用户查询,同样转换为向量,在数据库中找到最相似的K个文档块。生成阶段将查询和检索到的文档块拼接成提示,输入给LLM生成最终回答。
检索策略直接影响RAG效果。常用的有稠密检索(基于嵌入向量相似度)和稀疏检索(如BM25)。实际应用中常采用混合检索,结合两者优势。此外,可以加入重排序步骤,对检索结果进行二次筛选。
生成模型的选择也很重要。较小的模型(如7B参数)在上下文有限时表现不错,但面对复杂推理可能需要更大模型。提示模板的设计需要清晰区分查询和文档,避免模型混淆。
RAG的优势在于无需重新训练模型即可更新知识,且能提供引用来源。但存在检索质量不稳定、长上下文处理效率低、模型可能忽略检索结果等问题。改进方案包括:使用结构化检索(如表格)、多轮检索、自适应检索等。
在实际应用中,RAG已被广泛用于客服系统、知识库问答、文档摘要等场景。结合LangChain等框架,可以快速搭建RAG管道。需要注意的是,检索到的文档可能包含噪声或矛盾信息,需要设计过滤机制。