【实战】拒绝臃肿!我用 2 天撸了一个“轻量级”个人 RAG 助理:DeepSeek + uv + Supabase 完美起飞

0 阅读3分钟

前言

最近 RAG(检索增强生成)火得一塌糊涂,但翻开很多教程,动辄就是上百张显卡、复杂的 Docker 集群或者沉重的本地模型环境。对于个人开发者来说,我只想安安静静地给自己的 PDF 做个数字大脑,一定要这么重吗?

于是,我花了 48 小时,用最现代化的“轻量级”工具栈打造了 SwiftMind —— 一个定位纯个人、高性能、全异步 API 化的全栈 RAG 助手。

GitHub: [github.com/FelixBitSou…]


🚀 为什么叫 SwiftMind?(技术选型)

我的核心目标是:快、省、稳。

  • Frontend: Next.js (App Router) + Shadcn UI。为了极速交互,我直接集成了 Vercel AI SDK 处理流式对话。

  • Backend: FastAPI + LlamaIndex。抛弃了臃肿的 LangChain,选择了对数据处理更专业的 LlamaIndex。

  • Python 管理器: uv。如果你还在用 pippoetry,建议赶紧试试 uv。安装依赖快到起飞,项目隔离极其优雅。

  • 数据库/鉴权: Supabase (PostgreSQL + pgvector) 。一行 SQL 开启向量检索,自带 RLS(行级安全)权限隔离。

  • 模型层(重点) :

    • LLM: DeepSeek-V3。不用解释,目前的性价比之王。
    • Embedding: 硅基流动 (SiliconFlow) 提供的 BAAI/bge-m3
    • 原则: 全 HTTP API 化。服务器不跑任何本地推理,哪怕是 2 核 2G 的小机器也能跑得很欢。

🏗️ 架构设计:不仅仅是 Demo

很多 RAG 的 Demo 只能一个人玩,但我给 SwiftMind 设计了完整的个人多租户逻辑

1. 数据库建模与 RLS 隔离

基于 Supabase 的 RLS(Row Level Security),我在数据库层面上就锁死了数据边界。

SQL

-- 确保用户只能看到自己的知识库
ALTER TABLE knowledge_bases ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Users can only access their own KBs" 
ON knowledge_bases FOR ALL USING (auth.uid() = user_id);

这意味着,哪怕你是小白开发者,也不用担心 A 用户搜到了 B 用户的私密文档。

2. 纯 API 化的 Ingestion 管道

我拒绝在后台跑 torchtransformers。通过对接 硅基流动 的 API,我们将文档切片后的向量化过程变成了极其轻量的 HTTP 请求。


🛠️ 核心功能实现

知识库管理:不仅仅是上传

SwiftMind 支持多知识库并行管理。你可以为一个“法律知识库”上传合同,为另一个“技术知识库”上传文档。对话时,你可以自由勾选 0 到多个知识库,实现跨领域的精准检索。

优雅的流式对话

借助 Vercel AI SDK 和 FastAPI 的 StreamingResponse,对话体验像 ChatGPT 一样丝滑,支持打字机效果,且后端会实时处理 Context 注入。


📦 部署:一行命令起飞

因为使用了 uv,我的 Docker 构建过程被极度精简:

Bash

# 基于 uv 优化过的 Dockerfile
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
# ... 安装依赖仅需几秒 ...
CMD ["uv", "run", "uvicorn", "backend.app.main:app", "--host", "0.0.0.0"]

总结与反思

这两天的开发让我深刻体会到:现代 AI 开发的重心已经从“如何跑通模型”转向了“如何高效编排 API”。

SwiftMind 目前已经实现了: ✅ 知识库 CRUD ✅ 文档自动解析与向量化(PDF/Markdown) ✅ 多知识库勾选对话 ✅ 完善的登录与权限隔离

待办事项:

  • 增加对话标题自动生成
  • 增加文档引用的来源展示(Source Citation)
  • 移动端适配优化

如果你也想快速拥有一个属于自己的“数字大脑”,欢迎 Fork 交流!如果觉得不错,别忘了给个 Star ⭐。


写在最后

项目地址:[github.com/FelixBitSou…] 欢迎在评论区讨论:你认为对于个人开发者,RAG 系统的最优解是什么?