Skip to Content
QMD Search SDKGetting Started

Getting Started

Installation

npm install @processcube-io/qmd-search

1. Index erstellen

Der Indexer liest Dateien aus lokalen Verzeichnissen und/oder GitHub und erstellt eine SQLite-Datenbank mit BM25-Index.

import { createIndexer, filesystemSource, githubSource } from '@processcube-io/qmd-search'; const indexer = createIndexer({ dbPath: './data/index.sqlite', collections: [ { name: 'docs', path: './content', pattern: '**/*.md', context: 'Projekt-Dokumentation', group: 'Allgemein', }, { name: 'blog', path: './blog', pattern: '**/*.mdx', context: 'Blog-Artikel', group: 'Allgemein', }, ], plugins: [filesystemSource, githubSource], }); const result = await indexer.run(); console.log(`${result.indexed} Dokumente indexiert in ${result.duration_s}s`);

2. Suche ausfuehren

import { createSearchStore } from '@processcube-io/qmd-search'; const store = await createSearchStore({ dbPath: './data/index.sqlite', }); const result = await store.search('installation', { limit: 10 }); for (const hit of result.results) { console.log(`[${hit.collection}] ${hit.title} — ${hit.path}`); }

3. HTTP-Endpoint bereitstellen

Next.js App Router

// app/api/search/route.ts import { createSearchStore } from '@processcube-io/qmd-search'; import { createNextHandler } from '@processcube-io/qmd-search/adapters/nextjs'; const store = await createSearchStore({ dbPath: './data/index.sqlite' }); export const GET = createNextHandler(store);

Standalone-Server

import { createSearchStore } from '@processcube-io/qmd-search'; import { startServer } from '@processcube-io/qmd-search/adapters/standalone'; const store = await createSearchStore({ dbPath: './data/index.sqlite' }); await startServer(store, { port: 3001 }); // GET /api/search?q=... — Suche // GET /api/collections — Collections auflisten // GET /health — Health-Check

4. Hybrid-Suche aktivieren (optional)

Fuer bessere Ergebnisse kann die Suche mit Vektor-Embeddings und Reranking erweitert werden:

const store = await createSearchStore({ dbPath: './data/index.sqlite', searchMode: 'hybrid', embedProvider: { provider: 'voyage', apiKey: process.env.VOYAGE_API_KEY, domainContext: 'eine technische Dokumentation ueber Kubernetes und Docker', }, });

Unterstuetzte Provider: none (nur BM25), openai, voyage.

Naechste Schritte