mindmap
((LLamaIndex))
((知识库))
((搜索引擎))
((Agent))
((Workflow))
((大语言模型))
LLamaIndex 是一个基于大语言模型的应用的开源框架,可以用于构建 RAG 检索系统和其他基于大语言模型的应用。
本文将从浅及深地介绍如何使用 LlamaIndex 实现一个简单的以向量检索和搜索引擎检索作为基础的 RAG 检索系统。
准备工作
安装 VSCode,准备 Python 环境
我们从 VSCode 官网下载并安装 VSCode。
在电脑上新建一个 llamaindex-rag
的文件夹,然后在 VSCode 中打开这个文件夹。
接下来我们安装 VSCode 的 Python 官方插件。
然后我们在 VSCode 使用下面的按键组合打开 VSCode 命令面板:
- Windows/Linux:
Ctrl + Shift + P
- Mac:
Cmd + Shift + P
在命令面板中输入 > Python: Create Environment
, 回车后选择 Venv
创建一个 Python 虚拟环境。
创建虚拟环境之后,我们可以在打开的目录下看到一个 venv
的文件夹,这个文件夹内包含了 Python 的虚拟环境。同时 VSCode 也会自动激活这个虚拟环境。
接入大语言模型
Ollama 本地运行 llama 3.1 模型
从 Ollama 下载并安装 Ollama。
用组合键:
- Windows/Linux:
Ctrl + `
- Mac:
Cmd + `
在 VSCode 中打开终端,输入下面的命令在 Ollama 中安装 llama 3.1
模型:
1 | ollama run llama3.1 |
使用 LlamaIndex 接入 Ollama
在 VSCode 中打开终端,输入下面的命令安装 llama_index.llms.ollama
LLamaIndex 的 Ollama 模块:
1 | pip install llama_index.llms.ollama |
在 VSCode 中新建 rag.py
文件:
1 | from llama_index.llms.ollama import Ollama |
点击 VSCode 左上角的三角形的运行按钮,我们可以看到在终端中看到打印出来的模型的输出。
构建和接入知识库
准备知识库示例文件
在llamaindex-rag
目录下新建一个 knowledge
目录,然后在 knowledge
目录,用于存放我们要检索的原始知识库的文件。
然后在 knowledge
目录下新建一个 example.txt
文件,用于存放我们的知识库示例。
用下面的内容填充 example.txt
文件:
1 | Eson 是一个博客作者. 他的博客链接是 https://blog.eonwong.com. |
你也可以在 knowledge
目录下面放置其它.txt
、.docx
、.pdf
等格式的文件。
使用 LlamaIndex 构建知识库
安装 llama_index.core
和 llama_index.embeddings.huggingface
模块。
在命令面板中执行下面的命令:
1 | pip install llama-index llama_index.core llama_index.embeddings.huggingface |
llama_index.core
模块提供了 LLamaIndex 的核心功能llama_index.embeddings.huggingface
模块提供了 HuggingFace 的 embeddings 模型的接入功能。
在 VSCode 中新建 knowledge.py
文件,首先导入 llama_index.core
和 llama_index.embeddings.huggingface
模块:
1 | from llama_index.core import ( SimpleDirectoryReader, Settings, VectorStoreIndex) |
设置 HuggingFace 的 embeddings 模型,我们选择在 HuggingFace 网站上热门的 baai/bge-m3
作为 LLamaIndex 向量化数据的 embedding 模型,在 knowledge.py
文件中添加下面的代码:
1 | # 配置嵌入模型 |
接下来我们使用 SimpleDirectoryReader
读取 knowledge
目录下的文件:
1 | # 读取文件 |
然后我们使用 VectorStoreIndex
向量化我们的知识库:
1 | # embedding 向量化 |
向量化之后我们要把向量化的知识库保存到磁盘上,以便后续的检索:
1 | # 保存向量化的知识库 |
运行 knowledge.py
文件,我们可以看到在终端中看,该脚本会先下载 baai/bge-m3
模型。
下载完成之后就会开始向量化知识库,然后保存向量化的数据保存到 storage
目录。
检索知识库
在 rag.py
文件顶部导入 StorageContext
和 load_index_from_storage
模块:
1 | from llama_index.core import (StorageContext, load_index_from_storage) |
在 rag.py
文件内容替换为下面的代码:
1 | # 导入模块 |