Skip to main content
Persekitaran: Linux WSL2 (Ubuntu 24.04 / Node.js 22+) Klasifikasi: Sistem Carian Tempatan Berdaulat (Sovereign On-Device Search) Lokasi Indeks: ~/.cache/qmd/index.sqlite (SQLite + FTS5 + sqlite-vec) Model AI Tempatan: embeddinggemma-300M (Vektor), Qwen3-Reranker-0.6B (Penyusunan Semula), QMD Query Expansion 1.7B (Pengembangan Pertanyaan)

1. Pengenalan & Ciri Utama QMD

QMD (Quick Markdown Search) ialah enjin carian hibrid tempatan (on-device hybrid search engine) yang direka khas untuk fail Markdown dan kod sumber. Ia menggabungkan:
  1. Carian Leksikal (BM25): Padanan kata kunci pantas tanpa memerlukan GPU/LLM (qmd search).
  2. Carian Semantik Vektor: Carian konsep berasaskan makna teks menggunakan model benaman padat GGUF (qmd vsearch).
  3. Carian Hibrid + Reranking (Disyorkan): Menggabungkan skor leksikal dan vektor dengan Reciprocal Rank Fusion (RRF) serta penarafan semula menggunakan model reranker (qmd query).
  4. Integrasi MCP (Model Context Protocol): Menyediakan antara muka protokol standard untuk ejen AI (Antigravity, Cursor, Claude Code) mencari dan membaca dokumen tanpa membaca keseluruhan fail.

2. Pemasangan & Persediaan Awal (Installation)

A. Keperluan Sistem

  • Node.js versi 22 atau ke atas (node -v).
  • Direktori npm global tanpa hak akses root (~/.npm-global).
  • Pakej kompilasi sistem (pilihan, jika sqlite-vec memerlukan binaan tempatan): build-essential.

B. Langkah Pemasangan Melalui NPM

C. Muat Turun Model AI Tempatan (GGUF)

QMD menggunakan model tempatan bersaiz padat yang disimpan dalam format GGUF:
Model yang dimuat turun merangkumi:
  • embeddinggemma-300M-GGUF (Penjanaan vektor benaman)
  • Qwen3-Reranker-0.6B-Q8_0-GGUF (Penarafan semula ketepatan carian)
  • qmd-query-expansion-1.7B-gguf (Pengembangan semantik pertanyaan)

3. Seni Bina Berbilang Projek (Multi-Project Separation)

Bagi mengelakkan kekeliruan hasil carian (cross-project clutter), setiap projek diasingkan menggunakan koleksi tersendiri (project-scoped collections):

A. Mendaftarkan Koleksi Projek

Setiap direktori didaftarkan dengan nama unik:

B. Memeriksa Status Koleksi


4. Pengindeksan Bertahap & Efisien (Incremental Indexing)

QMD menggunakan semakan cap masa (mtime) dan cincangan SHA-256 bagi setiap dokumen:
  • Fail yang tidak berubah TIDAK AKAN diindeks semula dan TIDAK AKAN dijana semula vektornya.
  • Hanya fail yang baru ditambah atau diubah suai sahaja yang diproses.

A. Arahan Pengindeksan Harian / Manual:


5. Automasi Berkala (Hourly Cron Sync di WSL2)

Bagi memastikan dokumen sentiasa terindeks secara automatik tanpa memerlukan arahan manual, skrip automasi dan entri crontab telah disediakan:

A. Lokasi Skrip Automasi (~/.local/bin/qmd-sync-hourly.sh)

B. Konfigurasi Crontab

Dijalankan pada minit ke-0 setiap jam:

6. Kaedah Penggunaan & Carian (Usage Workflows)

A. Carian Khusus Projek (Scoped Search secara Lalai untuk Optimasi Latensi)

Gunakan bendera -c <koleksi> secara lalai dalam skrip carian tempatan untuk meminimumkan latensi query FTS5 SQLite dan mengelakkan carian bersilang projek:
Apabila mencari corak yang pernah dibuat dalam mana-mana projek:

C. Mengambil & Membaca Kandungan Dokumen


7. Integrasi Ejen AI Melalui FastMCP (tools/mcp/server.py & mcp_config.json)

QMD boleh disepadukan dengan ejen AI (Cursor / Claude / Gemini) melalui dua kaedah:

A. Integrasi Alatan FastMCP Terus (tools/mcp/server.py)

Pelayan DSOM FastMCP menyepadukan alatan qmd_search secara terbina bagi carian hibrid tempatan (perlu diperhatikan bahawa pengasingan skop koleksi tidak dibuat secara automatik dan pemanggil perlu menyerahkan parameter koleksi aktif, contohnya collection="oss-docs"):

B. Konfigurasi Pelayan Stdio MCP Standalone

QMD menyokong Model Context Protocol (MCP) secara terbina dalam melalui arahan qmd mcp (stdio transport).

Konfigurasi Ejen Antigravity (~/.gemini/config/mcp_config.json):

Alatan yang disediakan kepada ejen AI:
  • query: Carian hibrid dengan hujah query dan collection.
  • get: Membaca dokumen atau julat baris dokumen.
  • multi_get: Mengambil banyak dokumen serentak menggunakan corak glob.
  • status: Memeriksa integriti pangkalan data dan senarai koleksi berdaftar.

Deep State of Mind (DSOM) For My AI Protocol | Harisfazillah Jamel (LinuxMalaysia) | 2026-10-11 Standard: UK English | DBP-standard Bahasa Melayu Malaysia (Piawai) | GNU General Public License v3.0