InternLM 基础岛 - LlamaIndex RAG

主讲人应该是组里有写过 RAG 的 survey,之后拿过来介绍整个链条了

RAG 介绍

RAG 有效支持了知识密集型任务。通过 RAG,bot 可以缓解 LLM 输出时生成幻觉、存在过时知识等问题。

一点小思考:RAG 侧重于读取 up-to-date, non-fake 的知识,agent 则侧重于调用工具。

RAG 工作流程

将 docs 分成 chunk 并编码成向量,然后存储在 vector db 中。需要 generate 的时候,从 vector db 读取相似的 chunk 即读到的相关 docs

 Vector-DB

几个关键点,长度固定;相似度检索(常用内积,也有别的);使用贴近语料源的模型做 embedding(因为语言不通)。

modern RAG

RAG 最早是 2020 由 Meta 发表的工作。近年来,在最简单的 RAG 流程基础上,提出了 advanced RAG 和更复杂的 Modular RAG. 

Advance RAG 在原本的 Retrieve 步骤前后增加了 pre/post retrieve 过程。在 pre-retrieve 过程提前进行检索;在 post-retrieve 过程进行重拍、混合、提取摘要等工作。模块化 RAG 用模块化的行为,将不同工程的内容分开,以应对多模态任务和连续对话系统的需求。

RAG的优化

具体可以查看有关论文

RAG vs. 微调

长尾知识问题:指的是那些不太热门或不太常见的知识、信息或话题。出现频率低,领域小众、专业深度过大。

这个概念来源于克里斯·安德森(Chris Anderson)在他的著作《长尾:为什么小众市场会赢得未来》中提出的理论。

RAG 依赖于外部知识库的质量,实时度高、遵循 garbage in garbage out 原则。另外一个隐蔽的限制点是 RAG 依赖大模型的能力,7B 质量大概率比 1.8B 好。Fine-tune 可以针对专业任务进行优化,提高模型在专业领域的适配度

下图从模型适配度和外部知识两个维度来介绍一个完整项目中,prompt engineer、RAG、FT 的配合。Prompt Engineer 是最初级的操作手段,简单快速。然后 RAG 和 FT 各有侧重点。

评估框架和基准测试

整体上,RAG 从两个部分进行评估,检索质量和生成质量。

RAG 总结

实验部分

基于 LlamaIndex 框架搭建 RAG 应用。

LlamaIndex 框架

LlamaIndex 是一个开源的索引和搜索库,提供高效、可扩展的文本索引和检索功能。

框架提供了数据加载、计算 embedding 索引、向量化存储、查询、LLM 生成、评估的框架,用户可以方便地建立应用。

实验框架代码粗读

本实验给了两个 llm。首先是裸的 1.8b 模型,然后是基于 llamaindex 的 RAG agent。

裸的 llm 遵循 huggingface 文件格式,用 api 直接 chat 即可。

实验框架给出的 llamaIndex 样例代码如下.

llamaIndex 通过一个全局变量 Settings 来配置 backbone 的分词器和 llm。框架只提供最基本的 SimpleDirectoryReader,支持 md, ppt, jpg 等格式,用来将文档读进内存中并拆分成 docs(chunks)。之后,VSI 会建立 embedding,向量化存储并提供查询。

streamlit app 给出了一个 RAG web 应用的 demo,将 query_engine 保存在 session 中,通过 generate_llama_index_rsp 函数调用,之后展示到前端。

闯关任务

找到一个 llm 原本不支持的话题,创建一个 RAG 使得 llm 可以回复有意义的信息。

1. 问原始版本的 internlm-1.8b 谁是瓶子君 152。回复中无有效信息。

2. 从包头的萌娘百科页面(瓶子君152 - 萌娘百科 万物皆可萌的百科全书)查看 wikitext 源代码,使用 pandoc 将 mediawiki 格式的 wikitext 代码转换成 markdown 代码,以便 SimpleDirectoryReader 解析。(需要注意萌娘的编译器对注释换行比较比 pandoc 宽容,报错的话需要删除一些注释。

pandoc moegirl-bottle152.wikitext -f mediawiki -t markdown  -o moegirl-bottle152-pandoc.md

3. 问 RAG 谁是瓶子

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值