Windows-GPU-UNLOCK
This is Windows GPU UNLOCK: RTX3090 UEFI port, Korean no-reset Windows boot guide, verified source and benchmark evidence
AI translation
Ask questions about published public policy documents and see the exact page each answer comes from.
OtherTypeScript · CSSGitHub @Ak9312OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Ask questions about public policy documents and get answers that cite the exact page they came from. This project rebuilds the retrieval-augmented generation (RAG) assistant from my class notebook and fixes its main weakness: duplicate chunks.
/): anyone can ask questions. Answers come only from the published documents, with numbered citations and the cited passage highlighted.Live demo: https://policy-knowledge-assistant.vercel.app
Demo video: link to be added
In the class notebook, uploading the same file twice indexed every chunk twice. A question would then retrieve the top 5 chunks, but several of those 5 were identical copies, so:
Admin upload ──► fingerprint check ──► parse ──► strip headers/footers ──► page-aware chunks
│ (SHA-256) │
└─ already indexed? block ▼
exact-duplicate check (normalized text hash)
│
near-duplicate check (shared vocabulary ≥ 0.9,
or embedding similarity ≥ 0.985 when embeddings are on)
│
▼
index: keywords (BM25) + optional embeddings
│
Public question ──► keyword ranking ─┬─► merged ranking ──► top 5 *distinct* passages ──► Groq answer with [n] citations
meaning ranking ─┘ (reciprocal rank fusion)
Duplicates are handled at four levels:
| Level | What it catches | How |
|---|---|---|
| File | The same file uploaded again, even under a new name | SHA-256 of the bytes, checked in the browser before upload and again on the server |
| Boilerplate | Running headers, footers, page numbers repeated on every page | Lines appearing on at least half the pages are removed before chunking |
| Passage | The same text arriving in a different file (re-saved copy, reprint) | SHA-256 of normalized text (case, spacing, punctuation ignored) |
| Retrieval | Anything that still slips through | Top-k selection skips results with the same hash, near-identical vocabulary, or embedding similarity ≥ 0.95 to a chosen result |
Other changes from the notebook:
The admin page builds and runs the test set:
Metrics reported:
| Metric | Meaning |
|---|---|
| Right page in top 5 | Share of questions where the source page was retrieved |
| Mean reciprocal rank | 1.0 = the right page was always ranked first |
| Duplicate results in top 5 | Share of result slots wasted on a copy of another result |
| Faithfulness | Answers fully supported by their cited passages |
| Correctness | Answers matching the reference |
Results can be downloaded from the admin page as CSV or JSON.
Run the evaluation on the deployed site and paste the table here.
| Metric | Improved | Baseline |
|---|---|---|
| Right page in top 5 | ||
| Mean reciprocal rank | ||
| Duplicate results in top 5 | ||
| Faithfulness | n/a | |
| Correctness | n/a |
Limits of this evaluation: questions are generated from single passages, so they favour fact-lookup questions over questions that need several passages; grading uses the same model family that produced the answers.
openai/gpt-oss-120b writes answers (falling back to openai/gpt-oss-20b if it hits its limit), and openai/gpt-oss-20b writes test questions and grades them, using strict JSON schemas. Groq's free limits are per model, so evaluation doesn't use up the chat budget. All models are configurable.gemini-embedding-2, 768 dimensions) for meaning-based search. Groq has no embedding models.src/
app/
page.tsx public chat
admin/page.tsx admin (login or dashboard)
api/chat streaming answers with sources
api/library public list of documents
api/admin/* login, upload, ingest, documents, evaluation
components/ chat, admin dashboard, answer rendering
lib/
ingest.ts upload pipeline and all duplicate checks
chunk.ts boilerplate removal and page-aware chunking
retrieve.ts distinct top-k and the naive baseline
eval.ts test-set builder, runner, scoring
ai.ts Groq generation, optional Gemini embeddings, rate-limit handling; offline mock
bm25.ts keyword search
storage.ts Vercel Blob or local folder
session.ts, auth.ts signed admin session cookie
proxy.ts serves the admin page only at the secret path and signs you in
npm install
cp .env.example .env.local # fill in GROQ_API_KEY and ADMIN_PATH (GEMINI_API_KEY optional)
npm run dev
Without BLOB_READ_WRITE_TOKEN, files are stored in ./.data. To try the app without any key, set
MOCK_AI=1 (offline stand-in: answers are not real, useful only for testing the pipeline and UI).
BLOB_READ_WRITE_TOKEN).GROQ_API_KEY and ADMIN_PATH (a long random string) as environment variables. Add GEMINI_API_KEY too for meaning-based search.https://<your-site>/<ADMIN_PATH> and upload documents.On Groq's free plan the binding limit is usually tokens per minute (8,000 for the gpt-oss models). One answer uses about 2,000 to 3,000 tokens, so expect roughly three answers a minute on the main model before the fallback model takes over. When a limit is hit:
/, and the admin page at /<ADMIN_PATH>, which only the owner knows. /admin and any wrong path return 404.ADMIN_PATH, so changing ADMIN_PATH in Vercel immediately locks out every old link and session. Do this if the link is ever shared by mistake.noindex and no-referrer, so it isn't indexed and its address isn't leaked to other sites.