什么是RAG
全称Retrieval augmented generation (RAG)
检索增强生成是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。
RAG 对于诸如回答问题和内容生成等任务,具有极大价值,因为它能支持生成式 AI 系统使用外部信息源生成更准确且更符合语境的回答。它会实施搜索检索方法来回应用户的意图并提供更相关的结果。
RAG工作流
- 数据源:可以是搜索引擎、ES、向量数据库(milvus/faiss/chromadb/pinecone)等
- Embedding: 如果数据源为向量数据库,则需要将数据和用户请求转换成向量表示, 可以选择OpenAI或者谷歌的embedding模型,也可以自己训练,比如使用BERT/RoBERTa
- prompt模板:将用户请求和数据源转换成prompt,可以使用模板填充的方式,也可以使用模板+数据源的方式
- LLM: 将prompt输入到LLM中,生成结果。视任务的复杂程度定,可选择模型比较多,如GPT-3.5/Gemini
RAG的优势与挑战
优势
对比于微调大模型,RAG有以下优势:
- 大模型外挂: RAG 模型利用外部知识库的能力非常高,它能够引用大量信息,从而提供更深入、准确且有价值的答案,这明显增强了生成文本的可靠性。
- 实时性:RAG 模型具备及时更新检索库的机制,能够实现知识的即时更新,而无需重新训练模型。这意味着 RAG 模型可以提供与最新信息相关的回答,非常适合对实时性要求较高的应用。
- 可解释性:由于 RAG 模型的答案直接来自检索库,它的回复具有很强的可解释性,减少大模型的幻觉。用户可以核实答案的准确性,从信息来源中获取支持。
- 定制性:具备高度的定制能力,可以根据特定领域的知识库和提示进行定制,从而迅速掌握该领域的专业知识。这使得 RAG 模型适用于广泛的领域和应用,比如客服系统、虚拟助理等。
- 安全性:通过限制知识库的权限来实现安全控制,确保敏感信息不会泄露,从而提高了数据的安全性。
- 低成本:RAG 模型在数据上具有很强的可扩展性,可以直接将大量数据更新到知识库中,而无需重新训练模型。这样做不仅减少了训练的成本,更经济高效。
挑战
- RAG 依赖于外部知识。如果检索到的信息不正确,RAG 就会生成不准确的结果。
- RAG 的检索部分涉及在大型知识库或网络上进行搜索,这从计算量方面来看,不仅费用高昂,而且速度慢;尽管相比于微调,速度还是快一些,费用也要低一些。
- 要将检索和生成部分无缝集成到一起,这需要进行精心设计和优化,而设计和优化可能会在训练和部署方面造成潜在难题。
RAG的应用场景
1.问答系统:RAG 可以用于构建强大的问答系统,能够回答用户提出的各种问题。它能够通过检索大规模文档集合来提供准确的答案,无需针对每个问题进行特定训练。
2.文档生成和自动摘要:RAG 可用于自动生成文章段落、文档或自动摘要,基于检索的知识来填充文本,使得生成的内容更具信息价值。
3.智能助手和虚拟代理:RAG 可以用于构建智能助手或虚拟代理,结合聊天记录回答用户的问题、提供信息和执行任务,无需进行特定任务微调。
4.信息检索:RAG 可以改进信息检索系统,使其更准确深刻。用户可以提出更具体的查询,不再局限于关键词匹配。