自部署优先
依赖服务通过 Docker Compose 启动,API、Worker、MCP 和前端可用一键脚本或按需独立运行。
Overview
BYOB 的定位不是 SaaS 平台,而是一套适合可信网络内部署的向量知识库系统。它帮助个人 或团队建立可由 AI Agent 调用的检索基础设施,并提供本地控制台来管理知识库、文档、 资源、chunk、治理状态、检索测试和 MCP 使用说明。
项目内置的 QA Agent 用于快速验证 MCP-backed RAG 效果。它可以接入 OpenAI-compatible Chat Completions,也可以在未配置 LLM 时返回抽取式 Markdown 答案,方便检查召回质量。
依赖服务通过 Docker Compose 启动,API、Worker、MCP 和前端可用一键脚本或按需独立运行。
提供直接检索 API、MCP 工具和 asset 获取能力,让 Agent 可以以工具形式访问知识库。
提供检索控制台、QA Agent、健康检查、metrics,以及 MinIO/Qdrant Web UI 入口。
Capabilities
创建知识库,上传文件、批量导入、文本导入、URL 导入和 JPEG/PNG 图片导入,按文件名和 SHA-256 hash 自动跳过重复文件。
支持 Markdown、TXT、HTML、PDF、DOCX、PPT、PPTX、XLSX、JPEG 和 PNG;MinerU content_list 优先,图片与解析资源保存到 MinIO。
使用 Qdrant 存储 dense、sparse 和可选 visual vectors,支持高级检索、多查询检索、metadata、父级上下文和反馈记录。
导入时标注来源类型、权威等级和审核状态;正式检索默认只使用 published 文档。
默认通过 Infinity 运行 BGE embedding 和 reranker 服务,便于本地部署。
使用 CLIP 为图片资源建立视觉索引,文本查询可召回相关图片并与文本检索结果融合。
提供 stdio 和 Streamable HTTP transport,便于 MCP 客户端与 Agent 调用。
控制台答案和 chunk 支持 Markdown、表格、公式、图片和安全 HTML 片段。
Deployment
安装 Docker、Python 3.12+、uv、Node.js 20+ 和 Git。
python --version
uv --version
node --version
docker compose version
从示例文件创建本地配置,生产环境必须替换默认密钥和服务凭据。
Copy-Item .env.example .env
启动 PostgreSQL、Redis、Qdrant、MinIO、embedding 和 rerank 服务。
docker compose up -d
docker compose ps
安装 Python 依赖并执行 Alembic 迁移。
uv sync --extra dev
uv run alembic upgrade head
创建第一个本地管理账号。
$env:BYOB_ADMIN_EMAIL = "admin@example.com"
$env:BYOB_ADMIN_PASSWORD = "replace-with-a-strong-password"
uv run python -m api.scripts.seed_admin
跨 Windows、macOS、Linux 同时启动 API、Celery Worker、MCP Streamable HTTP 和前端控制台。
uv run python start-dev.py --install-frontend
开发时可以只启动部分服务,或者继续使用手动命令独立运行 API、Worker、MCP 和前端。
uv run python start-dev.py --services api frontend
uv run python start-dev.py --worker-only
uv run python start-dev.py --mcp-only
Configuration
| 变量 | 用途 | 默认值 |
|---|---|---|
DATABASE_URL |
PostgreSQL 连接地址 | postgresql+asyncpg://byob:byob@localhost:5432/byob |
QDRANT_URL |
Qdrant HTTP 地址 | http://localhost:6333 |
MINIO_ENDPOINT_URL |
MinIO API 地址 | http://localhost:9000 |
EMBEDDING_ENDPOINT_URL |
Embedding 服务地址 | http://localhost:7997 |
RERANK_ENDPOINT_URL |
Rerank 服务地址 | http://localhost:7998 |
MCP_SERVER_URL |
QA Agent 使用的 MCP HTTP 地址 | http://127.0.0.1:8010/mcp |
AGENT_LLM_ENDPOINT_URL |
可选 OpenAI-compatible Chat Completions 地址 | 未启用 |
AGENT_MAX_IMAGE_ASSETS |
QA Agent 每次最多传给多模态模型的图片数量 | 3 |
MULTIMODAL_RAG_ENABLED |
是否启用图片视觉向量索引和 CLIP 检索 | true |
CLIP_PRELOAD_ON_STARTUP |
API、Worker 和 MCP 启动时是否预加载 CLIP | true |
MCP and RAG Test
BYOB MCP Server 暴露知识库列表、文档列表、普通检索、高级检索、多检索、 chunk 获取、asset 列表和 document asset 获取工具。召回结果会带出 chunk 中引用的图片/ 文件 manifest,控制台 QA Agent 可以把图片作为多模态输入交给 LLM。 大多数 MCP 客户端使用 stdio transport,控制台 QA Agent 使用 Streamable HTTP transport。
uv run python -m api.app.mcp_server
uv run python -m api.app.mcp_server --transport streamable-http --host 127.0.0.1 --port 8010
/agent 页面输入问题。API Surface
POST /api/v1/auth/loginGET /api/v1/usersPOST /api/v1/usersGET /api/v1/knowledge-basesPOST /api/v1/knowledge-bases/{kb_id}/documents/batchPATCH /api/v1/documents/{document_id}/governanceGET /api/v1/documents/{document_id}/assetsGET /api/v1/documents/{document_id}/chunksPOST /api/v1/retrieval/searchPOST /api/v1/retrieval/search/advancedPOST /api/v1/retrieval/multi-searchPOST /api/v1/retrieval/embedPOST /api/v1/agent/asklist_knowledge_basesadvanced_search_knowledge_baseget_document_chunksget_document_assetProduction Notes
当前 Compose 文件主要用于依赖服务。长期自部署时,建议将 API、Worker、MCP Server 和前端纳入 systemd、Supervisor、PM2 或容器平台,并使用反向代理提供 HTTPS、访问日志和鉴权策略。检索 API 和 MCP 默认服务于可信网络内的 Agent, 不应直接暴露到公网。
JWT_SECRET_KEY、PostgreSQL 密码和 MinIO 凭据。CORS_ALLOWED_ORIGINS 和前端公开 URL。/healthz、/metrics、Worker 日志和存储容量。English Summary
BYOB is a self-hosted vector database management system for AI Agent retrieval. It provides document ingestion, asset storage, chunking, embeddings, Qdrant-backed search, reranking, MCP tools, and a local console QA Agent for RAG testing. The project is designed for trusted self-hosted environments rather than public SaaS operation.