RAG是什么?
RAG(Retrieval Augmented Generation),检索增强生成,可以理解为知识增强外挂。是一种使大语言模型在生成回答时能够读取外部信息的技术,该技术可以简单理解为生成内容之前,先从外部知识库中检索出相关信息作为参考。
举个例子:
提问:『 我们公司几点下班?』
--大模型回答这个问题,一般不会准确,因为它没见过我们公司的《员工手册》
##################### RAG如何做? ###################
step1:基于用户的提问,到《员工手册》里找到最相关的N个内容片段;
step2:把用户提问和N个内容片段一起送到大模型中,获得答案。
###################################################
提问:『 请参考员工手册,回答以下问题:我们公司几点下班?
员工手册内容如下:遵守上班时间不迟到、不早退......工作时间每周一至周五上午9:00到下午5:00......
』
回复:『 下班时间是下午5点,是根据对工作时间每周一至周五上午9:00到下午5:00分析而来的。』
为什么有RAG?
RAG的优势或特点:
1、支持实时性和动态更新,外部知识库可以随时更新,而不需要重新训练整个模型;
2、可解释性和可控性,RAG模型通过检索具体的文档片段来生成答案,这些片段可以被用户或开发者查看和验证;
3、 减少幻觉现象,大型预训练模型有时会产生与事实不符的输出,即所谓的“幻觉”现象,提高生成内容的准确性。
注:“幻觉”是指模型生成不正确、无意义或不真实文本的现象。比如,逻辑谬误、捏造事实、数据驱动偏见。
4、 灵活性和扩展性,可以针对特定领域的知识库进行优化,以提高特定任务的性能。
5、多模态支持,RAG模型不仅可以处理文本信息,还可以集成其他类型的数据(如图像、视频)进行检索和生成。
RAG架构
RAG关键技术
1、指代消除
2、问题扩展
3、混合检索
向量检索的短板:通过少量字符进行检索时,向量检索效果不佳
搜索一个人或物品的名称(例如马斯克,iPhone 15)
搜索缩写词或短语(例如,vpn、邮箱前缀)
关键词检索的短板:语义理解不足,难以深入理解查询意图背后的语义含义
例如,用户查询“明天的天气如何”,系统可能只关注“明天”和“天气”这两个关键词,无法准确理解用户是希望查询当地还是特定地区的天气。
比如,“计算机”和“电脑”是同义词,但如果用户输入其中一个词进行检索,而文档中使用的是另一个词,就可能导致相关信息的遗漏。
4、结果合并
5、结果重排
为什么要重新排序?
检索环节的存在的问题:检索环节引入了向量检索,其实现方式是通过将用户提问以及待查询的文本分片进行嵌入(Embedding)处理,然后通过计算两个向量之间的余弦距离,找到最相近的结果。该过程的优势在于计算高效,缺点是结果不精确。
重排环节的优势:重排环节不经过嵌入(Embedding)过程,避免了语义的损失,得到的结果更加精确,Llamaindex 实验表明重排对平均倒数排名(MRR)提升20%。
效果评估指标
检索环节:
Context Precision(上下文精度)
Context Recall(上下文召回)
生成环节:
Faithfulness(忠诚度)
Answer relevance(答案相关性)
RAG面临的一些挑战
1、内容切片不够好,容易切碎。
2、文本模型生成的向量质量不可控。
3、召回的内容太少不容易命中答案,召回的内容太多容易干扰答案生成。
4、多次调用LLM,生成回复的时间太长