Skip to main content

ElasticRAG

ElasticRAG 是一个基于 Elasticsearch 的 RAG(Retrieval-Augmented Generation)系统,充分利用 Elasticsearch 的 ingest pipeline 功能来处理整个 RAG 工作流。

特性

  • 🔍 基于 Elasticsearch 的向量搜索和文本搜索
  • 🛠️ 使用 ingest pipeline 进行文档处理和向量化
  • 👥 多用户支持和认证
  • 🧠 多模型支持(OpenAI、HuggingFace 等)
  • 📚 知识库(Collection)管理
  • 🔄 混合搜索和 RRF(Reciprocal Rank Fusion)算法
  • 📄 支持多种文档格式的文本分割
  • ⚙️ 支持环境变量配置和命令行参数
  • 🌐 可选的 Web 管理界面

安装

基础安装

仅安装核心功能(CLI 命令行工具):

uv add elasticrag

完整安装

包含 Web 管理界面:

uv add 'elasticrag[web]'

开发安装

包含开发工具:

uv add 'elasticrag[dev]'

全部安装

包含所有功能:

uv add 'elasticrag[all]'

从源码安装

git clone <repository-url>
cd elasticrag
uv sync
# 或安装包含 web 界面
uv sync --extra web

配置

环境变量配置

创建 .env 文件(从 .env.example 复制):

cp .env.example .env

编辑 .env 文件:

# Elasticsearch Configuration
ELASTICSEARCH_HOST=http://localhost:9200

# Authentication
ELASTICRAG_USERNAME=your_username
ELASTICRAG_API_KEY=your_api_key

# Text Embedding Service
TEXT_EMBEDDING_URL=http://your-embedding-service:8080/embed
TEXT_EMBEDDING_API_KEY=your_embedding_api_key

命令行参数

你也可以通过命令行参数覆盖环境变量:

elasticrag --host localhost:9200 -u admin -k secret setup

快速开始

1. 初始化系统

elasticrag setup

2. 启动 Web 管理界面(可选)

⚠️ 注意: Web 界面需要额外安装 gradio 依赖:

# 安装 web 依赖
uv add 'elasticrag[web]'

# 启动 web 界面
elasticrag server --port 7860

然后访问 http://localhost:7860 进入管理界面。

默认管理员账户:

  • 用户名: admin
  • 密码: admin123

3. 使用命令行工具

# 列出可用模型
elasticrag list-models

# 添加文档
elasticrag add document.pdf -c my_collection -m my_model

# 搜索文档
elasticrag search "your query" -c my_collection -m my_model -s 10

CLI 命令参考

全局选项

  • --host: Elasticsearch 主机地址
  • -u, --username: 用户名
  • -k, --api-key: API 密钥
  • -v, --verbose: 启用详细日志

命令

  • setup: 初始化系统
  • server: 启动 Gradio Web 管理界面 (需要安装 web 依赖)
  • list-models: 列出可用模型
  • list-users: 列出所有用户
  • list-collections: 列出所有集合
  • list-documents [collection] [model]: 列出文档
  • add <file_path> [-c collection] [-m model]: 添加文档
  • search <query> [-c collection] [-m model] [-s size]: 搜索文档

server 命令选项

⚠️ 注意: server 命令需要安装额外依赖:

uv add 'elasticrag[web]'

然后可以使用:

elasticrag server [选项]

选项:
  --port PORT           Web界面端口 (默认: 7860)
  --host HOST           Web界面主机 (默认: 0.0.0.0)
  --share               通过 Gradio 创建公共链接
  --admin-username USER 管理员用户名
  --admin-password PASS 管理员密码

依赖说明

核心依赖

  • elasticsearch>=8.0.0: Elasticsearch 客户端
  • python-dotenv>=1.0.0: 环境变量管理
  • aiohttp>=3.10.11: 异步 HTTP 客户端

可选依赖

Web 界面 (elasticrag[web])

  • gradio>=4.0.0: Web 界面框架
  • pandas>=1.3.0: 数据处理

开发工具 (elasticrag[dev])

  • pytest>=7.0.0: 测试框架
  • pytest-asyncio>=0.21.0: 异步测试支持
  • black>=23.0.0: 代码格式化
  • isort>=5.12.0: 导入排序

Web 管理界面

安装 Web 依赖

uv add 'elasticrag[web]'

管理员功能

使用管理员账户登录后可以:

  • 用户管理: 查看、添加、删除用户
  • 模型管理: 查看、添加模型配置
  • 系统监控: 查看系统状态和资源使用

用户功能

使用普通用户账户登录后可以:

  • 集合管理: 查看自己的文档集合
  • 文档管理: 添加、删除、查看文档
  • 搜索调试: 在集合中搜索文档并查看结果

环境变量配置

Web 界面相关的环境变量:

# 管理员账户配置
ELASTICRAG_ADMIN_USERNAME=admin
ELASTICRAG_ADMIN_PASSWORD=admin123

API 使用

from elasticrag import Client

# 创建客户端
client = Client('http://localhost:9200')

# 认证用户
user = client.authenticate('username', 'api_key')

# 获取集合
collection = client.get_collection('my_collection', 'my_model')

# 添加文档
collection.add('doc_id', 'Document Name', text_content='Your content here')

# 搜索
results = await collection.query('your query')

开发

# 安装开发依赖
uv sync --extra dev

# 安装所有依赖(包括 web)
uv sync --extra all

# 运行测试
uv run pytest

# 代码格式化
uv run black .
uv run isort .

许可证

MIT License

Metadata

Release files for elasticrag 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for elasticrag 0.1.0
File Interpreter ABI Platform
elasticrag-0.1.0-py3-none-any.whl Python 3 none any Details

Release files / elasticrag-0.1.0-py3-none-any.whl

Download URL elasticrag-0.1.0-py3-none-any.whl
Size 28.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9947fb666038dfc153e6f435f3bb7fff6c429dc03080e20c21c6f1f198019cbc
BLAKE2b-256 checksum
How to use checksums
f6a856ffd3890d3ec84adc8ed99e3b6a99f1a0dc82a0548f5630e3204cf9a58d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page