字节笔记本

2026年2月22日

LlamaIndex Starter Pack:快速构建 RAG 应用的完整示例集

本文介绍 llama_index_starter_pack,一个由 Logan Markewich 开发的开源项目,为 LlamaIndex 框架提供了 Flask、Streamlit 和 Docker 的完整示例代码。该项目旨在帮助开发者快速创建 POC(概念验证)项目,在 GitHub 上已获得 633+ stars 和 188 forks。

项目简介

llama_index_starter_pack 是一个入门级的示例代码仓库,专为 LlamaIndex(前身为 GPT Index)框架设计。它提供了多种技术栈的实现示例,帮助开发者快速上手构建基于大语言模型的文档问答应用。

该项目包含经典的 "Paul Graham Essay" 示例数据,开发者可以通过简单的提问来测试功能,例如:

  • 作者成长过程中做了什么?
  • 详细介绍一下 Interleaf

核心特性

  • 多框架支持:提供 Flask + React 和 Streamlit 两种前端方案
  • Docker 化部署:每个示例都包含 Dockerfile,便于容器化部署
  • 文档上传功能:支持动态上传文档并建立索引
  • 多种索引类型:包括 VectorStoreIndex 和 SQL 数据库索引
  • Agent 对话支持:支持基于对话历史的智能体交互
  • 术语定义提取:可从文档中提取术语和定义构建知识库

技术栈

  • Python 3.11:项目基础运行环境
  • LlamaIndex:核心 RAG(检索增强生成)框架
  • Flask:轻量级 Web 后端框架
  • React:前端用户界面
  • Streamlit:快速构建数据应用的 Python 库
  • Docker:容器化部署方案

安装指南

前置要求

  • Python 3.11+
  • Conda(推荐)或虚拟环境工具
  • Docker(可选,用于容器化部署)

本地安装

bash
# 创建 Conda 环境
conda create --name llama_index python=3.11

# 激活环境
conda activate llama_index

# 安装依赖
pip install -r requirements.txt

如果遇到依赖问题,可以使用 requirements_full.txt 安装完整环境。

快速开始

1. Flask + React 示例

该示例运行三个服务,分别监听不同端口:

bash
cd flask_react
sh launch_app.sh

服务端口说明:

  • localhost:5601 - Flask API 服务
  • localhost:5602 - 索引管理服务
  • localhost:3000 - React 前端界面

API 端点

  • POST /query - 接受包含 "text" 参数的请求,用于查询索引
  • POST /upload - 上传文本文件并插入到索引中

建议使用 Postman 测试 API,项目 postman_examples 文件夹中包含示例截图。

2. Streamlit Vector 示例

最简单的入门方案,基于 VectorStoreIndex:

bash
cd streamlit_vector
streamlit run streamlit_demo.py

访问 localhost:8501,你将看到:

  • 从 documents 文件夹加载文本(使用 st.cache_resource 缓存)
  • 输入框和查询按钮
  • 显示查询结果的字符串响应

3. Streamlit SQL Sandbox 示例

展示 Text2SQL 功能的示例:

bash
cd streamlit_sql_sandbox
streamlit run streamlit_demo.py

功能标签页:

  • Setup:配置 LLM 和 LlamaIndex 设置
  • Single-Shot Query:基础的 Text2SQL 演示
  • Agent + Chat History:使用 LlamaIndex Agent 进行对话式 SQL 查询

示例数据:旧金山餐厅检查数据(Google Sheets

4. Streamlit Term Definition 示例

术语定义提取和查询工具:

bash
cd streamlit_term_definition
streamlit run streamlit_demo.py

功能特性:

  • 预加载 NYC 维基百科页面信息
  • 支持从图片上传中提取文本
  • 可配置 LLM 设置
  • 构建自定义术语/定义知识库

Docker 部署

每个示例目录都包含 Dockerfile,构建镜像约 600MB-900MB:

bash
# 进入目标示例目录
cd flask_react  # 或 streamlit_vector 等

# 构建 Docker 镜像
docker build -t llama-index-demo .

# 运行容器(根据示例映射不同端口)
# Flask React 示例
docker run -p 5601:5601 -p 5602:5602 -p 3000:3000 llama-index-demo

# Streamlit 示例
docker run -p 8501:8501 llama-index-demo

端口映射说明:

  • Flask React:5601, 5602, 3000
  • Streamlit 示例:8501

项目结构

text
llama_index_starter_pack/
├── flask_react/              # Flask + React 完整栈示例
│   ├── flask_api/           # Flask 后端 API
│   ├── react_frontend/      # React 前端
│   ├── postman_examples/    # Postman 测试示例
│   └── Dockerfile
├── streamlit_vector/         # Streamlit VectorStoreIndex 示例
│   ├── streamlit_demo.py
│   └── Dockerfile
├── streamlit_sql_sandbox/    # Streamlit SQL 示例
│   ├── streamlit_demo.py
│   └── Dockerfile
├── streamlit_term_definition/ # 术语定义提取示例
│   ├── streamlit_demo.py
│   └── Dockerfile
├── requirements.txt          # 基础依赖
└── requirements_full.txt     # 完整环境依赖

使用建议

  1. 新手入门:从 streamlit_vector 开始,最快看到效果
  2. 生产环境:参考 flask_react 架构,前后端分离更易扩展
  3. 数据库应用streamlit_sql_sandbox 展示了 Text2SQL 的强大能力
  4. 知识库构建streamlit_term_definition 适合构建结构化知识库

项目链接

许可证

MIT License


该项目持续维护中,欢迎提交 PR 或建议。如果你需要快速创建一个能打动老板的概念验证项目,从这里开始是个不错的选择!

分享: