在工业应用中,大型语言模型(LLMs)能够执行多种任务,如回答特定主题的问题、编写代码、解释信息图表、识别产品缺陷等。然而,这些模型存在显著的局限性,尤其是模型训练和微调的成本高昂,这意味着为特定用例定制大型模型是不切实际的。因此,模型所依赖的知识可能是过时的或与领域不相关。
检索增强生成(RAG)技术应运而生,它允许检索与问题相关的文档,并在查询中使用这些文档来增强多模态模型。这样,就可以利用这些信息来回答更具体的问题。RAG试图解决当前LLMs的一个基本问题:它们是时间固定的。由于训练模型需要高昂的资本成本和资源,因此很少对模型进行特定用例的训练,这意味着许多人依赖于基础模型,如OpenAI的GPT系列。
RAG通过程序化编写信息丰富的提示来帮助克服这些问题。例如,考虑一个使用LLMs回答有关软件文档问题的应用程序。可以使用RAG来识别与问题相关的文档(例如“这是什么产品”),然后将这些文档包含在提示中,并指导模型这些文档是上下文。通过RAG,可以提供包含自己数据的文档,这些数据与查询相关,并且代表了拥有的最新信息。
RAG的工作原理
RAG的工作流程包括以下步骤:用户提出一个问题,然后搜索知识库以找到与查询相关的上下文,将上下文添加到发送给LLM的提示中,LLM返回响应。要使用RAG,需要有一个内容数据库来搜索。在许多方法中,使用向量数据库,它存储文本或图像数据(例如文档页面或汽车零件的图像)和用于搜索数据库的向量。
向量是数据的数值表示,使用机器学习模型计算。这些向量可以比较以找到类似的文档。向量数据库启用了语义搜索,这意味着可以找到与提示最相关的文档。例如,可以提供文本查询“Toyota”,并检索与该提示相关的图像。
在实际应用中,可以使用RAG来搜索与特定汽车型号相关的全新汽车零件图像(例如“Toyota Camry汽车门”)。然后,这些图像可以用于提示,例如:“下图显示了Toyota Camry汽车门。确定任何图像是否包含划痕或其他损坏。如果图像包含任何损坏,请详细描述损坏。”在提示下方,将提供来自向量数据库的参考图像(全新汽车零件)和用户或应用程序提交的图像(应评估价值的零件)。如果用户提交的图像包含划痕,模型应该识别划痕并描述问题。然后,这可以作为报告的一部分,由人员审查以决定如何评估汽车的价值,或者作为自动化系统的一部分。
RAG在计算机视觉中的应用
多年来,计算机视觉领域受到了自然语言处理领域发展的极大影响。RAG方法最初是专门为文本和LLMs开发的。但是,现在有新一代的模型可用:具有视觉能力的LMMs。这些模型能够使用图像作为参考来回答自然语言问题。
使用RAG,可以为提示检索相关图像,从而在提问时提供视觉信息作为参考。微软研究院在2023年10月发表的一篇论文指出,与没有参考的情况下提问相比,提供参考图像可以提高性能。例如,该论文进行了一项测试,以读取速度表。使用GPT-4V和两个示例(少量学习)成功读取了速度表,这是GPT-4V在没有示例或只有一个示例的情况下无法完成的任务。
RAG作为视觉应用的一部分有很多可能性。例如,可以使用RAG构建一个可以引用现有缺陷图像的缺陷检测系统。或者,可以使用RAG作为数据库中可能不为人知且不为LLM所知的现有徽标的一部分的徽标检测系统。还可以将RAG作为少量标记系统的一部分。考虑一个场景,有1000张汽车零件图像,希望对这些图像进行标记以训练可以在设备上运行的微调模型。可以使用RAG和现有的一组标记图像来提供用于标记其余数据集的上下文。
检索增强生成(RAG)有助于解决LLMs在一个大型训练作业中训练的约束;它们很少重新训练。有了RAG,可以在提示中提供相关的上下文信息,然后用于回答问题。RAG涉及使用向量数据库找到与查询相关的信息,然后使用这些信息在提示中。