Serverless Knowledge Base

个人 MCP 知识库控制台

上传层只负责把文件送进 S3,后端再按 version_id 驱动 OCR、切分、embedding 和 S3 Vectors。 查询结果默认返回上下文和 CloudFront 签名链接,避免直接暴露底层 S3 URL。

What Exists

仓库里已经有的能力

  • S3 version-aware ingest 与幂等治理
  • Step Functions Standard 异步 OCR / 抽取
  • 多 embedding profile 与独立向量空间
  • Query API / MCP Gateway 的语义召回
  • CloudFront 私有文件交付链接

What Is Missing

当前还差哪几块

  • 静态前端到 Cloudflare Pages Function 的真实上传代理还需要接上
  • 如果要做用户级鉴权,还需要把 tenant / scope 与前端登录对齐
  • 前端还没有对象列表、状态轮询和失败重试界面
  • 如果想支持 doc / ppt 老格式,仍然需要再补一个转换层

Runtime

默认 serverless 链路

版本化 ingest + 异步抽取 + 多 profile 向量空间。

01source bucket
02S3 Event Notification
03SQS ingest queue
04Ingest Lambda
05Step Functions Standard
06manifest bucket
07SQS embed queue
08Embed Lambda
09S3 Vectors
10Query + CloudFront

Upload

Static front-end upload entry

Can connect to Cloudflare Pages Function or API Gateway.

No request submitted yet.

上传预览前端生成的请求内容
{
  "tenant_id": "tenant-demo",
  "security_scope": [
    "team-a"
  ],
  "language": "zh",
  "object_key": "uploads/document.pdf",
  "file_name": "document.pdf"
}

Query

Query and return context + file links

Query API and MCP Gateway can share the same retrieval path.

尚未查询。

查询预览传给 Query API 的 JSON
{
  "query": "Summarize the core ideas in this document.",
  "tenant_id": "tenant-demo",
  "security_scope": [
    "team-a"
  ],
  "top_k": 5,
  "neighbor_expand": 1
}

PDF / 图片

交给 OCR API 识别,再按页面、版面和邻接关系切分。

DOCX

直接抽取正文和表格,去除图片,保留语义结构。

PPTX

默认拆成 slide_text_chunk 与 slide_image_chunk,适合多模态检索。

Markdown

按标题层级切分,避免把同一主题的上下文打碎。

Query Output

返回结果应该长什么样

命中段落、邻居 chunk、CloudFront 链接都应该一起回来。

命中段落

介绍了 S3 versioning、manifest bucket 和 object_state 的职责边界。

关联上下文

前后相邻 chunk 一并返回,避免只看单句命中造成语义断裂。

文件链接

CloudFront signed URL 直接打开对应版本的源文件,而不是裸 S3 URL。