{
  "markdown": "# LLMs4EU - Tourism - RAG\n\nLocal RAG for tourism places. SQLite stores canonical content, and Chroma stores\nderived vector indexes. Both run entirely inside the Python environment.\n\n## Requirements\n\n- [uv](https://docs.astral.sh/uv/)\n- [just](https://just.systems/)\n- [Ollama](https://ollama.com/) — only needed for `just ask`, `just scrape`,\n  and `just eval-generate`\n\n## Setup\n\n```bash\nuv sync --extra dev   # install all dependencies\ncp .env.example .env  # set local paths (defaults work out of the box)\n```\n\n```bash\nollama pull gemma4:e4b\n# Optional for eval question generation:\nollama pull gemma4:26b-a4b-it-q4_K_M\nollama pull gpt-oss:20b\n```\n\n## Usage\n\n```bash\njust init        # load seed data into SQLite\njust index       # embed places and rebuild Chroma\njust ask What place is best for a quiet forest walk near water?  # retrieve + LLM answer\njust scrape https://example.com  # crawl a site, ingest into SQLite, reindex\njust scrape-web  # start the local scraping UI\njust eval-index qwen  # rebuild the default qwen chunk vector index\njust test        # run the non-LLM test suite\n```\n\nSearch defaults to top 10 final results. Override per query:\n\n```bash\nuv run python -m src.rag.search \"lake picnic\" --limit 5\n```\n\nExperimental retrieval eval over scraped Markdown pages:\n\n```bash\njust eval-chunks\njust eval-index qwen\njust eval-generate 10\njust eval qwen,sparse\njust eval qwen4b_rerank,qwen4b_hybrid,qwen4b_hybrid_rerank\n```\n\n## Shape\n\n```text\ndata/           tracked seed fixture\nsql/            one-table schema, portable to SQLite and Postgres\nsrc/db/         SQLite initialize and place queries\nsrc/preprocess/ rebuild derived data from SQL rows\nsrc/indexing/   provider-shaped vector indexing\nsrc/vector_store/  Chroma collection, upsert, vector search\nsrc/retrieval/  chunk retrieval methods and catalog\nsrc/rag/        place search and answer scripts\nsrc/eval/       chunked raw-page retrieval evaluation\nsrc/scraping/   crawler, transform, ingest, scraping UI\nsrc/shared/     schema, embeddings, env, LLM helper\ntests/          data contract, retrieval, scrape transform\n```\n\nDurable reference databases live under `data/db/` with descriptive names such\nas `pages.db`. Regenerable vector cache artifacts live under\n`data/cache/chroma/`. SQLite page chunks are the source of truth for chunk text;\nChroma collections are derived indexes over those chunks. Use `.env` overrides\nfor private scratch paths under `.local/`.\n\n---\n\n## Roadmap\n\nThis repo focuses on building a clean, portable place database as the foundation\nfor a larger RAG system.\n\n**Current:** SQLite + Chroma, everything local, no services needed.\n\n**Next step:** swap storage backends for larger shared runs:\n- SQLite → **Supabase** (free tier, under 500 MB, shared across teams)\n- Chroma → **Qdrant** (free tier, managed vector index)\n\nThe SQL schema and module boundaries are designed to make that swap small.\nBefore scaling up, we need to align with other teams on what data collection\ntools and shared infrastructure are available.\n\n## Docs\n\n- [docs/architecture-decisions.md](docs/architecture-decisions.md): durable decisions and why they matter.\n- [experiments/indexing/README.md](experiments/indexing/README.md): retrieval experiments and evaluation protocol.\n- [docs/retrieval-results-agentic.md](docs/retrieval-results-agentic.md): current agentic retrieval report.\n",
  "bytes": 3364,
  "sha": "30107345e7d5285d93d862f794eb2f2cf4c21dca005665d056cd7e50a1c67959",
  "repo_slug": "datacationorg/llms4eu",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_datacationorg_llms4eu_data_okf_tourism_r_fb0d521c/readme"
}