Status Trio
Status Trio는 macOS 메뉴바 앱으로 Wi‑Fi·배터리·볼륨을 하나의 아이콘에 통합합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기RAG-based personal knowledge agent with citations, guardrails, and evaluation.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗PersonaQuery is a retrieval-augmented generation (RAG) assistant that answers questions about a single person (Rudra Joshi) strictly from that person's own documents, with inline citations and prompt-injection guardrails.
It is a portfolio-scale system: a small private corpus, a hybrid retriever built on local files, and a hosted LLM. See Scope & Limitations.
data/private/*.pdf + data/curated/*.md
│ ingest (per-document chunk profiles)
▼
storage/ chunks.jsonl · vectors.npy · bm25.json · colbert_vecs.npz · faq_cache.json
query ─▶ guardrails ─▶ response cache ─▶ FAQ cache ─▶ query expansion
─▶ dense + BM25 (per variant) ─▶ RRF fusion ─▶ diversity cap
─▶ ColBERT rerank ─▶ context pack ─▶ Qwen3.8-27B ─▶ answer + citations
(extractive fallback if the LLM is down)
| Layer | Choice |
|---|---|
| Backend | FastAPI + Uvicorn (app/backend) |
| Frontends | Portfolio at https://rudrajoshi.dev (React) calls the backend; app/frontend-next is a separate Next.js frontend |
| Embeddings | BAAI/bge-small-en-v1.5 via FastEmbed (ONNX, no torch), 384-dim |
| Keyword | BM25 (rank-bm25) |
| Fusion | Reciprocal Rank Fusion (k=60) |
| Rerank | ColBERT late interaction (answerai-colbert-small-v1), vectors precomputed at ingest |
| LLM | qwen/qwen3.8-27b via Groq free tier (OpenAI-compatible), temperature 0.2 |
| Vector store | NumPy matrix + JSONL chunks; no external DB |
| Deployment | FastAPI backend on Google Cloud Run (Docker, app/backend/Dockerfile) |
cd app/backend
pip install -r requirements.txt
echo "GROQ_API_KEY=gsk_..." > .env # free key from console.groq.com
python -m scripts.ingest # rebuild storage/ from data/
python -m scripts.precompute_faq # rebuild FAQ answers (calls the LLM)
python -m uvicorn src.main:app --reload # serves /chat and /health
python -m pytest tests -q # unit + integration tests
python -m src.eval.gate # retrieval-only gate (no token needed)
python -m src.eval.run_eval # full eval incl. generation
Key environment variables:
| Var | Default | Purpose |
|---|---|---|
GROQ_API_KEY | — | Groq API key (required for generation) |
GROQ_CHAT_MODEL | qwen/qwen3.8-27b | answer model |
GROQ_EXPANSION_MODEL | openai/gpt-oss-20b | query-expansion model (separate per-model rate limits) |
TOP_K | 8 | retrieved chunks |
QUERY_EXPANSION_ENABLED | true | LLM paraphrases for long questions |
RERANK_ENABLED | true | ColBERT rerank |
FAQ_CACHE_ENABLED | true | serve precomputed answers |
INJECTION_GUARD_ENABLED | true | prompt-injection guard |
src/eval/qa.jsonl is an 18-question golden set. CI runs the test suite and
fails if retrieval hit-rate@8 drops below 90%. Current: 94.4% (17/18).
The research paper and patent PDFs are deliberately not ingested (co-author
PII, reference-list noise); data/curated/projects.md summarises both.
linkedin-profile.md,
education.md and projects.md chunks about as well as the CV summary
line, which sits just outside the top 8 (it is 3rd at top-10). It has
flipped between pass and fail with ColBERT model and corpus changes. Left
failing rather than tuning the golden set to pass. 18 cases is a small set,
so treat the score as a regression alarm, not a guarantee.