06 LlamaIndex入门
验证环境
uv venv -p 3.12
uv pip install llama-index
嵌入模型的部署方法
下面是为您整理好的 Xinference 与 TEI (Text Embeddings Inference) 部署 BAAI/bge-m3 的 Markdown 格式文档。您可以直接将其复制保存为 .md 文件使用。
1. Xinference 部署指南
Xinference 是一款功能强大的多模型管理平台。它不仅能部署大语言模型,还完美支持嵌入(Embedding)、重排(Reranker)以及图像、语音等多模态模型。
步骤一:安装 Xinference
建议在干净的 Python 虚拟环境中安装(推荐 Python 3.10+):
# 加上 [all] 会自动安装大部分常用的模型后端推理引擎
pip install "xinference[all]"
步骤二:编写启动脚本
编写后台启动脚本 start_xinference.sh,用于在后台拉起 Xinference 本地服务:
cat << 'EOF' > start_xinference.sh
#!/bin/bash
# 启动 Xinference 核心守护服务,监听所有 IP 的 9997 端口
echo "Starting Xinference Supervisor & Worker..."
nohup xinference-local --host 0.0.0.0 --port 9997 > xinference.log 2>&1 &
# 等待 5 秒确保服务完全启动
sleep 5
echo "Xinference is running on port 9997."
EOF
步骤三:运行并启动模型
赋予脚本执行权限并启动:
chmod +x start_xinference.sh
./start_xinference.sh
使用命令行一键拉取并部署
bge-m3:
xinference launch --model-name bge-m3 --model-type embedding
服务会自动前往 Hugging Face(或 ModelScope 镜像源)下载 BAAI/bge-m3 的全量 PyTorch 权重并将其加载至显存中。
服务访问方式
OpenAI 兼容接口:
http://<YOUR_IP>:9997/v1/embeddingsWeb 控制台: 浏览器访问
http://<YOUR_IP>:9997即可进入可视化管理后台。
警告
xinference在通过pip install xinference[all]快捷安装,然后再部署bge-m3的过程的时候报错找不到包。安装了也报错,没有深入。 这个库引入的东西太多了,可能会出现位置错误。尽量还是使用TEI部署嵌入模型更加简单可靠。
2. TEI (Text Embeddings Inference) 部署指南
TEI 是 Hugging Face 官方采用 Rust 编写的高性能嵌入/重排服务器。它支持动态批处理(Dynamic Batching),在生产环境中的吞吐量极高、延迟极低。
步骤一:准备环境
运行 TEI 强烈推荐使用官方 Docker 镜像,以避免在本地配置复杂的 Rust 与 CUDA 编译环境。请确保您的服务器已成功安装:
Docker
NVIDIA Container Toolkit(用于支持 Docker 调用 GPU)
步骤二:编写启动脚本
创建启动脚本 start_tei.sh。该脚本会拉起基于 GPU 的 TEI 容器,并将模型数据持久化在本地 data 目录下:
cat << 'EOF' > start_tei.sh
#!/bin/bash
# 1. 定义模型 ID 和本地模型权重缓存路径
MODEL_ID="BAAI/bge-m3"
VOLUME_PATH="$PWD/data"
# 创建缓存目录
mkdir -p $VOLUME_PATH
# 2. 通过 Docker 启动 TEI 容器 (使用 GPU 版本镜像)
echo "Starting HF Text Embeddings Inference (TEI) on Port 8080..."
docker run --gpus all \
-p 8080:80 \
-v $VOLUME_PATH:/data \
--pull always \
ghcr.io/huggingface/text-embeddings-inference:120-1.9 \
--model-id $MODEL_ID \
--max-client-batch-size 128 \
--max-concurrent-requests 512
EOF
注意
在下载的时候 https://github.com/huggingface/text-embeddings-inference 需要区分显卡的版本,根据不同的gpu版本选择对应的标签;
核心参数说明:
--gpus all:映射宿主机所有 GPU。
--max-client-batch-size:单次客户端请求最大支持批量编码的文本数量。
--max-concurrent-requests:最大并发处理请求数,可根据显存和 CPU 核心数进行调整。
步骤三:运行启动命令
赋予脚本执行权限并后台运行:
chmod +x start_tei.sh
nohup ./start_tei.sh > tei_docker.log 2>&1 &
观察容器日志以确保模型加载成功:
tail -f tei_docker.log
服务访问方式
OpenAI 兼容接口:
http://<YOUR_IP>:8080/v1/embeddings原生 API 接口:
http://<YOUR_IP>:8080(支持极速极简的原生 JSON 调用)
3. 部署方案对比快速选型
维度 |
Xinference |
TEI (Text Embeddings Inference) |
|---|---|---|
适用场景 |
团队研发、一站式多模型托管、Mac/PC 本地测试 |
极高并发的生产环境、企业级 RAG 检索微服务 |
底层核心 |
Python (支持 vLLM, llama.cpp 等后端) |
Rust (专为 Embedding 和 Reranking 优化) |
接口规范 |
兼容 OpenAI / 包含专属 API |
兼容 OpenAI / 极速原生 API |
易用性 |
极高(带 Web 控制台和可视化资源监控) |
较高(纯 API/Docker 运行,无自带管理 UI) |