【文章转载】Lance Martin的关于RAG的笔记

news/2024/5/19 5:29:41

转载自微博@黄建同学

从头开始学习 RAG,看Lance Martin的这篇笔记就行了,包含了十几篇论文和开源实现!

——
这是一组简短的(5-10 分钟视频)和笔记,解释了我最喜欢的十几篇 RAG 论文。我自己尝试实现每个想法(所有代码都是开源的),并根据图表分组。

代码:github.com/langchain-ai/rag-from-scratch
视频播放列表:youtube.com/playlist?list=PLfaIDFEXuae2LXbO1_PKyVJiQ23ZztA0x

一些亮点: #程序员##ai探索计划#

★RAG 真的死了吗?
RAG 将如何随着长期 LLM 而改变。
视频: youtu.be/SsHUNfhF32s

★自适应RAG 根据复杂程度动态地将查询路由到不同的 RAG 方法。使用Cohere cmd-R 在 LangGraph 中实现。
视频: youtu.be/04ighIjMcAI
代码: github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_adaptive_rag_cohere.ipynb
论文:arxiv.org/abs/2403.14403

★矫正-RAG 在循环单元测试中自我纠正检索错误,以确定文档相关性并返回到网络搜索。在 LangGraph 中实现了Mistral AI -7b + Ollama,以便在本地运行。
视频: youtu.be/E2shqsYwxck
代码: github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_crag.ipynb
论文:arxiv.org/pdf/2401.15884.pdf

★自身RAG
使用循环单元测试自行纠正 RAG 错误,以检查文档相关性、答案幻觉和答案质量。在 LangGraph 中实现,使用Mistral AI -7b + Ollama进行本地运行。
代码:github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_self_rag.ipynb
代码(本地):github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_self_rag_local.ipynb
论文:arxiv.org/abs/2310.11511.pdf

★查询路由
将问题引导至正确数据源的各种方法(例如逻辑、语义等)。
视频: youtu.be/pfpIndq7Fi8
代码: github.com/langchain-ai/rag-from-scratch/blob/main/rag_from_scratch_10_and_11.ipynb

★查询结构
使用 LLM 将自然语言转换为其中 DSL 是一种与给定数据库(SQL、Cypher 等)交互所需的领域特定语言。
视频: youtu.be/kl6NwWYxvbM
代码: github.com/langchain-ai/rag-from-scratch/blob/main/rag_from_scratch_10_and_11.ipynb
博客:
1/ blog.langchain.dev/query-construction/
2/ 深入研究 graphDB:blog.langchain.dev/enhancing-rag-based-applications-accuracy-by-constructing-and-leveraging-knowledge-graphs/
3/ 查询结构文档: python.langchain.com/docs/use_cases/query_analysis/techniques/structuring/
4/ 自查询检索器文档: python.langchain.com/docs/modules/data_connection/retrievers/self_query/

★多表示索引
使用 LLM 生成针对检索进行优化的文档摘要(“命题”)。嵌入这些摘要以进行相似性搜索,但将完整文档返回给 LLM 进行生成。
视频: youtu.be/gTCU9I6QqCE
代码: github.com/langchain-ai/rag-from-scratch/blob/main/rag_from_scratch_12_to_14.ipynb
论文: arxiv.org/pdf/2312.06648.pdf

★PAPROT
将语料库中的文档聚类,并递归地总结相似的文档。将它们全部编入索引,生成较低级别的文档和摘要,可以检索这些文档和摘要来回答从详细到更高级别的问题。
视频: youtu.be/z_6EeA2LDSw
代码: github.com/langchain-ai/langchain/blob/master/cookbook/RAPTOR.ipynb
论文: arxiv.org/pdf/2401.18059.pdf

★ColBERT
使用受上下文影响的嵌入来提高文档和查询中每个标记的嵌入粒度。
视频: youtu.be/cN6S0Ehm7_8
代码: github.com/langchain-ai/rag-from-scratch/blob/main/rag_from_scratch_12_to_14.ipynb
论文:arxiv.org/abs/2004.12832

★ 多次查询
从多个角度重写用户问题,为每个重写的问题检索文档,返回所有查询的唯一文档。
视频: youtube.com/watch?v=JChPi0CRnDY
代码: github.com/langchain-ai/rag-from-scratch/blob/main/rag_from_scratch_5_to_9.ipynb
论文: arxiv.org/pdf/2305.14283.pdf

★RAG融合
从多个角度重写用户问题,检索每个重写问题的文档,并组合多个搜索结果列表的排名,以使用倒数排名融合 (RRF) 生成单一、统一的排名。
视频: youtube.com/watch?v=77qELPbNgxA
代码: github.com/langchain-ai/rag-from-scratch/blob/main/rag_from_scratch_5_to_9.ipynb
项目:github.com/Raudaschl/rag-fusion

★ 分解
将问题分解为一组子问题/问题,可以按顺序解决(使用第一个问题的答案 + 检索来回答第二个问题),也可以并行解决(将每个答案合并为最终答案)。各种工作,如从最少到最多提示和 IR-CoT 提出了可以利用的想法。
视频: youtube.com/watch?v=h0OPWlEOank
代码: github.com/langchain-ai/rag-from-scratch/blob/main/rag_from_scratch_5_to_9.ipynb
论文: arxiv.org/pdf/2205.10625.pdf,arxiv.org/pdf/2212.10509.pdf

★ 后退提示
首先提示 LLM 提出一个关于高级概念或原则的通用后退问题,并检索有关它们的相关事实。使用此基础来帮助回答用户问题。
视频: youtube.com/watch?v=xn1jEjRyJ2U
代码:github.com/langchain-ai/rag-from-scratch/blob/main/rag_from_scratch_5_to_9.ipynb
论文:arxiv.org/pdf/2310.06117.pdf

★ HyDE
LLM 将问题转换为回答问题的假设文档。使用嵌入的假设文档检索真实文档,前提是 doc-doc 相似性搜索可以产生更多相关匹配。
视频:youtube.com/watch?v=SaDzIVkYqyY
代码:github.com/langchain-ai/rag-from-scratch/blob/main/rag_from_scratch_5_to_9.ipynb
论文:arxiv.org/abs/2212.10496
在这里插入图片描述


http://www.mrgr.cn/p/58774802

相关文章

【蓝桥杯省赛真题40】python摘苹果 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

目录 python摘苹果 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python摘苹果 第十三届蓝桥杯青少年组python编程省赛真题 一、题目要求 &…

一线实战,一次底层超融合故障导致的Oracle异常恢复

背景概述 某客户数据由于底层超融合故障导致数据库产生有大量的坏块,最终导致数据库宕机,通过数据抢救,恢复了全部的数据。下面是详细的故障分析诊断过程,以及详细的解决方案描述: 故障现象 数据库宕机之后&#xff0c…

K8S基础概念

一、MASTER Kubernetes里的Master指的是集群控制节点,在每个Kubernetes集群里都需要有一个Master来负责整个集 群的管理和控制,基本上 Kubernetes的所有控制命令都发给它,它负责具体的执行过程,我们后 面执行的所有命 令基本都…

C# 给图片添加文字水印

目录 应用场景 开发运行环境 方法说明 方法代码 调用示例 小结 应用场景 在某些应用项目(如电子档案信息管理)中,查看电子图片信息是经常使用到的功能,此时我们就需要给显示在浏览器中的图片添加文字水印版权或提示信息。…

如何设置微信自动回复?教你快速上手!

自动回复对于需要在微信上洽谈业务的人来说,无疑是非常实用的一个功能。 下面就一起来看看微信管理系统的机器人自动回复都有哪些设置吧! 1、自动通过好友 只要有新的好友请求发送到你的微信账号,系统会自动通过该请求,无需手动…

javaEE初阶——多线程(九)——JUC常见的类以及线程安全的集合类

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享多线程专题的最后一篇文章:关于JUC常见的类以及线程安全的集合类 如果有不足的或者错误的请您指出! 目录 3.JUC(java.util.concurrent)常见的类3.1Callable接口3.2 RentrantLoc…

文件包含漏洞基础

php 中的文件包含函数: incude : require incude_once require_once 为了减少重复性代码的编写; 任意后缀的文件当中只要存在 php 代码就会被当作 php 执行; 本质:由于包含的文件不可控,导致文件包含…

huggingface模型下载至本地并调用教程

huggingface内有许多预训练模型,可以在线调用模型或者将模型部署至本地,但有时候通过网址调用模型会很慢,有些服务器甚至无法通过网址调用… 那么,正题,如何将huggingface的模型部署至本地呢?其实很简单&am…

