Build a local knowledge base search tool over Markdown, PDF, EPUB, HTML, or text files without external APIs.
Feed an LLM ranked, formatted context chunks pulled from your own document collection.
Run health checks and retrieval evaluations to measure whether keyword search is good enough before adding vector search.
| andrewlerdorf/jasrag | 0xallam/my-recipe | 0xhassaan/nn-from-scratch | |
|---|---|---|---|
| Stars | 0 | — | 0 |
| Language | Python | Python | Python |
| Last pushed | — | 2022-11-22 | — |
| Maintenance | — | Dormant | — |
| Setup difficulty | easy | moderate | moderate |
| Complexity | 3/5 | 2/5 | 4/5 |
| Audience | developer | general | developer |
Figures from each repo's GitHub metadata at analysis time.
No external API or vector database needed, runs entirely on local SQLite with the Python standard library and CLI.
JAS RAG, short for Just Another Simple RAG, is a local-first Python tool for retrieval augmented generation, the technique of pulling relevant text out of a collection of documents and handing it to a language model as context before it answers a question. What makes this project different is that it deliberately skips the usual approach. It does not use embeddings, a vector database, a reranker model, or any external API. Instead it relies entirely on SQLite, a lightweight database format, and its built in full text search feature called FTS5 to find matching text using keywords. You feed it files such as Markdown, PDF, EPUB, HTML, or plain text, and it indexes them at two levels: whole documents and smaller chunks within those documents. When you run a query, it can search either the chunk level index to build a formatted block of context ready to hand to an LLM, or the document level index to browse which files match, using a separate ranking step that boosts results by source type, category, and title. The chunking step is a set of heuristics rather than anything fancy. It strips frontmatter and HTML comments, normalizes whitespace, figures out whether the content looks structured, like a list, narrative, or plain reference text, then splits it accordingly, aiming for chunks around 2000 characters with some overlap between them. A checksum system avoids re-indexing files that have not changed. The project also includes health check commands that report on database consistency, such as orphaned index rows or oversized chunks, plus an evaluation tool that checks retrieval quality against a set of test queries. The README is explicit that this is meant as a baseline: the intended path is to prove keyword search is insufficient before bothering to add vector search on top, rather than assuming it from the start. It suits developers who want a dependency-light, fully local, easy to debug starting point for building a knowledge base search system.
JAS RAG is a local-first Python retrieval tool that uses SQLite keyword search instead of embeddings or a vector database to feed relevant document chunks to an LLM.
Mainly Python. The stack also includes Python, SQLite, FTS5.
License terms are not stated in the README, check the repository's LICENSE file before using in a commercial project.
Setup difficulty is rated easy, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.