Getting Started
Installation
npm install @processcube-io/qmd-search1. 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-Check4. 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
- Indexer & Plugins — Content-Sources konfigurieren
- Framework-Adapter — Integration in bestehende Apps
- React UI-Komponente — Such-Dialog einbauen
- Docker — Standalone-Betrieb