LlamaIndex入门:10分钟搭建你的第一个文档问答系统

282 阅读3分钟

在当今的AI时代,如何让AI模型理解和回答基于特定文档的问题成为了一个热门话题。LlamaIndex作为一个强大的数据框架,能够帮助我们轻松地构建基于大语言模型的文档问答系统。本文将带你在10分钟内搭建一个简单但功能完整的文档问答系统。

1. 环境准备

首先,我们需要安装必要的依赖。创建一个 requirements.txt 文件,包含以下内容:

llama-index-core
python-dotenv
openai

然后运行:

pip install -r requirements.txt

2. 配置环境变量

创建一个 .env 文件,添加你的 OpenAI API 密钥:

OPENAI_API_KEY=你的OpenAI API密钥

3. 代码实现

让我们来看一个最基础的实现:

导入必要的库

from llama_index.core import VectorStoreIndexSimpleDirectoryReader
from dotenv import load_dotenv

加载.env文件中的环境变量

load_dotenv()

从pdf目录读取所有PDF文档

documents = SimpleDirectoryReader("pdf/").load_data()

将文档转换为向量索引

index = VectorStoreIndex.from_documents(documents)

创建查询引擎

query_engine = index.as_query_engine()

执行查询

response = query_engine.query("你的问题")

打印查询结果

print(response)

4. 代码解析

让我们逐行解析这段代码:

  • 导入必要的库

    • VectorStoreIndex:用于创建文档的向量索引
    • SimpleDirectoryReader:用于读取文档目录
    • load_dotenv:用于加载环境变量
  • 加载文档

    • SimpleDirectoryReader("pdf/").load_data():这行代码会读取pdf目录下的所有文档
    • LlamaIndex支持多种文档格式,包括PDF、TXT、DOCX等
  • 创建索引

    • VectorStoreIndex.from_documents(documents):这一步会将文档转换为向量形式
    • 在底层,LlamaIndex会使用语言模型将文档切分成小块并创建向量嵌入

查询引擎

  • index.as_query_engine():创建一个查询引擎
  • 查询引擎负责处理用户提问并生成答案

5. 核心概念解释

  • 向量索引

    • 向量索引是LlamaIndex的核心概念
    • 它将文档转换为向量形式,使得AI能够理解和检索文档内容
  • 查询引擎

    • 查询引擎负责理解用户问题
    • 从向量索引中检索相关内容
    • 使用语言模型生成最终答案

6. 实际应用示例

假设我们有一些PDF文档,我们可以这样使用:

创建查询引擎

query_engine = index.as_query_engine()

示例问题

questions = [
    "文档的主要内容是什么?",
    "文档中提到了哪些关键概念?",
    "能总结一下文档的核心观点吗?"
]

遍历问题并获取答案

for question in questions:
    response = query_engine.query(question)
    print(f"问题:{question}")
    print(f"答案:{response}\n")

7. 性能优化建议

  • 文档存储

    • 考虑将索引持久化存储,避免每次都重新创建
    • 可以使用 storage_context 来实现
  • 内存管理

    • 对于大型文档,建议适当调整文档分块大小
    • 可以通过设置 chunk_size 参数来控制

总结

通过这个简单的示例,我们实现了一个基础的文档问答系统。LlamaIndex强大之处在于它的简单性和扩展性,你可以基于这个基础版本:

  • 添加更多文档格式支持
  • 实现更复杂的问答逻辑
  • 集成到现有的应用中

这只是LlamaIndex功能的冰山一角,在接下来的系列文章中,我们将探索更多高级特性和应用场景。

本文使用 markdown.com.cn 排版