需要RAG的原因:
● 上下文窗口有限:模型一次能处理的文本量是有限的,所有的私人数据根本塞不进去
● 成本高:就算塞得进去,每次提问都要把所有数据发过去,非常消耗Token
● 大海捞针效果差:内容太多,模型不能准确找到真正相关的信息
RAG思路:在AI回答之前,先去知识库里搜一搜,找到最相关的内容,然后把这些内容"喂给"大模型,让它基于真实的文档来生成回答
召回:将用户提问向量化,在向量库中进行相似匹配,查询最相似的若干个片段(快但准度低)
重排:使用重排模型(Cross Encoder-交叉编码器,专门计算文本对相似度的模型),逐个计算用户问题与每个找回片段的语义相关性(慢但准度高)
生成:选出最详细的几个片段 + 用户问题,交给大模型,让大模型根据这几个片段进行回答
召回和重排的区别:
● 召回阶段是把问题和片段分别转成向量,然后算向量之间的距离或者夹角
● 重排阶段是把问题和片段拼在一起输入模型,让模型直接判断"这两段话到底有多相关"
RAG的核心流程:两条链路
● 提问前(数据准备、知识库构建过程):分片 ---> Embedding(向量化) ---> 存储
● 提问后(回答生成、用户提问过程):召回 ----> 重排 ----> 生成
暂无评论,快来抢沙发吧~