diff --git a/demo-api/collections/ngram-stopwords.yml b/demo-api/collections/ngram-stopwords.yml index bd5837a..7b5429a 100644 --- a/demo-api/collections/ngram-stopwords.yml +++ b/demo-api/collections/ngram-stopwords.yml @@ -30,3 +30,14 @@ search: enabled: true maxDocs: 150000 maxMemoryMB: 512 + - name: combined + mode: combined + rrf: + k: 60 + topK: 100 + weights: + fuzzy: 1.0 + combinedCache: + enabled: true + ttl: 45s + maxEntries: 1000 diff --git a/index.d.ts b/index.d.ts index 6592e82..1dc8550 100644 --- a/index.d.ts +++ b/index.d.ts @@ -90,6 +90,12 @@ declare global { minMatchRatio?: number } + export interface CombinedCacheConfig { + enabled?: boolean + ttl?: string + maxEntries?: number + } + export interface NgramInMemoryConfig { enabled?: boolean maxDocs?: number @@ -193,6 +199,8 @@ declare global { filter?: { [key: string]: any } /** Ngram search configuration */ ngram?: NgramConfig + /** Result cache for combined searches */ + combinedCache?: CombinedCacheConfig /** Regex search configuration */ regex?: RegexConfig /** Custom scoring for eval/filter search */ diff --git a/schemas/config/collection.schema.json b/schemas/config/collection.schema.json index dd4ec33..edc234d 100644 --- a/schemas/config/collection.schema.json +++ b/schemas/config/collection.schema.json @@ -321,7 +321,8 @@ "type": "array", "items": { "type": "integer", - "minimum": 1 + "minimum": 2, + "maximum": 10 } }, "normalize": { @@ -387,6 +388,22 @@ } } }, + "combinedCache": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "ttl": { + "type": "string" + }, + "maxEntries": { + "type": "integer", + "minimum": 0 + } + } + }, "regex": { "type": "object", "additionalProperties": false,