1. 欢迎来到LlamaIndex 🦙 ! #
LlamaIndex是领先的框架,用于在您的数据上构建由LLM驱动的智能体LLMs和工作流程。
2. 介绍 #
2.1 什么是agents? #
代理是基于LLM的知识助手,它们利用工具执行研究、数据提取等任务。Agent的能力范围从简单的问答到能够感知、决策并采取行动以完成任务。
LlamaIndex提供了一个构建代理的框架,其中包括将RAG管道作为完成任务的众多工具之一使用的能力。
2.2 什么是workflows? #
工作流程是多步骤流程,结合了一个或多个代理、数据连接器及其他工具来完成一项任务。它们是事件驱动的软件,允许你将RAG数据源与多个代理相结合,从而创建一个能够执行广泛任务的复杂应用程序,具备反思、纠错等高级LLM应用的标志性特征。随后,你可以部署这些代理工作流作为生产微服务。
2.3 什么是context augmentation? #
LLMs在人类与数据之间提供了一个自然语言接口。LLMs已基于大量公开可用数据进行了预训练,但它们并未针对你的数据。您的数据可能是私密的,或与您试图解决的问题密切相关。它们隐藏在API背后、SQL数据库中,或是被困在PDF文件和幻灯片文档里。
上下文增强技术让您的数据可供LLM用于解决当前问题。LlamaIndex提供从原型到生产环境构建任何上下文增强用例的工具。我们的工具支持数据摄取、解析、索引和处理,并能快速实现结合数据访问与LLM提示的复杂查询工作流。
上下文增强最流行的例子是检索增强生成或RAG,它能在推理时将上下文与LLMs相结合。
2.4 LlamaIndex是构建上下文增强型LLM应用的框架 #
LlamaIndex对您如何使用LLMs没有任何限制。您可以将LLMs用作自动补全工具、聊天机器人、智能代理等等。它只是让使用变得更加便捷。我们提供的工具包括:
- 数据连接器 - 从原始来源和格式中摄取您现有的数据。这些数据可能来自APIs、PDFs、SQL等(甚至更多)。
- 数据索引 - 将您的数据结构化为中间表示形式,使其易于大型语言模型高效处理。
- 引擎 - 为你的数据提供自然语言访问能力。例如:
- 查询引擎是用于问答的强大接口(例如RAG流程)。
- 聊天引擎是与您的数据进行多轮"来回"对话的交互界面。
- 代理 - 是由LLM驱动的知识工作者,通过工具增强能力,从简单的辅助功能到API集成等不一而足。
- 可观测性/评估 - 能够让你严格实验、评估并监控应用程序的集成,形成一个良性循环。
- 工作流程 - 让你能将上述所有元素整合成一个事件驱动系统,其灵活性远超其他基于图(graph)的方法。
3. 用例 #
LlamaIndex及上下文增强技术的一些常见应用场景包括:
看看我们的用例文档获取更多示例及教程链接。
3.1 👨👩👧👦 LlamaIndex适合谁使用? #
LlamaIndex为初学者、高级用户以及介于两者之间的所有人提供了工具。
我们的高级API让初学者只需5行代码就能使用LlamaIndex来摄取和查询数据。
对于更复杂的应用场景,我们的底层API允许高级用户根据需求自定义和扩展任意模块——包括数据连接器、索引、检索器、查询引擎以及重排模块。
4. 入门指南 #
LlamaIndex 提供 Python 版本(即本文档)以及TypeScript版本。如果你不确定从哪里开始,我们推荐阅读如何阅读这些文档,这将根据您的经验水平指引您前往正确的位置。
4.1 30秒快速入门 #
设置一个名为OPENAI_API_KEY的环境变量,带有一个OpenAI API密钥,然后安装Python库:
# 导入必要的LlamaIndex组件
# VectorStoreIndex: 用于创建向量存储索引
# SimpleDirectoryReader: 用于从目录读取文档
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
import os
os.environ["OPENAI_API_KEY"] = (
"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"
)
# 从data目录加载所有文档
# 这会自动读取目录中的所有支持格式的文件(如.txt, .pdf, .docx等)
documents = SimpleDirectoryReader("data").load_data()
# 使用加载的文档创建向量存储索引
# 这会自动将文档分割成块并生成向量嵌入
index = VectorStoreIndex.from_documents(documents)
# 从索引创建查询引擎
# 查询引擎提供了自然语言查询接口
query_engine = index.as_query_engine()
# 向查询引擎提出问题并获取回答
# 这里可以替换成任何关于你数据的问题
response = query_engine.query("红楼梦主要人物有哪些?")
# 打印查询结果
print(response)