feat: QYLAW 法律法规知识库
- 语义检索(FAISS + embedding)+ 精确查找(法规名+条号) - RAG 问答(SSE 流式,支持 thinking 折叠显示) - 法规浏览(原文阅读) - 历史记录(检索+对话持久化到 SQLite) - 设置页(系统提示词/模板/LLM 参数可配置) - 检索质量评估脚本 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
Executable
+107
@@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
# QYLAW 部署脚本 — 传输数据 + 构建镜像 + 启动容器
|
||||
# 用法: bash scripts/deploy.sh
|
||||
set -e
|
||||
|
||||
# ===== 配置 =====
|
||||
REMOTE_HOST="nvidia@192.168.110.114"
|
||||
REMOTE_LAW_PACK="/data/law-pack-2026-07-01-markdown"
|
||||
REMOTE_LAW_KB_DATA="/data/law-kb-data"
|
||||
LOCAL_LAW_PACK="/Users/freedak/Documents/AIDashboard/qy123/law-pack-2026-07-01-markdown"
|
||||
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
|
||||
echo "============================================"
|
||||
echo " QYLAW 法律法规知识库部署"
|
||||
echo " 时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
echo "============================================"
|
||||
|
||||
# ===== Step 1: 传输法规数据(若 114 上不存在)=====
|
||||
echo ""
|
||||
echo "[Step 1] 检查并传输法规数据..."
|
||||
ssh "$REMOTE_HOST" "test -d $REMOTE_LAW_PACK && echo EXISTS || echo MISSING"
|
||||
LAW_PACK_STATUS=$(ssh "$REMOTE_HOST" "test -d $REMOTE_LAW_PACK && echo EXISTS || echo MISSING")
|
||||
|
||||
if [ "$LAW_PACK_STATUS" = "MISSING" ]; then
|
||||
echo " 法规数据不存在,开始 rsync 传输(310MB)..."
|
||||
if [ ! -d "$LOCAL_LAW_PACK" ]; then
|
||||
echo " [错误] 本地法规数据不存在: $LOCAL_LAW_PACK"
|
||||
exit 1
|
||||
fi
|
||||
rsync -avz --progress "$LOCAL_LAW_PACK/" "$REMOTE_HOST:$REMOTE_LAW_PACK/"
|
||||
echo " [OK] 法规数据传输完成"
|
||||
else
|
||||
echo " [OK] 法规数据已存在,跳过传输"
|
||||
fi
|
||||
|
||||
# ===== Step 2: 创建索引数据目录 =====
|
||||
echo ""
|
||||
echo "[Step 2] 创建索引数据目录..."
|
||||
ssh "$REMOTE_HOST" "mkdir -p $REMOTE_LAW_KB_DATA/faiss $REMOTE_LAW_KB_DATA/logs"
|
||||
echo " [OK] 目录就绪"
|
||||
|
||||
# ===== Step 3: 传输项目代码并构建镜像 =====
|
||||
echo ""
|
||||
echo "[Step 3] 传输代码并构建 Docker 镜像..."
|
||||
ssh "$REMOTE_HOST" "mkdir -p /data/project/law-kb"
|
||||
rsync -avz --exclude '__pycache__' --exclude '.git' --exclude 'law-kb-data' \
|
||||
"$PROJECT_DIR/" "$REMOTE_HOST:/data/project/law-kb/"
|
||||
|
||||
echo " 构建 Docker 镜像..."
|
||||
ssh "$REMOTE_HOST" "cd /data/project/law-kb && docker build -t law-kb:latest ."
|
||||
echo " [OK] 镜像构建完成"
|
||||
|
||||
# ===== Step 4: 停止旧容器(若存在)=====
|
||||
echo ""
|
||||
echo "[Step 4] 停止旧容器..."
|
||||
ssh "$REMOTE_HOST" "docker rm -f law-kb 2>/dev/null || true"
|
||||
echo " [OK] 旧容器已清理"
|
||||
|
||||
# ===== Step 5: 启动新容器 =====
|
||||
echo ""
|
||||
echo "[Step 5] 启动 law-kb 容器..."
|
||||
ssh "$REMOTE_HOST" "
|
||||
docker run -d --name law-kb --network host --restart unless-stopped \
|
||||
-v $REMOTE_LAW_PACK:$REMOTE_LAW_PACK:ro \
|
||||
-v $REMOTE_LAW_KB_DATA:$REMOTE_LAW_KB_DATA \
|
||||
-e LAW_PACK_DIR=$REMOTE_LAW_PACK \
|
||||
-e LAW_KB_DATA_DIR=$REMOTE_LAW_KB_DATA \
|
||||
-e EMBEDDING_URL=http://localhost:8003/v1 \
|
||||
-e LLM_URL=http://localhost:7000/v1 \
|
||||
law-kb:latest
|
||||
"
|
||||
echo " [OK] 容器已启动"
|
||||
|
||||
# ===== Step 6: 健康检查 =====
|
||||
echo ""
|
||||
echo "[Step 6] 健康检查..."
|
||||
sleep 3
|
||||
echo " 等待服务启动..."
|
||||
for i in $(seq 1 10); do
|
||||
HEALTH=$(ssh "$REMOTE_HOST" "curl -s -o /dev/null -w '%{http_code}' http://localhost:8090/health 2>/dev/null || echo 000")
|
||||
if [ "$HEALTH" = "200" ]; then
|
||||
echo " [OK] 服务健康(尝试 $i)"
|
||||
break
|
||||
fi
|
||||
echo " 等待中...($i/10, HTTP $HEALTH)"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# 统计
|
||||
echo ""
|
||||
echo " 索引状态:"
|
||||
ssh "$REMOTE_HOST" "curl -s http://localhost:8090/api/stats 2>/dev/null | python3 -m json.tool 2>/dev/null || echo ' 统计接口未就绪(可能需要先构建索引)'"
|
||||
|
||||
echo ""
|
||||
echo "============================================"
|
||||
echo " 部署完成!"
|
||||
echo " 访问: http://192.168.110.114:8090"
|
||||
echo ""
|
||||
echo " 下一步:"
|
||||
echo " 1. 若索引未构建,执行:"
|
||||
echo " ssh $REMOTE_HOST"
|
||||
echo " docker run --rm --network host \\"
|
||||
echo " -v $REMOTE_LAW_PACK:$REMOTE_LAW_PACK:ro \\"
|
||||
echo " -v $REMOTE_LAW_KB_DATA:$REMOTE_LAW_KB_DATA \\"
|
||||
echo " law-kb:latest python scripts/build_index.py --mode full"
|
||||
echo " 2. 构建完成后重启容器: docker restart law-kb"
|
||||
echo "============================================"
|
||||
Reference in New Issue
Block a user