Skip to main content

环境准备

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 17OpenJDK 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:
brew install node
Ubuntu/Debian:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
Windows: 下载并安装 Node.js
验证安装:运行 node --versionnpm --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:从七牛云控制台获取
  • 存储空间名称:创建的空间名称
  • 域名:绑定的域名或七牛云提供的域名
建议使用HTTPS域名以确保文件访问安全
阿里云对象存储服务:配置信息:
  • AccessKey ID:从阿里云控制台获取
  • AccessKey Secret:从阿里云控制台获取
  • Endpoint:OSS地域节点地址
  • Bucket名称:创建的存储桶名称
建议配置CDN加速以提升文件访问速度
腾讯云对象存储服务:配置信息:
  • 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

启动项目

后端启动

  1. 编译项目:
    cd langchat-pro
    mvn clean compile
    
  2. 启动应用:
    # 方式1: 使用IDE直接运行 LangchatBootstrapApplication
    # 方式2: 使用Maven命令
    mvn spring-boot:run -pl langchat-bootstrap
    
  3. 验证启动:

前端启动

  1. 安装依赖:
    cd langchat-ui
    npm install
    
  2. 启动开发服务器:
    npm run dev
    
  3. 访问应用:

模型配置

项目启动后,通过管理界面配置模型:
  1. 登录管理后台
  2. 配置推理模型 - 添加OpenAI、Claude等模型
  3. 配置向量模型 - 添加文本嵌入模型
  4. 配置知识库 - 创建知识库并上传文档
  5. 测试对话 - 验证配置是否正确

常见问题

启动失败排查

  1. 数据库连接失败
    • 检查MySQL服务是否启动
    • 验证数据库连接信息是否正确
    • 确认数据库用户权限
  2. Redis连接失败
    • 检查Redis服务是否启动
    • 验证Redis连接配置
    • 确认Redis密码是否正确
  3. 端口占用
    • 检查8080端口是否被占用
    • 使用 lsof -i :8080 查看端口占用情况

性能优化建议

  1. 向量数据库选择
    • 小规模应用:推荐PgVector
    • 大规模应用:推荐Milvus或ElasticSearch
  2. 模型选择
    • 开发测试:使用Ollama本地模型
    • 生产环境:使用云服务模型
  3. 硬件要求
    • 最低配置:8GB内存,4核CPU
    • 推荐配置:16GB内存,8核CPU
    • GPU加速:支持CUDA的显卡可显著提升推理速度