RAG 相关论文浅读
这篇输出一些关于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