2026-09-02 12:55:26 +08:00
2026-09-02 11:19:49 +08:00
2026-09-02 11:19:49 +08:00
2026-09-02 11:19:49 +08:00
2026-09-01 11:53:59 +08:00
2026-09-02 11:19:49 +08:00
2026-09-01 11:53:59 +08:00
2026-09-02 11:19:49 +08:00
1
2026-09-02 12:22:34 +08:00
2026-09-02 12:52:31 +08:00
2026-09-02 12:55:26 +08:00
2026-09-02 11:19:49 +08:00
1
2026-09-02 12:22:34 +08:00

AI Knowledge LinkAI知识链接)

把用户的 Word / PDF 文档自动解析为 Markdown、组织成知识库,并为每个知识库生成一个高熵 Secret URL。用户把链接发给任意支持网页访问的 AI,AI 即可按用户描述自主选择并读取文档。

上传文档 → 自动解析 → 转换 Markdown → 建立知识库 → 生成 AI 专属链接
        → 把链接发给任意 AI → AI 读取目录并按描述访问具体文档

技术栈

技术
后端 Python 3.12+ · FastAPI · SQLAlchemy 2 · Pydantic v2 · Alembic · Jinja2
前端 Vue 3 · TypeScript · Vite · Element Plus · Pinia
数据库 MySQL 8.0utf8mb4
存储 本地文件系统(原始文件 + Markdown)
解析 MarkItDown(优先)· PyMuPDFPDF fallback)· python-docxDOCX fallback
搜索 SQLAlchemy LIKE(可升级 FTS5 / MySQL FULLTEXT

快速开始

后端

cd backend
python -m venv .venv
source .venv/Scripts/activate   # Windows Git Bash
pip install -r requirements.txt

# 配置 .env(参考 .env.example
# DATABASE_URL=mysql+pymysql://user:pass@host:port/db?charset=utf8mb4

# 创建数据库(首次)
python -c "import pymysql; conn=pymysql.connect(host='HOST',port=PORT,user='USER',password='PASS'); conn.cursor().execute('CREATE DATABASE IF NOT EXISTS amb_rag CHARACTER SET utf8mb4'); conn.close()"

# 迁移
alembic upgrade head

# 启动(监听所有网络,手机可访问)
uvicorn app.main:app --host 0.0.0.0 --port 8000

前端

cd frontend
npm install
npm run dev   # 监听 0.0.0.0:5173,手机可访问

创建内部员工账号

cd backend
python -c "
from app.core.db import get_session_factory
from app.models.user import User
from app.models.plan import Plan
from app.core.security import hash_password
from sqlalchemy import select

factory = get_session_factory()
with factory() as session:
    plan = session.scalars(select(Plan).where(Plan.code == 'free')).first()
    user = User(
        username='admin',
        email='admin@company.com',
        password_hash=hash_password('your_password'),
        status='active',
        role='internal',
        plan_id=plan.id,
    )
    session.add(user)
    session.commit()
    print('Internal user created')
"

登录入口

入口 地址 说明
客户登录 /login 所有用户可用
内部登录 /internal-login 仅 role=internal 用户
注册 /register 默认创建 customer 用户

生产部署(Ubuntu + Docker

# 1. 安装 Docker
curl -fsSL https://get.docker.com | sh

# 2. 克隆项目
git clone <repo> /opt/ai-knowledge-link
cd /opt/ai-knowledge-link

# 3. 配置
cp .env.example .env
nano .env   # 修改 MySQL 连接、SECRET_KEY 等

# 4. 启动 MySQL(如未安装)
docker run -d --name mysql \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -p 3306:3306 \
  -v mysql_data:/var/lib/mysql \
  mysql:8.0 --character-set-server=utf8mb4

# 5. 创建数据库
docker exec -it mysql mysql -uroot -p -e "CREATE DATABASE amb_rag CHARACTER SET utf8mb4"

# 6. 启动应用
docker compose up -d --build

# 7. 迁移
docker compose exec backend alembic upgrade head

备份(MySQL

# 每日备份
mysqldump -h HOST -P PORT -u USER -p amb_rag > backup/app_$(date +%Y%m%d).sql

# 备份用户文件
tar czf backup/files_$(date +%Y%m%d).tar.gz data/users/

# 恢复
mysql -h HOST -P PORT -u USER -p amb_rag < backup/app_20260901.sql

API 概览

管理端(需登录)

方法 路径 说明
POST /api/auth/register 注册(customer
POST /api/auth/login 普通登录
POST /api/auth/internal-login 内部登录
POST /api/auth/logout 登出
GET /api/auth/me 用户信息
GET /api/knowledge-bases 知识库列表
POST /api/knowledge-bases 创建知识库
GET /api/knowledge-bases/{id}/categories/tree 目录树
POST /api/documents/upload 上传文档
POST /api/documents/create-text 创建文本

公共 AI 端(无需登录)

方法 路径 说明
GET /k/{token} 知识库全部内容(HTML,按目录分组)
GET /k/{token}.json JSON 格式(按目录分组含文档)
GET /k/{token}.md Markdown 格式
GET /k/{token}.txt 纯文本格式
GET /k/{token}/search?q= 搜索

文档

S
Description
No description provided
Readme
388 KiB
Languages
Python 55.4%
JavaScript 30.3%
Vue 11%
Shell 1.4%
TypeScript 1.4%
Other 0.4%