RAG(Retrieval-Augmented Generation)是将检索(Retrieval)与生成(Generation)相结合的技术,它通过以下工作流程运作:
核心工作流程
用户查询接收
系统接收用户的自然语言查询或问题
查询处理与向量化
使用嵌入模型(embedding model)将查询转换为向量表示
可能包括查询扩展或重写以优化检索
知识库检索
在向量数据库中搜索与查询向量最相似的文档片段
通常返回top-k个最相关的结果(k可根据需要调整)
上下文整合
将检索到的文档片段与原始查询组合
可能包括相关性排序和去重
LLM生成响应
将增强后的上下文输入大型语言模型(LLM)
LLM基于检索内容和自身知识生成最终响应
结果返回
向用户返回生成的答案
可能附带引用来源或相关文档链接
关键组件
知识库:结构化或非结构化的文档集合,通常经过分块和向量化处理
检索系统:通常是稠密检索器(如DPR)或稀疏检索器(如BM25)
生成模型:如GPT、PaLM等大型语言模型
嵌入模型:如OpenAI的text-embedding-ada-002、BERT等
优势特点
知识可更新:只需更新知识库而无需重新训练LLM
来源可追溯:可以显示回答所依据的文档来源
减少幻觉:基于实际文档生成,减少模型编造信息的可能
领域适应性强:通过更换知识库快速适应不同专业领域
这种架构特别适合需要准确、最新信息且要求可验证性的应用场景。
1. 上下文拼接的典型模式
输入结构示例(实际格式可能因模型而异):
[系统指令] 基于以下上下文回答问题: <检索到的文本1> <检索到的文本2> ... [问题] 用户原始问题实际案例(简化版):
你是一个专业助手,请根据提供的医学文献回答: 【文献1】临床试验显示药物X对70%的患者有效... 【文献2】药物X的副作用包括头晕(15%)和恶心(8%)... 问题:药物X的疗效和风险如何?
2. 关键技术细节
3. 为什么这样设计?
信息融合:LLM在生成时能动态结合自身知识(参数化知识)和检索内容(非参数化知识)
实时性:无需重新训练模型即可更新知识(仅需更新检索库)
可解释性:通过检查输入上下文,可分析答案生成逻辑
4. 进阶变体
迭代检索:首轮生成结果触发二次检索(如发现需要更多细节时)
重排序:对检索结果用LLM做相关性重排后再输入
混合生成:部分内容直接引用检索文本,部分由LLM生成