| # Project Structure β Prism |
|
|
| ``` |
| prism/ |
| βββ CLAUDE.md |
| βββ README.md |
| βββ requirements.txt |
| βββ .env.example |
| βββ config.yaml # All tunable params (chunk sizes, weights, eval flags) |
| βββ Dockerfile |
| βββ render.yaml |
| βββ .gitignore |
| β |
| βββ .claude/ |
| β βββ settings.json |
| β βββ hooks/ |
| β β βββ session-reflect.sh |
| β βββ rules/ |
| β βββ memory-profile.md # Facts about Ben |
| β βββ memory-preferences.md # How Ben likes things done |
| β βββ memory-decisions.md # Technical decisions log |
| β βββ memory-sessions.md # Session log |
| β βββ coding-standards.md # Code style rules |
| β |
| βββ docs/ |
| β βββ architecture.md |
| β βββ decisions.md |
| β βββ api-spec.md |
| β βββ structure.md # This file |
| β |
| βββ server/ |
| β βββ __init__.py |
| β βββ main.py # FastAPI app, lifespan startup |
| β βββ ingest.py # Load β ParentDocumentRetriever β embed β store |
| β βββ retriever.py # Hybrid: dense + BM25 + RRF + reranker |
| β βββ bm25_index.py # BM25 index singleton |
| β βββ reranker.py # Cross-encoder reranker singleton |
| β βββ memory.py # ConversationBufferWindowMemory |
| β βββ chain.py # ConversationalRetrievalChain |
| β βββ utils.py # Config loader, logger, token counter |
| β βββ routes/ |
| β β βββ __init__.py |
| β β βββ chat.py # POST /api/chat, DELETE /api/chat/memory |
| β β βββ upload.py # POST /api/upload |
| β β βββ eval.py # GET /api/eval/session, POST /api/eval/precision|ragas |
| β βββ eval/ |
| β βββ __init__.py |
| β βββ precision.py # Precision@K |
| β βββ faithfulness.py # LLM-as-Judge (1β5 score) |
| β βββ ragas_eval.py # RAGAS (4 metrics) |
| β |
| βββ frontend/ |
| β βββ package.json |
| β βββ vite.config.js |
| β βββ tailwind.config.js |
| β βββ index.html |
| β βββ src/ |
| β βββ main.jsx |
| β βββ App.jsx # Tab nav: Chat | Eval | Upload |
| β βββ api.js # Axios client |
| β βββ components/ |
| β βββ ChatTab.jsx |
| β βββ EvalDashboard.jsx # RAGAS scorecard + Precision@K + LangSmith link |
| β βββ UploadTab.jsx # Drag-and-drop upload |
| β βββ MessageBubble.jsx |
| β βββ SourceExpander.jsx |
| β |
| βββ scripts/ |
| β βββ run_ingest.py # CLI ingestion |
| β βββ run_eval.py # CLI Precision@K eval |
| β βββ run_ragas_eval.py # CLI RAGAS eval |
| β βββ benchmark_chunks.py # Sweep chunk sizes, plot Precision@K |
| β |
| βββ tests/ |
| β βββ test_ingest.py |
| β βββ test_retriever.py |
| β βββ test_reranker.py |
| β βββ test_chain.py |
| β βββ test_eval.py |
| β βββ test_ragas.py |
| β |
| βββ data/ |
| β βββ raw/ # Drop PDFs here (gitignored) |
| β βββ ground_truth/ |
| β βββ eval_pairs.json # 20 query/chunk pairs + ground_truth field |
| β |
| βββ sample_data/ # Seeded sample PDFs for demo |
| βββ chroma_db/ # Auto-created, gitignored |
| ``` |
|
|