Wenlan
Wenlan은 소스 기반 AI 지식베이스·LLM 위키로, 문서·결정을 페이지화해 검색·검토·리뷰 가능
문서를 업로드하면 즉시 인용된 답변을 제공, 오직 내 콘텐츠만 기반, 허위정보 없이 검색 가능
Upload your documents and get instant, cited answers grounded only in your own content. No hallucinations — just your knowledge, searchable.
생산성TypeScript · PLpgSQLGitHub @tahanaqvi14온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Chat with your documents — grounded, cited, and honest about what it doesn't know.
DocMind AI is a multi-tenant RAG (Retrieval-Augmented Generation) SaaS. Users upload their own PDFs, Word docs, or text files, and get an instant AI chatbot that answers questions using only that content — with citations pointing back to the exact document and passage behind every claim. If the answer isn't in the uploaded documents, it says so instead of guessing.
Live demo: [add your Vercel URL here after deploying] Demo video: [add a Loom/YouTube link here]
Most "chat with your PDF" demos are a thin wrapper around a single API call with no real multi-tenancy, no verifiable citations, and no guardrails against hallucination. This project is built to look and behave like an actual product: isolated per-user workspaces enforced at the database level, streaming answers with clickable source citations, usage analytics, and a real (test-mode) billing flow with plan limits.
| Layer | Choice | Why |
|---|---|---|
| Framework | Next.js 16 (App Router) + TypeScript | Server components, API routes, and the frontend in one deployable unit |
| Styling | Tailwind CSS | Fast iteration, small bundle |
| Auth + DB | Supabase (Postgres + Auth) | Email/password + Google OAuth, Row Level Security for multi-tenancy, free tier |
| Vector search | Supabase pgvector | No separate vector database to run or pay for — cosine similarity search lives in Postgres |
| Chunking | LangChain.js (RecursiveCharacterTextSplitter) | Battle-tested chunk/overlap strategy |
| Embeddings | Google Gemini (gemini-embedding-001, pinned to 768 dims) | Free tier, 768-dim vectors |
| Chat LLM | Groq (openai/gpt-oss-120b by default, set via GROQ_MODEL) | Extremely fast streaming inference, free tier |
| Billing | Stripe (test mode) | Real checkout flow, no real charges |
| Hosting | Vercel | Zero-config Next.js deploys, free tier |
Monthly cost: $0, using each provider's free tier.
┌────────────────────────────────────────┐
│ Browser (Next.js) │
│ Landing · Auth · Dashboard · Chat UI │
└───────────────┬──────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ Next.js API Routes (Vercel) │
│ │
│ /api/upload ──► parse → chunk → embed │
│ /api/chat ──► embed Q → retrieve → │
│ stream Groq answer │
│ /api/usage, /api/documents │
│ /api/stripe/checkout, /webhook │
└───┬─────────────┬─────────────┬─────────┘
│ │ │
┌───────────▼──┐ ┌────────▼───────┐ ┌────▼──────────┐
│ Supabase │ │ Gemini API │ │ Groq API │
│ Postgres + │ │ (embeddings) │ │ (chat, LLM) │
│ pgvector + │ └────────────────┘ └───────────────┘
│ Auth + RLS │
└───────┬───────┘
│
┌───────▼───────┐
│ Stripe (test) │
│ subscriptions│
└────────────────┘
RAG pipeline, step by step:
pdf-parse / mammoth / raw text) into plain text.document_chunks.embedding (pgvector column).match_document_chunks) does a cosine-similarity search scoped to that user's rows only, returning the top 5 matches above a relevance threshold.Multi-tenancy is enforced at the database layer with Postgres Row Level
Security — every table (documents, document_chunks, chats, messages)
has policies scoping all reads/writes to auth.uid(), so one user's data is
structurally unreachable by another, not just hidden by the UI.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