TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Upload your own documents (PDF, plain text, Markdown), then ask questions about them in natural
language. Every answer cites the document and chunk it came from, and follow-up questions keep the
context of the conversation.
See PLANNING.md for architecture decisions, measurements and rationale.
The demo runs the production configuration: Gemini as the LLM, ONNX embeddings, a single shared
Chroma store. Two things to know before trying it:README 전문 보기 ↗Upload your own documents (PDF, plain text, Markdown), then ask questions about them in natural language. Every answer cites the document and chunk it came from, and follow-up questions keep the context of the conversation.
See PLANNING.md for architecture decisions, measurements and rationale.
https://rag-knowledge-assistant-navy.vercel.app
The demo runs the production configuration: Gemini as the LLM, ONNX embeddings, a single shared Chroma store. Two things to know before trying it:
The first request after a deploy can take a while: on a fresh instance the embedding model (~90MB) is downloaded on first use.
Ingestion: upload -> parse (pypdf / text) -> chunk -> embed (all-MiniLM-L6-v2, ONNX) -> Chroma
Query: question (+ history) -> embed -> retrieve top-k -> relevance filtering
-> prompt with numbered [n] sources -> LLM (Ollama or Gemini) -> answer + citations
POST /documents (upload + index), POST /query
({question, top_k?, history?} -> {answer, has_context, citations}), GET /health, and an
admin-only DELETE /documents/{source} (requires an X-Admin-Token header matching
ADMIN_TOKEN; disabled — 404 — when ADMIN_TOKEN is unset).all-MiniLM-L6-v2, run locally through ONNX Runtime. No API key, no per-request cost.llama3.2) locally for development, Google Gemini (Flash, free tier) in
production, selected at runtime by LLM_PROVIDER.Prerequisites: Python 3, Node.js 20+, and Ollama with the model pulled
(ollama pull llama3.2) — or a Gemini API key to skip Ollama entirely.
Backend
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # LLM_PROVIDER=ollama by default; set gemini + GEMINI_API_KEY for the cloud path
uvicorn app.main:app --reload
/health, interactive docs at /docs)backend/chroma_db/ (gitignored). Locally it persists across restarts; on
the live demo it doesn't (see above).Frontend
cd frontend
npm install
cp .env.local.example .env.local # only needed if the backend isn't on http://localhost:8000
npm run dev
FRONTEND_ORIGINS in
backend/.env for any other host.cd backend
pytest # fast, hermetic unit tests (default)
pytest -m model # loads the real embedding model + Chroma (relevance regression tests)
pytest -m ollama # calls a real local Ollama server (skips if it's not running)
pytest -m gemini # calls the real Gemini API (skips without GEMINI_API_KEY)
pytest -m "" # everything
sentence-transformers, and it was crashing out of memory mid-request on a 512MB instance. Measured:
the PyTorch runtime import alone costs ~400MB — the ~90MB model weights were never the problem, so a
smaller model wouldn't have helped. The fix was to run the same all-MiniLM-L6-v2 weights through
their ONNX export, via ONNX Runtime, which already ships with chromadb (no new dependency). Peak
memory for a real upload-then-query cycle dropped from ~560–650MB to ~305–354MB. Verified rather than
assumed that nothing else changed: the two runtimes produce float32-identical vectors (max absolute
difference 0.000000), and every relevance regression test passed without recalibrating a threshold.
Details in PLANNING.md (PR #19).llm.generate_answer (Ollama) and
gemini.generate_answer share the same (prompt, model) -> str signature, and LLM_PROVIDER picks
the backend at request time. The generate function and its model name are selected together as a
pair, so one backend's model name can never be sent to the other.httpx), not LangChain wrappers or the vendor SDK, for the LLM call. One narrow
function per backend is easier to reason about and to mock deterministically, and it avoids the
Gemini SDK's grpc/protobuf dependency chain.PLANNING.md records where a single-vector heuristic stops being enough (re-ranking would be the
next step) instead of claiming it's solved./query; the backend
keeps no session state. Conversations are persisted in the browser (localStorage), not on the server.Single-user, no auth, text-extractable documents only (no OCR for scanned PDFs). Answers aren't
streamed yet. See PLANNING.md for the full list of non-goals and known limitations.