OpenTrailPaper
LilyGO T5S3 4.7" E-Paper PRO용 오픈소스 자전거 컴퓨터 펌웨어, 오프라인 지도·GPX 경로·FIT 기록·블루투스 센서 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Question answering over a fixed, reproducible Corpus of pinned NBA-history Wikipedia Articles, with core retrieval built from scratch and judged by an Eval set.
Status: full Corpus. The Corpus is all 266 Articles from the inclusion rule below (prose only), searched with the tutorial's baseline embeddings. See the spec for where this is heading; domain terms are defined in CONTEXT.md.
backend/
manifest.json Articles and pinned revision IDs: the only Corpus artifact in git
(generated by nba_rag.generate_manifest from the inclusion rule)
src/nba_rag/ the library: Corpus building, Embedders, retrieval
eval_set.jsonl the Eval set
results/ eval results files, one per configuration, split and manifest
src/nba_rag_api/ thin FastAPI layer (POST /search, GET /results)
tests/ pytest, with saved HTML fixtures and a fake Embedder
frontend/ Next.js (App Router, TypeScript, Tailwind, shadcn/ui)
docker-compose.yml development stack
Requires Docker.
# One-off: fetch the manifest's Articles, chunk and embed them into the `data` volume.
# Wikimedia requires a contact address in the user agent. Fetching is polite (one
# request a second) and cached on disk in the volume, so the first build takes a few
# minutes and a rebuild after a parser change makes no network calls.
[email protected] docker compose run --rm backend python -m nba_rag.build
# Backend on :8000 (auto-reload), frontend on :3000 (dev server).
docker compose up
Search directly:
curl -X POST localhost:8000/search -H 'content-type: application/json' \
-d '{"question": "Who blocked Andre Iguodala in Game 7?", "k": 3}'
The inclusion rule: every NBA/BAA season, every NBA/BAA Finals, the 30 current
franchises and the 76 players of the NBA 75th Anniversary Team. manifest.json is
generated from it and pins every Article to a revision:
# Articles already in manifest.json keep their pinned revision, so Eval Evidence stays
# valid; delete the file first to re-pin everything to today's revisions.
docker compose run --rm backend python -m nba_rag.generate_manifest \
--version full-2026-10 --last-season 2025
Embeddings are stored as one matrix per embedding setup (embeddings/<setup>.npy) and
searched with vectorised operations.
backend/eval_set.jsonl holds the Eval set: one Eval question per line, with its
question type, source, split and verbatim Evidence spans. A retrieved Chunk is a hit
when it contains an Evidence span after whitespace normalization; a span split across
two Chunks counts as a miss (ADR 0001).
# Score a configuration on a split and write backend/results/. The split defaults to
# dev; test is for deliberate final runs, and all mixes the two.
docker compose run --rm backend python -m nba_rag.evaluate --configuration baseline --split dev
The command first checks that every Evidence span is still in the built Corpus and is a
single sentence. Results
files are committed; the API serves the latest at GET /results and the frontend shows
it at /results. Commit new results before deploying, because the production image
ships the committed files.
cd backend && pip install -e ".[dev]" && pytest # fast suite, no model needed
pip install -e ".[ml]" && pytest -m slow # real bge-small model
cd frontend && npm ci && npm test # Vitest + React Testing Library + MSW
CI runs ruff, eslint, tsc and the unit tests on every push, and checks that the production image builds and serves a search offline.
The backend runs on Google Cloud Run and the frontend on Vercel. See docs/deploy.md.
Row 1 of the planned experiment table reproduces the original tutorial exactly: BGE embeddings with mean pooling, no normalization and no query instruction, ranked by cosine similarity. Chunks are built by greedy word accumulation up to 200 tokens within a paragraph, with no overlap.
Code is MIT. Article text comes from Wikipedia and is licensed under CC BY-SA 4.0.
Originally based on Building Retrieval Augmented Generation (RAG) From Scratch; the generic version lives in git history.