{"adoption": {"forks": 303, "observed_at": "2026-08-28T04:03:13.113041+00:00", "stars": 1011}, "canonical_url": "https://ross.abutalabs.com/products/simple-local-rag", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Build a RAG (Retrieval Augmented Generation) pipeline from scratch and have it all run locally.", "domain": ["large-language-models", "tutorials", "artificial-intelligence", "pdf"], "enriched": true, "function": ["rag", "llm-inference", "pdf", "machine-learning", "nlp"], "health_score": 20, "homepage": null, "language": "Jupyter Notebook", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["mrdbourke/simple-local-rag"], "name": "mrdbourke/simple-local-rag", "platform": ["python", "cross-platform"], "pushed_at": "2024-05-25T11:26:31+00:00", "repo": "mrdbourke/simple-local-rag", "stars": 1011, "tags": ["tutorial", "jupyter-notebook", "chat-with-pdf", "local-llm", "sentence-transformers", "pytorch", "open-source-llm", "retrieval-augmented-generation", "gpu"], "topics": [], "urls": [], "use_cases": ["build a rag pipeline from scratch", "chat with pdf documents locally", "learn how retrieval augmented generation works", "run an llm question answering system on my own gpu", "embed pdf text and search it semantically", "follow a hands-on rag tutorial with jupyter notebooks"], "what_it_is": "A tutorial repository by mrdbourke teaching how to build a retrieval-augmented generation (RAG) pipeline from scratch that runs entirely locally on an NVIDIA GPU. It walks through PDF ingestion, chunking, embedding with sentence transformers, semantic search, and LLM-based answer generation, culminating in a 'chat with PDF' style app called NutriChat.", "when_to_avoid": ["you need a production-ready, maintained RAG framework rather than educational notebook code", "you have no NVIDIA GPU and cannot use Colab", "you need a polished application with setup docs and support - the repo has incomplete setup instructions and no license"], "when_to_choose": ["you want to learn RAG concepts by building a complete pipeline yourself", "you have an NVIDIA GPU (5GB+ VRAM) or Google Colab access and want everything running locally without paid APIs", "you prefer open-source tools like PyTorch, sentence-transformers, and open LLMs over proprietary services"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/simple-local-rag", "repo": "mrdbourke/simple-local-rag", "role": "main", "score": 25}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.113041+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.741944+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e8580ba097511eb4ae5e3e87c562bbc5e6f21c360f519994d0fa2e20dcbb485", "fetched_at": "2026-08-28T04:03:13.113041+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrdbourke/simple-local-rag"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 64, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 903, "days_push": 830, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 25, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}