重发布的原理及其应用

重发布的作用: 在一个网络中,若运行多种路由协议或者相同协议的不同进程;因为协议之间不能直接沟通计算,进程之间也是独立进行转发和运算的,所以,需要使用重发布来实现路由的共享。 条件 : 1&am…

TimThumb——超好用的 PHP 略缩图裁剪插件

TimThumb 是一个非常简洁方便的、用于裁图的 PHP 程序。只要给它设置一些参数,它就可以生成指定图片的缩略图甚至是直接给指定的网站截图。现在很多 WordPress 主题中,都使用的是 TimThumb 这个 PHP 类库进行缩略图处理。(本博客使用的 Nana 主题中的文章略缩图也是用 TimThu…

Laravel 6 - 第十四章 响应

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

接口自动化测试框架建设的经验与教训

为什么选择这个话题? 一是发现很多“点工”在转型迷茫期都会问一些自动化测试相关的问题,可以说自动化测试是“点工”升级的必经之路;二是Google一下接口自动化测试,你会发现很多自动化测试框架相关的文章,但是大部分…

同旺科技 USB TO SPI / I2C适配器读写24LC256--页写

所需设备: 1、USB 转 SPI I2C 适配器;内附链接 2、24LC256芯片 适应于同旺科技 USB TO SPI / I2C适配器升级版、专业版; 从00地址开始写入64个字节,然后再将64个字节读回; 页写时序: 读时序&#xff1a…

Docker(二)Docker+ server部署极简前端页面

本篇文章介绍如何使用 Dockerserver 将一个极简前端页面进行部署 1.本地运行一个简单的前端页面&#xff0c;再把它部署到服务器上 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&quo…

指令优化:基于大型语言模型的指令算子的进化多目标指令优化

指令优化:基于大型语言模型的指令算子的进化多目标指令优化 摘要 基于指令的语言建模在预训练的语言模型中受到了极大的关注。 提出了一种指令优化方法,将指令生成视为一个进化的多目标优化问题,利用大型语言模型(LLM)来模拟指令运算符,包括变异和交叉。 此外,为这些运算…

探索直播+电商系统中台架构:连接消费者与商品的智能纽带

随着直播电商的崛起&#xff0c;电商行业进入了全新的智能时代。直播形式的互动性和即时性为消费者提供了全新的购物体验&#xff0c;而电商平台则为商品的展示、销售和配送提供了强大的支持。在这一背景下&#xff0c;直播电商系统中台架构成为了连接消费者与商品的智能纽带&a…

【STM32+HAL+Proteus】系列学习教程---串口USART(DMA 方式)定长,不定长收发。

实现目标 1、利用UART实现上位机PC与下位机开发板之间的数据通信 2、学会STM32CubeMX软件关于UART的DMA模式配置 3、具体目标&#xff1a;1、实现串口定长收发数据通信&#xff1b;2、串口不定长收发数据通信。 一、DMA简介 1、什么是DMA? DMA&#xff08;Direct Memory …

yolo-驾驶行为监测:驾驶分心检测-抽烟打电话检测

在现代交通环境中&#xff0c;随着汽车技术的不断进步和智能驾驶辅助系统的普及&#xff0c;驾驶安全成为了公众关注的焦点之一 。 分心驾驶&#xff0c;尤其是抽烟、打电话等行为&#xff0c;是导致交通事故频发的重要因素。为了解决这一问题&#xff0c;研究人员和工程师们…

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?

12.1.为什么没有选择二叉树&#xff1f; 二叉树是一种二分查找树&#xff0c;有很好的查找性能&#xff0c;相当于二分查找。 二叉树的非叶子节值大于左边子节点、小于右边子节点。 原因&#xff1a; 但是当N比较大的时候&#xff0c;树的深度比较高。数据查询的时间主要依赖于…

算法学习笔记Day8——回溯算法

本文解决几个问题&#xff1a; 回溯算法是什么&#xff1f;解决回溯算法相关的问题有什么技巧&#xff1f;回溯算法代码是否有规律可循&#xff1f; 一、介绍 1.回溯算法是什么&#xff1f; 回溯算法就是个多叉树的遍历问题&#xff0c;关键在于在前序和后序时间点做一些操作…