Bella-RAG是一个基于Django和llamal-index框架的RAG(Retrieval-Augmented Generation)最佳实践,提供文档理解、索引构建、检索问答等完整的RAG基础能力。
- 🔥 业界领先的文档解析: 文档结构化解析效果业界领先,支持复杂版面和多模态内容理解,文档解析能力见https://github.com/LianjiaTech/bella-domify
- 🎯 高精度检索技术: 利用多路召回、small2big、renrank等技术,兼顾语义检索效果与信息完整度,多场景验证综合结果可用率 > 85%
- 🧠 Contextual RAG增强: 支持Contextual RAG技术,在chunk编码前预先添加解释性的上下文信息,大幅提升检索准确率
- 🚀 Deep RAG智能agent模式: 基于Planning and Solve模式的智能agent,通过自动制定执行计划(圈定文件范围 -> 阅读文件 -> 反思)、步骤式执行和动态重规划,实现比传统RAG更优的问答效果
- 🔧 策略插件化架构: 检索策略完全可插拔,调用方可根据业务场景灵活调整检索策略及参数,满足不同领域需求
- 多格式文档支持: 支持PDF、Word、Excel、HTML、Markdown等多种文档格式
- 向量化存储: 集成Qdrant向量数据库(可自部署)或腾讯向量数据库,提供高效的向量存储和检索
- 安全的混合架构: 向量数据库仅存储向量,原始文档内容安全存储在MySQL中
- 灵活的检索策略: 支持多种检索模式和重排序算法
- 完整的API: 提供完整的RESTful API接口
- 异步处理: 与file-api打通,支持Kafka异步任务处理
- 一键初始化: 提供自动化脚本快速完成环境配置
ke-RAG采用混合存储架构,将数据安全性和检索效率相结合:
向量数据库(Qdrant/腾讯云向量数据库):
- 存储文档和问答的向量化表示
- 不存储原始文本内容(安全考虑)
- 支持高效的相似度检索
- 包含三个集合:主文档向量、QA向量、文档总结向量
- 支持使用Qdrant自部署,或者企业版的腾讯云向量数据库
关系型数据库(MySQL):
- 存储文档的原始内容和元数据
- 提供结构化数据查询能力
- 确保数据的持久性和一致性
搜索引擎(Elasticsearch):
- 提供关键词检索能力
- 补充向量检索的不足
- 支持复杂的文本查询和过滤
# 1. 克隆项目
git clone https://github.com/LianjiaTech/bella-rag
# 2. 配置环境变量(可选)
export OPENAI_API_KEY="your_openai_api_key"
export OPENAI_API_BASE="https://api.openai.com/v1"
# 3. 启动所有服务
docker-compose up -d
# 4. 检查服务状态
docker-compose ps
# 5. 验证服务健康状态
curl http://localhost:8008/api/actuator/health/livenesske-RAG 支持多种向量数据库,您可以根据需求选择:
- ✅ 完全开源免费:MIT许可证,无使用限制
- ✅ 本地部署:数据完全可控,无需依赖第三方服务
- ✅ 一键启动:Docker Compose 自动部署和初始化
- ✅ 易扩展:支持水平扩展和分布式部署
- ✅ 托管服务:无需运维,自动备份和高可用
- ✅ 企业级:支持大规模数据和高并发访问
- ✅ 完整生态:与腾讯云其他服务深度集成
- ⚙️ 需要配置:需要腾讯云账号和API密钥
# 默认使用Qdrant
docker-compose up -d
# 使用腾讯向量数据库需要修改配置文件
# 编辑 conf/config_release.ini:
[VECTOR_DB]
type = tencent # 改为 tencent
[TENCENT_VECTOR_DB]
url = your_tencent_vectordb_url
key = your_api_key
database_name = your_database
# ... 其他配置# 1. 索引文档
curl --location 'http://localhost:8008/api/file/stream/indexing' \
--header 'Authorization: Bearer {OPEN_API_KEY}' \
--header 'Content-Type: multipart/form-data' \
--form 'file_id="FILE_ID"' \
--form 'file_name="test.txt"' \
--form 'user="user_001"' \
--form 'file=@"/path/to/file"'
# 2. 检索问答
curl --location 'http://localhost:8008/api/rag/search' \
--header 'Authorization: Bearer {OPEN_API_KEY}' \
--header 'Content-Type: application/json' \
--data '{
"query": "你好",
"scope": [
{
"type": "file",
"ids": [
"FILE_ID"
]
}
],
"limit": 3,
"user": "user_00000000",
"mode": "ultra"
}'- Docker >= 20.0
- Docker Compose >= 2.0
- 可用内存 >= 4GB
- OpenAI API密钥(或兼容的API服务)
💡 提示: 所有服务通过 Docker Compose 一键部署,无需手动安装 MySQL、Redis、Qdrant 等组件
bella-RAG支持先进的Contextual RAG技术,可以在chunk编码前为每批文档片段添加上下文信息:
- 上下文预处理:为每个chunk添加文档级别的上下文描述
- 智能摘要:自动生成文档结构和主题信息
- 提升检索语义理解能力,减少断章取义
详情参考/deep_rag/README.md
ke-RAG/
├── app/ # Django应用
│ ├── models/ # 数据模型
│ ├── services/ # 业务逻辑
│ └── handlers/ # 请求处理
├── bella_rag/ # 核心RAG框架
│ ├── transformations/ # 数据转换
│ ├── vector_stores/ # 向量存储
│ └── llm/ # 大模型接口
├── common/ # 公共工具
├── conf/ # 配置文件
├── docker-compose.yml # Docker编排
└── scripts/ # 初始化脚本
- 添加新的向量存储: 继承
VectorStore基类 - 自定义检索策略: 实现
RetrievalStrategy接口 - 新增文档解析器: 扩展
DocumentParser类
-
服务启动失败
- 检查Docker和Docker Compose版本
- 确保端口8008、3306、6379、6333等未被占用
- 查看日志:
docker-compose logs
-
Elasticsearch连接失败
- 确保Elasticsearch服务正常启动
- 检查网络连接和配置
-
向量数据库连接问题
- 验证API密钥和URL配置
- 检查网络连通性
-
内存不足
- 确保系统可用内存 >= 4GB
- 根据需要调整Docker内存限制
# 查看所有服务日志
docker-compose logs
# 查看特定服务日志
docker-compose logs bella-rag-api
# 实时查看日志
docker-compose logs -f本项目采用 MIT许可证。
我们欢迎各种形式的贡献!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 🎉 首个正式版本发布
- ✨ 支持多种向量数据库(Qdrant、腾讯向量数据库)
- 🔧 Docker Compose一键部署
- 📚 完整的API接口和文档

