目前我们处于RAG的2.0进化到3.0的过程中。即从2.0的多路查询混合检索,检索结果重排序等机制,到检索和多步推理结合的RAG3.0时代,解决RAG不仅是检索,更是思考的难题

摘要:


抛出一些基础问题

  • 相似性=相关性吗
  • rerank 排序的依据是什么
  • 是什么疑问嵌入模型和上下文嵌入模型,那种更好
  • 如何评估rag的效果

01-1RAG的系统流程

image.png

**RAG系统是由75%的检索和25%的生成所组成**

01-1.1 外部数据

RaG数据治理也会有一些反常识,比如随着数据的增加,性能指标先上升后下降,然后再上升,还有有时增加跟已有数据完全不相关的数据,反而会激活和提升rag准召率。 image.png 数据的复杂性还包括如下两方面,第一,数据的来源五花八门,比如网页、书籍、百科代码、其他等等各种渠道。第二,数据加工流程的繁琐,比如正文提取、质量过滤文档、去重降噪、数据集净化等等。 此外你还要考虑数据收集渠道的局限性,数据的多样性、个人的主观性、数据规模及评估数据质量等等。 数据治理对我来说是一门工程,我称之为数据工程。既然是工程,就一定有对应的方法论和实施标准。坚定的给领导和客户洗脑,刚开始的时候就洗。我会告诉他们数据就是AI性能的天花板,加强需求方对数据的重视程度,以及做好客户的预期管理,文档数据准备好,我们就进入了第二步,创建分块。

01-1.2 文档分块

image.png

image.png 分块的必要性,即满足嵌入模型要求和提升检索效果。原因是不分块,文档只有一个嵌入向量,不具备任何检索的条件。同时不分块,自身的体积过大,无法大满足嵌入模型的要求。

分块的五种策略

 image.png

 1. 第一个就是固定大小的分块,  2. 语义分块  3. 递归分块  4. 基于文档结构的分块  5. 过大模型给我们做分块

01-1.3 嵌入模型

image.png 词嵌入和句嵌入,把文字转化为数学向量,大致在13-17年大量词嵌入模型(glove、word2vec等静态模型)涌现,但是存在问题词语语境不同会有多种含义。 后来这个问题在Transformer时代得到解决,产生了由Transformer驱动的上下文嵌入模型,比知:BERT、DStiIBERT、ALBERT等.