这篇输出一些关于RAG的个人理解 引出之后计划的Ragas和相关评测方案分析

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

What?

RAG全称 Retrieval-Augmented Generation 即检索增强生成

目前的LLM中存在的主要问题有:

  • 过时知识:不严谨的说 可以将真个LLM看作一个非常高阶的矩阵 矩阵中则是训练时的数据 并且随着时间推移 数据过时 导致模型无法反应最新信息

  • 幻觉:生成不准确或虚构内容

  • 推理过程不透明:训练完毕的模型在进行推理的时候 本质上是一种黑箱的过程 纠错定位难度大

所以在知识密集型(对知识的准确度依赖度高)任务上 不做任何修改或增强的时候效果会比较差

其中一个优化的方法就是RAG 它旨在通过结合外部数据源中的知识 来增强当前信息的可阅读性 也在上方所提到的知识密集型任务中表现尤为突出

(当然了 前提是这个依赖的外部数据源本身的数据质量得以保证)

他的基础流程可以为:使用输入序列x检索文档z,将检索的结果作为附加上下文生成目标序列

而RAG本身可以分为 检索器&&生成器

检索器 & 生成器

  • 检索器:return the most relevant top-K result by the input query

  • 生成器:generating output according to the top-K doc and original query

(中文写起来反倒比英文繁琐)

检索器如何确定相关度?

向量空间

首先将对应的增强文档知识 放到向量空间中存储

然后将检索的query (这里可以做一些类似改写归一的操作)丢进同一个向量空间 计算相对应的余弦值 即计算文档和查询之间的相似度 通过这种方法就能确定出最相关的文档

flag: DPR Dense Passage Retriver为一代表性双塔高效处理方法

在计算出相关的输出之后 就将对应所有输入资源拼接 给到生成器

生成器采用的可以是类型Seq2seq的生成模型 生成自然语言答案

文章中所提到的生成模型是BART,Bidirectional and Auto-Regressive Transformer 经典Transformer模型的一种变体

而在RAG的使用中 一般会是多个文档->多个语句这么一个多对多的问题 所以就衍生出了两种框架模式

  • RAG-Sequence:生成器以序列化形式使用每个检索到的文档生成单部分答案,最后基于所有文档得到的生成结果在进行整合 (一对一)

  • RAG-Token:生成器逐个Token的生成答案,每一个token都可以动态检索所有文档预料 (多对一)

这个就很好理解两者的效果差异了 当检索度较高 内容的区分度 主题较一致 上下午无冲突的时候 此时使用RAG-Token的整体效果就很好

而前者的话 则是相反的预料场景较有优势(K值大 检索精度低 上下文有主题分歧) 一对一的模式保证了整体生成的稳定性 多对一的话反而会带来更多的噪声

这里的话就先不做探讨了

针对这里的一些方案 文章也得出了对应的一些结果

RAG之

优点

  • 知识覆盖广泛:通过检索外部知识库,RAG 能够获取大量的信息来弥补生成模型知识的不足。
  • 生成结果更加自然:相比纯检索模型,RAG 可以生成更加自然的语言回答,而不是简单地从检索结果中提取答案。
  • 知识库动态更新:外部知识库可以随时更新,确保 RAG 能够适应新信息。
    局限性
  • 计算成本高:RAG 在推理过程中需要同时执行检索和生成任务,计算资源需求较高,尤其是在大规模知识库下的检索步骤。
  • 信息聚合难:在 RAG-Sequence 变体中,不同文档可能提供互相冲突的信息,如何有效地聚合这些信息是一个挑战。

flag:

From Local to Global: A Graph RAG Approach to Query-Focused Summarization
https://blog.csdn.net/m0_46686599/article/details/140608213
https://blog.csdn.net/m0_56255097/article/details/144033101?ops_request_misc=&request_id=&biz_id=102&utm_term=GraphRAG&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-144033101.142^v101^pc_search_result_base9&spm=1018.2226.3001.4187

LIGHTRAG: SIMPLE AND FAST RETRIEVAL-AUGMENTED GENERATION
https://blog.csdn.net/qq_41739364/article/details/143198970?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522601399ce6c450be68884dab98ef2f5f2%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=601399ce6c450be68884dab98ef2f5f2&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-143198970-null-null.142^v101^pc_search_result_base9&utm_term=lightrag&spm=1018.2226.3001.4187
https://blog.ioiogoo.cn:54330/2024/11/07/%e6%b7%b1%e5%ba%a6%e8%a7%a3%e6%9e%90lightrag%e4%bb%a5%e5%8f%8a%e5%af%b9graphrag%e7%9a%84%e4%b8%80%e4%ba%9b%e6%80%9d%e8%80%83/

Retrieval-Augmented Generation for Large Language Models: A Survey
https://blog.csdn.net/weixin_43221845/article/details/142756389
https://blog.csdn.net/2301_78285120/article/details/136280182?ops_request_misc=%257B%2522request%255Fid%2522%253A%252244cb09687fc3a36aad9c5544829396ee%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=44cb09687fc3a36aad9c5544829396ee&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-136280182-null-null.142^v101^pc_search_result_base9&utm_term=advanced%20rag&spm=1018.2226.3001.4187

VisRAG: Vision-based Retrieval-augmented Generation on Multi-modality Documents
https://qmmms.gitbook.io/idea/rag/visrag

Llama Index
https://blog.csdn.net/qq_40491305/article/details/130898052

Neo4j LLM-Graph-Builder
https://neo4j.ac.cn/labs/genai-ecosystem/llm-graph-builder/

https://ku.baidu-int.com/knowledge/HFVrC7hq1Q/pKzJfZczuc/UjsKrGZ2w_/1zGpl4Uml04-gK