基础岛 第4关 Llamaindex RAG实践
1. 背景知识
1.1. RAG(Retrieval Augmented Generation)
检索增强生成让基础模型实现非参数知识更新,无需训练就可以掌握领域内的知识。给模型注入新知识的方式,可以简单分为两种方式,一种是内部的,即更新模型的权重,另一个就是外部的方式,给模型注入格外的上下文或者说外部信息,不改变它的的权重。 第一种方式,改变了模型的权重即进行模型训练,这是一件代价比较大的事情;第二种方式,并不改变模型的权重,只是给模型引入额外的信息。
RAG的工作原理:
- 将知识源或者文档分解成小块,编码成向量,并存储在向量数据库中
- LLM接收到用户提出的问题后,将问题也编码成向量,并从数据库中寻找与问题相关的知识源/文档向量(top-k)
- 将检索到的文档和原始问题一起作为prompt,输入到LLM中,得到最终的答案。
2. 实验结果
2.1. LlamaIndex RAG
安装 LlamaIndex 词嵌入向量依赖后,需要获取知识库,如想要获得关于MindSearch的知识,从github中找到关于其的介绍位于https://github.com/InternLM/MindSearch/README_zh-CN.md中,就要将该文件存放到专门存储待检索数据的文件夹/data下,在llamaindex_RAG.py文件中通过下面的代码,来检索与query相关的信息,从指定目录读取所有文档,并加载数据到内存中
documents = SimpleDirectoryReader("/root/llamaindex_demo/data").load_data()
未执行RAG和执行完RAG的结果如下图所示: