Skip to content

About

Your personal knowledge engine in a popup with Qdrant

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

Semantic Resource Vault

Semantic Resource Vault

Client-side personal knowledge engine. Save any URL, summarize it, classify it, search it semantically, all from a Chrome extension talking directly to your own Qdrant cluster.

License: MIT GitHub stars Discord


Pipeline at a glance

flowchart TB
    A[User saves a link] --> B[Fetch webpage content<br/>title, body, meta tags]
    B --> C[Gemini reads page<br/>extracts title, author,<br/>summary, tags<br/>picks a class]
    C --> D[Gemini turns the text<br/>into a 768-dim<br/>semantic vector]
    C --> E[Tokenize text into<br/>keyword frequencies<br/>BM25-style sparse]
    D --> F[(Qdrant indexes one point:<br/>dense vector + sparse vector<br/>+ metadata payload)]
    E --> F

    G[User searches or browses] --> H{What kind of intent?}
    H -->|free-text query| I[Gemini embeds the query<br/>into a 768-dim vector]
    H -->|click a class chip| J[Build payload filter<br/>class equals chosen id]
    H -->|recency toggle| K[Build time filter<br/>created in last 2 hours]
    I --> L[(Qdrant runs hybrid search:<br/>sparse keyword search +<br/>dense cosine search<br/>in parallel)]
    J --> M[(Qdrant scrolls all points<br/>matching the payload filter)]
    K --> L
    L --> N[Rank with sparse priority:<br/>strong keyword wins,<br/>semantic fills the gaps]
    M --> O[Sort newest first<br/>by last-classified time<br/>LIFO]
    N --> P[Top results to the user]
    O --> P

    F -.same collection.- L
    F -.same collection.- M

    style F fill:#22263a,stroke:#6c63ff,color:#fff
    style L fill:#22263a,stroke:#6c63ff,color:#fff
    style M fill:#22263a,stroke:#6c63ff,color:#fff
Loading

What it does

  • Save any webpage with one click. Page text gets fetched, sent to Gemini for extraction (title, author, summary, tags) and classification, then embedded into a 768-dim vector and indexed in Qdrant alongside a BM25-style sparse vector.
  • Search your vault semantically. Hybrid retrieval: sparse keyword match (a person's name, a tag, a domain) wins when it's strong; dense cosine fills paraphrase queries.
  • Classify with your own categories. Define classes like agents, karpathy, videos, blogs, finetuning, Gemini picks one per save, you reassign by drag-and-drop if needed.
  • Browse by class. Color-coded chips, LIFO ordering (last saved or last reassigned first).
  • Export everything to CSV with one click.
  • Local-first. All keys live in chrome.storage.local. Traffic goes directly to Gemini and your own Qdrant cluster, no proxy, no third-party server.

Features

  • Hybrid search (Qdrant named vectors: 768-d Cosine dense + IDF-modified sparse)
  • Sparse-priority ranking with cosine fallback (avoids tech-corpus dense-cluster collapse)
  • Auto-deduplication via deterministic UUID derived from URL hash
  • Drag-and-drop class reassignment with optimistic UI
  • Per-link delete with confirm modal
  • Per-class link counts
  • User-defined classes with custom colors
  • Recency boost (last 2h filter on created_at)
  • Bulk URL ingestion
  • CSV export with UTF-8 BOM (Excel-friendly)
  • Toast notifications (auto-dismiss + manual close)
  • Reclassify-all with retry+backoff and progress UI
  • oEmbed enrichment for YouTube and Vimeo (channel + title even on JS-rendered pages)

Setup

1. Get keys

Save tab with URL input and saved results

2. Load the extension

git clone https://github.com/Goodnight77/semantic-resource-vault.git
cd semantic-resource-vault

In Chrome / Edge / Brave:

  1. Open chrome://extensions
  2. Enable Developer mode
  3. Click Load unpacked → pick the cloned folder

3. Configure

  1. Click the extension icon → ⚙ Options
  2. Paste Gemini key, Qdrant URL, Qdrant API key
  3. Click Test Connection — accept the prompt to create the semantic_vault_hybrid collection (hybrid: dense 768 + sparse IDF)
  4. Click Save All Settings
  5. While in Options, define your classes with colors at the top of the page

Usage

Save the current tab

Open the popup → Save tab → Save Current Page. The status line shows the auto-assigned class chip: ✓ Saved: 2000s vibe playlist [in: music]

Classes panel with search results

Bulk add

Bulk Add tab → paste one URL per line → Ingest All URLs.

Search

Search tab → type a query → Search. Toggle Recency Boost to restrict to the last 2 hours. Classes panel with search results 2nd GPt search

Browse by class

Header ⊞ Classes button → click a chip. Drag any card onto another chip to reassign its class. Click × on a card to delete from the vault.

Options

Click ⚙ Options to configure API keys and manage classes.

Search results for 'react' query

Export

Options → Classes section → Export CSV. Downloads a UTF-8 file with class metadata + every saved link.

Reclassify

After editing your class list, hit Reclassify all existing links in Options to re-run the AI classifier over already-saved points.

Qdrant integration

you can see your collection and points live-update in Qdrant Cloud's UI as you save, search, reclassify, and delete links.

Options page with API key configuration

Class chips with colors

Privacy

  • Gemini API key, Qdrant URL, Qdrant API key, all stored in chrome.storage.local (unsynced, local to this Chrome profile).
  • Page text only ever goes to Gemini's API and your own Qdrant cluster.
  • No analytics, no telemetry, no third-party services beyond those two.

Author

Mohammed Arbi Nsibi

About

Your personal knowledge engine in a popup with Qdrant

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages