# 拓竹知识库 api **Repository Path**: threezhuge/tuozhu-knowledge-base-api ## Basic Information - **Project Name**: 拓竹知识库 api - **Description**: 知识库api获取微服务 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: feature-knowledge-pipeline-phase1 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-08 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KB Ingestion Service 知识库文档入库服务 — 将文档安全、可靠地写入 HiAgent 知识库的中间层 pipeline。 ## 功能概览 - **文件上传** — 支持 13 种常见格式(txt, md, doc, docx, ppt, pptx, pdf, xlsx, xls, csv, tsv, json, jsonl),单文件最大 100 MB - **持久化任务队列** — 基于 SQLite,重启不丢失,失败自动重试 - **前缀路由** — 按 `source_key` 前缀自动路由到目标知识库 - **版本管理** — 基于 `source_document_id` 的文档版本历史追踪 - **智能去重** — 三重指纹(`raw_hash` / `content_hash` / `config_hash`)驱动,避免重复入库 - **Safe Rebuild** — 需要更新时先建新文档,成功后再切换,保证数据一致 - **幂等提交** — 同一请求重复调用不会产生副作用 - **Webhook 回调** — 任务完成或失败时主动通知调用方 - **管理界面** — 内置 Vue 3 前端,可视化管理文档与任务;路由配置支持只读查看(创建/编辑请使用 API) ## 技术栈 | 层 | 技术 | | --- | --- | | 后端框架 | Python 3.11 + FastAPI | | 异步运行时 | Uvicorn | | 数据库 | SQLite(aiosqlite) | | HTTP 客户端 | httpx | | 前端 | Vue 3 + TypeScript + Element Plus | | 构建与部署 | Docker 多阶段构建,单容器单端口 | ## 项目结构 ```text ├── app/ # 后端源码 │ ├── main.py # FastAPI 应用入口 │ ├── config.py # 配置与路由表 │ ├── database.py # SQLite 数据层 │ ├── hiagent_client.py # HiAgent 平台客户端 │ ├── ingestion.py # 入库核心逻辑 │ ├── job_worker.py # 后台任务处理器 │ ├── models.py # Pydantic 数据模型 │ └── routers/ # API 路由 ├── frontend/ # Vue 3 前端 ├── config/ │ └── routes.yaml # 路由配置 ├── tests/ # 测试用例 ├── scripts/ # 辅助脚本 ├── Dockerfile # 多阶段构建 ├── docker-compose.yml # 编排配置 ├── LICENSE # Apache 2.0 许可证 ├── requirements.txt # Python 依赖 └── .env.example # 环境变量模板 ``` ## 快速开始 ### 前置条件 - Docker >= 20.10 - Docker Compose >= 2.0 - 可访问 HiAgent 平台 ### 1. 配置环境变量 ```bash cp .env.example .env # 编辑 .env,填入 HiAgent 平台凭证和服务密钥 ``` 关键配置项: | 变量 | 说明 | | --- | --- | | `HIAGENT_HOST` | HiAgent 服务地址(含端口,不含协议) | | `HIAGENT_AK` / `HIAGENT_SK` | HiAgent 访问凭证 | | `HIAGENT_WORKSPACE_ID` | 目标工作空间 ID | | `DOCUMENT_READY_GRACE_SECONDS` | 文档状态到 `9` 后,删除旧文档前额外等待的秒数,默认 `0` | | `SERVICE_API_KEY` | 自定义 API 访问密钥 | ### 2. 配置路由(可选) 编辑 `config/routes.yaml`,定义 `source_key` 前缀到知识库的映射: ```yaml routes: "zh/ProductA/": "dataset-id-1" "en/ProductA/": "dataset-id-2" "_default": "dataset-id-fallback" ``` 也可在服务启动后通过 `POST /routes` 接口动态创建。 ### 3. 构建并启动 ```bash docker compose up -d --build ``` ### 4. 验证 ```bash # 存活探针 curl http://localhost:18743/health # 就绪探针 curl http://localhost:18743/ready ``` 浏览器访问管理界面: ### 5. 提交第一个文件 ```bash curl -X POST http://localhost:18743/documents/jobs \ -H "Authorization: Bearer " \ -F "file=@test.md" \ -F "client_namespace=my-app" \ -F "source_document_id=doc-001" ``` 查询任务状态: ```bash curl http://localhost:18743/jobs/ \ -H "Authorization: Bearer " ``` `status` 变为 `completed` 即入库成功。 ## 本地开发 ### 后端 ```bash python -m venv .venv source .venv/bin/activate pip install -r requirements.txt # 启动开发服务器 uvicorn app.main:get_app --reload --factory --port 18427 ``` ### 前端 ```bash cd frontend npm install npm run dev ``` ### 测试 ```bash pytest tests/ ``` ## 数据持久化 | 容器路径 | 宿主机路径 | 说明 | | --- | --- | --- | | `/app/data/state.db` | `./data/state.db` | SQLite 数据库 | | `/app/data/uploads/` | `./data/uploads/` | 上传文件存储 | | `/app/config/` | `./config/` | 路由配置 | > `./data` 目录包含所有服务状态,请做好备份。 ## 端口说明 | 参数 | 默认值 | 说明 | | --- | --- | --- | | 容器监听端口 | `18427` | FastAPI 内部监听 | | 宿主机映射端口 | `18743` | 对外访问端口 | 修改对外端口:编辑 `docker-compose.yml` 的 `ports` 映射。 ## 文档 | 文档 | 说明 | | --- | --- | | [用户手册](用户手册.md) | 接入方式、使用示例、最佳实践 | | [API 参考](API%20参考.md) | 接口规格、参数、错误码 | | [部署指南](部署指南.md) | 环境配置、运维、常见问题排查 | ## License 本项目采用 Apache License 2.0。详见 [LICENSE](LICENSE)。