引 言
当前大模型在金融行业最广泛的应用之一就是知识问答,而支撑该应用的技术正是当下火热的检索增强生成(Retrieval Augmented Generation)技术,简称 RAG。因企业具体的业务往往需要注入特定的知识,比如ChatBI中企业数据库的相关知识、客服助手中客服FAQ等,所以RAG不仅可以应用在知识问答中,也在很多的业务场景中均有应用。本文将带读者了解RAG技术,并以知识问答为例帮助读者快速搭建一套属于自己RAG。
什么是RAG?
RAG全称为检索增强生成(Retrieval Augmented Generation),“检索”顾名思义是对大模型外挂知识库的检索,“增强生成”则是把检索得到的信息通过prompt提示给大模型使其从包含外部信息中学习知识(in-context learning)并生成正确答案。
为什么产生RAG技术?
RAG的产生主要源自于大模型自身存在的局限性。
时效性
大模型的知识更新就停留在它完成训练的那一刻,而重训一次大模型硬件、能源、时间等成本消耗非常高,仅为更新知识频繁重训大模型并不现实。因此,大模型无法回答近期发生的事件、趋势等具有时效性的问题。
缺少专业领域知识
大模型的训练虽然用了海量的知识,但仍然无法覆盖所有领域,比如法律、医学及企业内部知识等,所以面对未知的知识问题时,大模型无法给出有效的回答。
幻觉问题
面对未知的问题,大模型仍然会给出看似合理的错误回答,让用户难辨真假,这就是大模型的幻觉问题。大模型产生幻觉是因其训练的本质,即经过大量的训练后,预测下一个token。所以面对未知的问题,大模型不知“自己不知道”,只是在预测下一个概率高的token。
图1 大模型预测下一个token
RAG的出现就是为了解决上述问题,通过外挂知识库,解决时效性问题、补充领域知识;通过将检索内容作为背景知识供大模型参考,减少幻觉。
RAG的核心组件
图2 RAG流程
(图源自论文:Gao, Yunfan et. “Retrieval-Augmented Generation for Large Language Models: A Survey.” arXiv e-prints (2023): arXiv-2312)
上图展示了RAG的工作流程,对于用户的问题“如何评价你们OpenAI公司……”,从事先已经建立好索引的知识向量库中(图中索引模块)检索出与问题相关的文档片段“片段1《Sam Altman 回归 OpenAI 重任CEO……》、片段2《大戏落幕?Sam Altman将回归OpenAI……》、片段3《OpenAI 人事震荡……》”(图中检索模块),再将用户问题和检索到知识片段拼接成一个prompt“问题:如何评价你们OpenAI公司的……,请基于以下资料回答上述问题:片段1……,片段2……,片段3……”提交给大模型LLM生成最终的回答(图中生成模块)。
从上述流程不难总结出,RAG包含以下核心组件:知识向量库,检索和LLM生成。
知识向量库
在介绍知识向量库前,我们先了解下知识向量,将知识数据通过embedding算法映射到一个固定维度的向量空间中,从而捕捉到知识数据的语义就是知识向量。用相同的embedding算法将用户问题映射到同一向量空间,用户问题和知识的语义相似度就可以通过两个向量在空间中的距离来度量。知识向量库顾名思义就是专门用来高效存储和检索向量数据的数据库。常见embedding算法有M3E、text-embedding-3、fasttext等,常见的向量库有faiss、Milvus、Elasticsearch等。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等,