LlamaIndex 入门教程:快速构建您的第一个大语言模型应用

欢迎来到 LlamaIndex 的世界!LlamaIndex 是一个强大的框架,旨在帮助您轻松地将自定义数据与大语言模型(LLM)连接起来,构建从简单的问答机器人到复杂的多智能体系统的各类应用。

本教程将引导您了解 LlamaIndex 的核心概念,并通过一个简单的实例,让您在5行代码内构建并查询您的第一个应用。

1. 什么是 LlamaIndex?

您可以将 LlamaIndex 想象成一个“数据”和“大语言模型”之间的“桥梁”。大语言模型(如 GPT-4)本身拥有海量的通用知识,但它们并不知道您的私人数据,比如您的 PDF 文档、邮件或者数据库里的信息。LlamaIndex 的核心功能就是让大语言模型能够“学习”并“理解”您的私有数据,从而能够基于这些数据进行回答和交互。

2. LlamaIndex 的核心优势

  • 易于上手:为初学者提供了高级 API,仅需5行代码即可实现数据接入和查询。
  • 高度可定制:为高级用户提供了低级 API,可以自由定制和扩展几乎所有模块,以满足复杂需求。
  • 丰富的数据连接器:可以轻松地从各种数据源(如本地文件夹、PDF、Notion、Slack 等)中提取数据。
  • 强大的数据索引:将您的数据转换成 LLM 更容易理解和检索的格式,既高效又节省成本。

3. 快速上手:5行代码构建您的第一个应用

让我们通过一个简单的例子,来体验 LlamaIndex 的强大之处。我们将让 LlamaIndex 读取一个本地文件夹中的文档,并回答相关问题。

第一步:安装 LlamaIndex

首先,您需要安装 LlamaIndex 的 Python 库。

1
pip install llama-index

第二步:设置您的 OpenAI API 密钥

LlamaIndex 需要使用大语言模型(这里以 OpenAI 为例)来进行自然语言处理。您需要一个 OpenAI 的 API 密钥。

1
2
import os
os.environ["OPENAI_API_KEY"] = "sk-..." # 替换成您的密钥

第三步:创建您的第一个应用

  1. 在您的项目文件夹下,创建一个名为 data 的子文件夹。
  2. 将您想要查询的文档(例如,一些 .txt 文件)放入 data 文件夹中。
  3. 创建并运行以下 Python 代码:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

# 1. 加载您的数据
documents = SimpleDirectoryReader("data").load_data()

# 2. 将数据构建成索引
index = VectorStoreIndex.from_documents(documents)

# 3. 创建查询引擎
query_engine = index.as_query_engine()

# 4. 查询您的数据
response = query_engine.query("作者在这份文档里主要讨论了什么?") # 替换成您的提问

# 5. 打印回答
print(response)

就是这么简单!LlamaIndex 会自动读取 data 文件夹中的所有文档,将它们处理成一个可查询的索引,然后根据您的问题,从文档中寻找答案并返回。

4. 核心组件解析

为了更好地理解 LlamaIndex 是如何工作的,让我们了解一下它的几个核心组件:

  • 数据连接器 (Data Connectors):负责从不同的数据源(如文件夹、API、数据库)加载数据。SimpleDirectoryReader 就是其中最简单的一种。
  • 数据索引 (Data Indexes):这是 LlamaIndex 的核心。它将加载进来的数据(Documents)转换成一种优化的、结构化的格式(通常是向量嵌入),使得 LLM 可以非常高效地进行检索。VectorStoreIndex 是最常用的一种索引。
  • 引擎 (Engines):这是与您的数据进行交互的接口。
    • 查询引擎 (Query Engines):用于一问一答式的查询,非常适合知识库问答的场景。
    • 聊天引擎 (Chat Engines):用于多轮对话,可以记住上下文,实现更自然的聊天体验。
  • 智能体 (Agents):这是一种更高级的形态。它不仅能回答问题,还能被赋予多种“工具”(Tools),自主地执行更复杂的任务,比如调用外部 API、读写文件等。

5. 下一步

恭喜您完成了 LlamaIndex 的入门!您已经掌握了最基础的数据加载和查询流程。

接下来,您可以探索更多高级功能:

  • 探索不同的数据连接器:尝试从 Notion、Slack 或者网站加载数据。
  • 尝试不同的索引和检索方式:除了向量索引,LlamaIndex 还支持关键词索引、知识图谱索引等,您可以根据应用场景选择最合适的检索策略。
  • 构建一个聊天机器人:使用 ChatEngine 来创建一个可以与您的文档进行连续对话的应用。
  • 深入学习:访问 LlamaIndex 官方文档,那里有更详细的教程、API 参考和高级应用案例。

希望这篇教程能帮助您顺利开启 LlamaIndex 的学习之旅!