fc1e2f440b47e4f46fe6064f32b6eddb98a2beee
AI Knowledge Link(AI知识链接)
把用户的 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.0(utf8mb4) |
| 存储 | 本地文件系统(原始文件 + Markdown) |
| 解析 | MarkItDown(优先)· PyMuPDF(PDF fallback)· python-docx(DOCX 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= | 搜索 |
文档
Languages
Python
55.4%
JavaScript
30.3%
Vue
11%
Shell
1.4%
TypeScript
1.4%
Other
0.4%