环境准备
LangChat Pro是一个基于Spring Boot + Vue3的AI对话平台,支持多种大语言模型和向量数据库。在开始部署前,请确保您的开发环境满足以下要求。
请注意:下述中间件,优先使用Docker-Compose文件部署,尽量避免使用直接安装的方式。特别是对于PgVector这种VectorDB
Step 1: 基础开发环境
LangChat Pro基于Spring Boot 3.x开发,需要JDK 17或更高版本。macOS (推荐使用Homebrew):brew install openjdk@17
echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Ubuntu/Debian:sudo apt update
sudo apt install openjdk-17-jdk
Windows:
下载并安装 Oracle JDK 17 或 OpenJDK 17验证安装:运行 java -version 确认版本为17.x
LangChat Pro使用MySQL作为主数据库,支持MySQL 8.0及以上版本。macOS:brew install mysql
brew services start mysql
Ubuntu/Debian:sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
配置数据库:CREATE DATABASE langchat_pro CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
导入初始数据:
找到项目根目录的 docs/langchat_pro.sql 文件并执行:mysql -u root -p langchat_pro < docs/langchat_pro.sql
确保MySQL服务正常运行,并记录数据库连接信息用于后续配置
LangChat Pro使用Redis进行缓存和会话管理,支持Redis 6.0及以上版本。macOS:brew install redis
brew services start redis
Ubuntu/Debian:sudo apt install redis-server
sudo systemctl start redis
sudo systemctl enable redis
Windows:
下载 Redis for Windows 或使用WSL验证安装:运行 redis-cli ping 应返回 PONG
LangChat Pro前端基于Vue3开发,需要Node.js 22或更高版本。macOS:Ubuntu/Debian:curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
Windows:
下载并安装 Node.js验证安装:运行 node --version 和 npm --version 确认版本
Step 2: 向量数据库
LangChat Pro支持多种向量数据库用于知识库检索,您可以根据需求选择其中一种:
PostgreSQL的向量扩展,适合中小规模应用。安装PostgreSQL + PgVector:# macOS
brew install postgresql
brew services start postgresql
psql postgres -c "CREATE EXTENSION vector;"
# Ubuntu/Debian
sudo apt install postgresql postgresql-contrib
sudo -u postgres psql -c "CREATE EXTENSION vector;"
创建数据库:CREATE DATABASE langchat_vector;
适合大规模搜索场景,支持复杂的向量检索。使用Docker安装:docker run -d --name elasticsearch \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e "xpack.security.enabled=false" \
elasticsearch:8.11.0
验证安装:curl http://localhost:9200
专为向量搜索设计的数据库,支持高并发和大规模数据。使用Docker Compose安装:# docker-compose.yml
version: '3.5'
services:
etcd:
container_name: milvus-etcd
image: docker.m.daocloud.io/quay.io/coreos/etcd:v3.5.5
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/milvus_data/etcd:/etcd
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
minio:
container_name: milvus-minio
image: docker.m.daocloud.io/minio/minio:RELEASE.2023-03-20T20-16-18Z
environment:
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/milvus_data/minio:/minio_data
command: minio server /minio_data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
standalone:
container_name: milvus-standalone
image: docker.m.daocloud.io/milvusdb/milvus:v2.3.3
command: ["milvus", "run", "standalone"]
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/milvus_data/milvus:/var/lib/milvus
ports:
- "19530:19530"
- "9091:9091"
depends_on:
- "etcd"
- "minio"
attu:
container_name: milvus-attu
image: docker.m.daocloud.io/zilliz/attu:v2.3.3
environment:
MILVUS_URL: standalone:19530
ports:
- "8000:3000"
depends_on:
- "standalone"
networks:
default:
name: milvus
Milvus需要较多系统资源,建议在配置较高的机器上使用
基于Redis的向量搜索,适合轻量级应用。安装Redis Stack (包含向量功能):# macOS
brew install redis-stack
brew services start redis-stack
# Docker
docker run -d --name redis-stack \
-p 6379:6379 -p 8001:8001 \
redis/redis-stack:latest
验证向量功能:redis-cli
> FT.CREATE idx:vec ON HASH PREFIX 1 doc: VECTOR HNSW 6 TYPE FLOAT32 DIM 1536 DISTANCE_METRIC COSINE
Step 3: 推理模型
LangChat Pro支持多种大语言模型,包括公有云和私有化部署:
支持OpenAI、Claude、Gemini等主流模型:OpenAI GPT系列:
- GPT-3.5-turbo
- GPT-4
- GPT-4-turbo
Anthropic Claude系列:
- Claude-3-Sonnet
- Claude-3-Haiku
- Claude-3-Opus
Google Gemini系列:
- Gemini Pro
- Gemini Pro Vision
使用公有云模型需要准备相应的API Key,建议在项目启动后通过管理界面配置
支持本地部署的开源模型:使用Ollama (推荐):# 安装Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# 下载模型
ollama pull llama2:7b
ollama pull qwen:7b
ollama pull chatglm3:6b
# 启动服务
ollama serve
使用Xinference:# 安装Xinference
pip install xinference
# 启动服务
xinference
私有化模型需要根据硬件配置选择合适的模型大小,建议至少8GB内存
Step 4: 向量模型
用于文本向量化的模型,支持多种嵌入模型:
OpenAI Embeddings:
- text-embedding-ada-002
- text-embedding-3-small
- text-embedding-3-large
其他云服务:
- 百度文心一言Embedding
- 阿里通义千问Embedding
- 腾讯混元Embedding
使用Ollama:# 下载向量模型
ollama pull nomic-embed-text
ollama pull bge-large-en-v1.5
使用Xinference:# 启动向量模型服务
xinference launch --model-name bge-large-en-v1.5 --model-type embedding
私有化向量模型通常需要4-8GB内存,建议使用GPU加速
Step 5: 对象存储 (OSS)
LangChat Pro支持多种对象存储服务,配置在 langchat.oss 节点下:
开源对象存储,适合本地开发和测试:使用Docker安装:docker run -d --name minio \
-p 9000:9000 -p 9001:9001 \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-v minio_data:/data \
minio/minio server /data --console-address ":9001"
访问控制台:创建名为 langchat-oss 的存储桶用于存储文件,并在配置文件中设置 default-platform: minio
国内知名云存储服务:配置信息:
- AccessKey:从七牛云控制台获取
- SecretKey:从七牛云控制台获取
- 存储空间名称:创建的空间名称
- 域名:绑定的域名或七牛云提供的域名
阿里云对象存储服务:配置信息:
- AccessKey ID:从阿里云控制台获取
- AccessKey Secret:从阿里云控制台获取
- Endpoint:OSS地域节点地址
- Bucket名称:创建的存储桶名称
腾讯云对象存储服务:配置信息:
- SecretId:从腾讯云控制台获取
- SecretKey:从腾讯云控制台获取
- Region:存储桶所在地域
- Bucket名称:创建的存储桶名称
配置环境
后端配置
使用IDE打开langchat-pro项目,找到 langchat-bootstrap/src/main/resources 目录下的配置文件:
# 修改 application-dev.yml 开发环境配置文件
server:
port: 8100
spring:
# 数据库配置
datasource:
username: root
password: 12345678
url: jdbc:mysql://127.0.0.1:3306/langchat_pro?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
keep-alive: true
# Redis配置
data:
redis:
port: 6379
host: 127.0.0.1
database: 1
jedis:
pool:
max-wait: 2000
time-between-eviction-runs: 1000
langchat:
searxng:
enabled: true
duration: 10
url: http://127.0.0.1:8081
max-results: 10
max-results-limit: 50
excalidraw:
url: http://127.0.0.1:3000
oss:
# 固定填写,本地:local-plus(nginx)、七牛:qiniu-kodo、阿里OSS:aliyun-oss、腾讯OSS:tencent-cos、minio: minio
default-platform: minio
local-plus:
- platform: local-plus
# 是否启用
enable-storage: false
# 访问域名
domain: http://127.0.0.1:80/
# 文件夹名称
base-path: langchat-oss/
# 本地存储路径
storage-path: /Users/tycoding/data/software/nginx/
qiniu-kodo:
- platform: qiniu-kodo
# 是否启用
enable-storage: false
access-key:
secret-key:
# 桶名称
bucket-name:
# 文件夹名称
base-path:
# 访问域名
domain:
aliyun-oss:
- platform: aliyun-oss
# 是否启用
enable-storage: false
access-key:
secret-key:
# 桶名称
bucket-name:
# 访问域名
end-point: oss-cn-hangzhou.aliyuncs.com
tencent-cos:
- platform: tencent-cos
# 是否启用
enable-storage: false
secret-id:
secret-key:
# 区域
region:
# 桶名称
bucket-name:
# 访问域名
domain:
minio:
- platform: minio
# 是否启用
enable-storage: true
secret-key: minioadmin
access-key: minioadmin
# 桶名称
bucket-name: langchat-oss
# 访问域名
end-point: http://127.0.0.1:9000/
前端配置
进入前端项目目录 langchat-ui,修改环境配置文件:
# .env.development
VITE_API_BASE_URL=http://localhost:8080/api
VITE_APP_TITLE=LangChat Pro
启动项目
后端启动
-
编译项目:
cd langchat-pro
mvn clean compile
-
启动应用:
# 方式1: 使用IDE直接运行 LangchatBootstrapApplication
# 方式2: 使用Maven命令
mvn spring-boot:run -pl langchat-bootstrap
-
验证启动:
前端启动
-
安装依赖:
cd langchat-ui
npm install
-
启动开发服务器:
-
访问应用:
模型配置
项目启动后,通过管理界面配置模型:
- 登录管理后台
- 配置推理模型 - 添加OpenAI、Claude等模型
- 配置向量模型 - 添加文本嵌入模型
- 配置知识库 - 创建知识库并上传文档
- 测试对话 - 验证配置是否正确
常见问题
启动失败排查
-
数据库连接失败
- 检查MySQL服务是否启动
- 验证数据库连接信息是否正确
- 确认数据库用户权限
-
Redis连接失败
- 检查Redis服务是否启动
- 验证Redis连接配置
- 确认Redis密码是否正确
-
端口占用
- 检查8080端口是否被占用
- 使用
lsof -i :8080 查看端口占用情况
性能优化建议
-
向量数据库选择
- 小规模应用:推荐PgVector
- 大规模应用:推荐Milvus或ElasticSearch
-
模型选择
- 开发测试:使用Ollama本地模型
- 生产环境:使用云服务模型
-
硬件要求
- 最低配置:8GB内存,4核CPU
- 推荐配置:16GB内存,8核CPU
- GPU加速:支持CUDA的显卡可显著提升推理速度