Skip to Content
QMD Search SDKAPI-Referenz

API-Referenz

Vollstaendige Uebersicht aller exportierten Funktionen, Interfaces und Types.

Core

createSearchStore(config)

Erstellt einen neuen Search Store.

function createSearchStore(config: QmdSearchConfig): Promise<SearchStore>

QmdSearchConfig:

FeldTypDefaultBeschreibung
dbPathstring(Pflicht)Pfad zur SQLite-Datenbank
searchMode'fts' | 'hybrid''fts'Such-Modus
embedProviderEmbedProviderConfigEmbedding-Provider
collectionsCollectionDef[]Collection-Definitionen
resultFormatterPartial<ResultFormatter>DefaultsErgebnis-Formatierung

SearchStore:

MethodeBeschreibung
search(query, options?)Suche ausfuehren → SearchResponse
listCollections()Collections mit Dokumentanzahl
isHybridSearch()Hybrid-Modus aktiv?
formatterZugriff auf den ResultFormatter
close()Store schliessen

createLimiter(config?)

Erstellt einen Backpressure-Limiter.

function createLimiter(config?: LimiterConfig): { withBackpressure, limit }
FeldTypDefaultBeschreibung
maxConcurrencynumber5Max. parallele Anfragen
maxPendingnumber20Max. wartende Anfragen (dann 429)

Indexer

createIndexer(config)

Erstellt einen Indexer.

function createIndexer(config: IndexerConfig): Indexer

IndexerConfig:

FeldTypBeschreibung
dbPathstringPfad zur SQLite-Datenbank
collectionsCollectionDef[]Collection-Definitionen
contentSourcesContentSourceEntry[]Plugin-basierte Quellen
pluginsContentSourcePlugin[]Registrierte Plugins
embedProviderEmbedProviderConfigEmbedding-Provider
skipEmbedbooleanEmbeddings ueberspringen
fetchOutputDirstringVerzeichnis fuer gefetchte Dateien

Indexer:

MethodeBeschreibung
run(callbacks?)Index erstellen/aktualisieren → IndexResult

IndexResult:

FeldTypBeschreibung
indexednumberNeu indexierte Dokumente
updatednumberAktualisierte Dokumente
unchangednumberUnveraenderte Dokumente
removednumberEntfernte Dokumente
needsEmbeddingnumberDokumente ohne Embedding
duration_snumberDauer in Sekunden

Adapter

createNextHandler(store, options?)

function createNextHandler(store: SearchStore, options?: NextHandlerOptions): (req: Request) => Promise<Response>

createExpressMiddleware(store, options?)

function createExpressMiddleware(store: SearchStore, options?: ExpressMiddlewareOptions): ExpressMiddleware

createHonoHandler(store, options?)

function createHonoHandler(store: SearchStore, options?: HonoHandlerOptions): HonoHandler

startServer(store, options?)

function startServer(store: SearchStore, options?: StandaloneServerOptions): Promise<StandaloneServer>

StandaloneServerOptions:

FeldTypDefaultBeschreibung
portnumber3001Server-Port
hoststring'0.0.0.0'Server-Host
authAuthPluginAuth-Plugin
corsOriginstring'*'CORS-Origin
mcpMcpSearchServerConfig | booleanMCP-Endpoint aktivieren

MCP

createMcpSearchServer(store, config?)

function createMcpSearchServer(store: SearchStore, config?: McpSearchServerConfig): Promise<McpServer>

McpSearchServerConfig:

FeldTypDefaultBeschreibung
namestring'qmd-search'Server-Name
versionstring'1.0.0'Version
baseUrlstring''Basis-URL fuer Links
collectionDescriptionsRecord<string, string>{}Beschreibungen
searchToolDescriptionstring(generisch)Tool-Beschreibung
listCollectionsToolDescriptionstring(generisch)Tool-Beschreibung

Auth

createEnvAuth(config?)

function createEnvAuth(config?: EnvAuthConfig): AuthPlugin
FeldTypDefaultBeschreibung
headerNamestring'X-API-Key'HTTP-Header
envVarstring'QMD_API_KEY'Env-Var-Name
apiKeystringKey direkt uebergeben

createOdooAuth(config)

function createOdooAuth(config: OdooAuthConfig): AuthPlugin
FeldTypDefaultBeschreibung
odooBaseUrlstring(Pflicht)Odoo-Basis-URL
validateEndpointstring'/api/validate-key'Endpoint
headerNamestring'X-API-Key'HTTP-Header
cacheTtlMsnumber300000Cache-TTL (5 Min.)
maxCacheSizenumber1000Max. Cache-Eintraege

Types

EmbedProviderConfig

FeldTypBeschreibung
provider'none' | 'local' | 'openai' | 'voyage'Provider-Typ
apiKeystringAPI-Key
modelstringEmbedding-Modell
dimensionsnumberVektor-Dimensionen
domainContextstringKontext fuer Query Expansion
maxRetriesnumberMax. Retries
retryBaseMsnumberBasis-Wartezeit

CollectionDef

FeldTypBeschreibung
namestringEindeutiger Name
pathstringQuellverzeichnis
patternstringGlob-Pattern
contextstringLLM-Kontext
groupstringGruppierung

SearchResponse

FeldTypBeschreibung
resultsSearchResult[]Suchergebnisse
querystringSuchbegriff
collectionstring | nullFilter
totalnumberAnzahl Ergebnisse
duration_msnumberDauer in ms

SearchResult

FeldTypBeschreibung
titlestringSeitentitel
pathstringURL-Pfad
collectionstringCollection-Name
snippetstringTextauszug
scorenumberRelevanz-Score

ContentSourcePlugin

FeldTypBeschreibung
namestringPlugin-Name
fetch(config)Promise<FetchResult>Dateien laden
validate?(config)booleanConfig validieren

AuthPlugin

FeldTypBeschreibung
namestringPlugin-Name
resolve(req)Promise<AuthResult>Request authentifizieren

AuthResult

FeldTypBeschreibung
validbooleanAuthentifiziert?
customerIdstringKunden-ID
scopesstring[]Berechtigungen
errorstringFehlermeldung