Server - 配置 SQLBot 智能问数项目

欢迎关注我的CSDN:https://spike.blog.csdn.net/

本文地址:https://spike.blog.csdn.net/article/details/160468125

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


SQLBot 是一款基于大语言模型和 RAG 技术的开源智能问数系统,由 DataEase 团队出品。用户只需用自然语言提问,系统便能自动生成 SQL、查询数据库并返回结果与可视化图表,无需具备 SQL 编写能力即可完成数据分析。SQLBot 支持多种主流数据库,内置工作空间隔离与细粒度权限管控,保障数据安全;同时提供术语库、SQL 示例等训练机制,使问数效果随使用持续优化、越问越准。在集成方式上,SQLBot 支持 Web 嵌入、MCP 调用,可快速接入 Dify、n8n、DataEase 等平台,帮助各类业务系统快速获得智能问数能力。

环境依赖

依赖 版本要求 安装方式
Python 3.11.x brew install python@3.11
Node.js 22.x brew install node@22
pnpm 10.x 随 Node.js 一起安装
PostgreSQL 17.x brew install postgresql@17
pgvector - brew install pgvector

首次初始化(只需执行一次)

1. 创建 Python 虚拟环境

bash 复制代码
python3.11 -m venv .venv

2. 安装后端依赖

bash 复制代码
# 主依赖(阿里云镜像加速)
.venv/bin/pip install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com \
  "fastapi[standard]>=0.115.12,<0.120.0" "python-multipart" "passlib[bcrypt]" "tenacity" \
  "pydantic>2.0" "alembic" "httpx" "psycopg[binary]" "sqlmodel" "bcrypt==4.0.1" \
  "pydantic-settings" "sentry-sdk[fastapi]" "pyjwt" "pycryptodome" \
  "langchain>=0.3,<0.4" "langchain-core>=0.3,<1.0" "langchain-openai>=0.3,<0.4" \
  "langchain-community>=0.3,<0.4" "langchain-huggingface>=0.2.0,<1.0.0" \
  "sentence-transformers>=4.0.2" "pgvector" "dashscope" "pymysql" "cryptography" \
  "pymssql" "pandas" "openpyxl" "psycopg2-binary" "oracledb" "pyyaml" \
  "fastapi-mcp>=0.3.4,<0.4.0" "tabulate" "fastapi-cache2" "sqlparse" "redis" \
  "xlsxwriter" "python-calamine" "xlrd" "clickhouse-sqlalchemy" "dicttoxml" \
  "redshift-connector" "elasticsearch[requests]>=7.10,<8.0" "ldap3" "sqlglot" \
  "numpy==2.3.5" "llama_index>=0.12.35" "sse-starlette>=1.6.1,<2.0"

# sqlbot-xpack(从 testpypi 安装)
.venv/bin/pip install -i https://test.pypi.org/simple \
  --extra-index-url http://mirrors.aliyun.com/pypi/simple \
  --trusted-host mirrors.aliyun.com \
  "sqlbot-xpack>=0.0.5.13,<0.0.6.0"

注意fastapi 需固定在 <0.120.0,否则 fastapi-mcp 会与 pydantic 产生不兼容错误。

3. 安装前端依赖

bash 复制代码
cd frontend && pnpm install
cd ..

4. 初始化数据库

bash 复制代码
# 启动 PostgreSQL
brew services start postgresql@17

# 创建用户和数据库
psql postgres -c "CREATE USER root WITH PASSWORD 'Password123@pg';"
psql postgres -c "CREATE DATABASE sqlbot OWNER root;"
psql postgres -c "ALTER USER root SUPERUSER;"

# 安装 pgvector 扩展
psql -U root -d sqlbot -c "CREATE EXTENSION IF NOT EXISTS vector;"

5. 创建本地数据目录

bash 复制代码
mkdir -p data/file data/excel data/images data/logs data/models data/db_client/oracle_instant_client

6. 创建 .env 配置文件

在项目根目录创建 .env(已加入 .gitignore,不会提交):

bash 复制代码
POSTGRES_SERVER=localhost
POSTGRES_PORT=5432
POSTGRES_DB=sqlbot
POSTGRES_USER=root
POSTGRES_PASSWORD=Password123@pg

PROJECT_NAME=SQLBot
DEFAULT_PWD=SQLBot@123456
SECRET_KEY=y5txe1mRmS_JpOrUzFzHEu-kIQn3lf7ll0AOv9DQh0s
BACKEND_CORS_ORIGINS="http://localhost,http://localhost:13002,https://localhost,https://localhost:13002"
LOG_LEVEL=INFO
SQL_DEBUG=False

BASE_DIR=/Users/wang/workspace/baic-intelligent-data/data
UPLOAD_DIR=/Users/wang/workspace/baic-intelligent-data/data/file
MCP_IMAGE_PATH=/Users/wang/workspace/baic-intelligent-data/data/images
EXCEL_PATH=/Users/wang/workspace/baic-intelligent-data/data/excel
LOCAL_MODEL_PATH=/Users/wang/workspace/baic-intelligent-data/data/models
ORACLE_CLIENT_PATH=/Users/wang/workspace/baic-intelligent-data/data/db_client/oracle_instant_client

7. 执行数据库迁移

bash 复制代码
cd backend && ../.venv/bin/alembic upgrade head && cd ..

日常启动

启动 PostgreSQL

bash 复制代码
brew services start postgresql@17

启动后端(支持热重载)

bash 复制代码
cd backend && ../.venv/bin/uvicorn main:app --host 0.0.0.0 --port 18001 --reload

启动前端(另开终端)

bash 复制代码
cd frontend && pnpm dev

访问地址

服务 地址
前端 http://localhost:13002
后端 API http://localhost:18001
API 文档 http://localhost:18001/docs

常见问题

Oracle 客户端警告 :启动时会看到 init oracle client failed 的 ERROR 日志,这是正常现象,本地开发不需要 Oracle 客户端,不影响功能。

端口被占用

bash 复制代码
lsof -ti :18001 | xargs kill -9
lsof -ti :13002 | xargs kill -9
相关推荐
AOwhisky17 小时前
Redis 学习笔记(第三期):持久化与主从复制
运维·数据库·redis·笔记·学习·云计算
c2385617 小时前
Linux C++ 进度条进阶美化与工程化封装
linux·运维·服务器
李小白6617 小时前
第四天-WEB服务器基本原理,IIS服务
运维·服务器·前端
2401_8346369918 小时前
Nginx 从入门到实战:静态 / 动态站点、PHP 部署与反向代理全解析
运维·nginx·php
aosky19 小时前
一台电脑配置多个 SSH Key 对应不同的 GitHub 账号
运维·ssh·github
云登指纹浏览器19 小时前
WebDriver反检测技术详解:如何让自动化脚本看起来像真实浏览器
运维·自动化·跨境电商
xmtxz20 小时前
计算机网络基础课程学习心得:从理论抽象到硬核实战的进阶之路
运维·学习
RisunJan20 小时前
Linux命令-pgrep (通过进程名查找进程 ID)
linux·运维
信创工程师-小杨21 小时前
Linux内网环境如何解决依赖的问题
linux·运维·服务器
java知路21 小时前
linux yum 下载docker安装包及依赖安装包,并离线安装
linux·运维·docker