Closes #114, #115, #116, #117. - Deterministic, offline, dependency-free char-ngram embedding backend + config section (semantic.enabled default false, min_similarity, backend). - Committed embedding index (data/kb_embedding_index.json) mapping vectors to real KB entry ids only; built by scripts/build_embedding_index.py, loaded once/cached. - Resolver falls back to the nearest entry on a deterministic miss when enabled, accepting >= min_similarity and emitting SC0020; NSFW-gated neighbours are skipped. Disabled => byte-identical to before. - Guarantee tests: deterministic lookup always wins (exact hit never queries the index), fallback emits only KB tags (no invention), identical input => identical output. SC0020 registered. Co-authored-by: kunail0804 <kunail0804@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
37 lines
724 B
JSON
37 lines
724 B
JSON
{
|
|
"schema": "1.0",
|
|
"analyzer": {
|
|
"backend": "ollama",
|
|
"model": "llama3",
|
|
"temperature": 0.0,
|
|
"max_retries": 3,
|
|
"timeout": 60
|
|
},
|
|
"resolver": {
|
|
"knowledge_base": "knowledge_base/",
|
|
"strict_mode": true,
|
|
"allow_aliases": true,
|
|
"expansion_enabled": true,
|
|
"max_expansion_depth": 8,
|
|
"include_nsfw": false,
|
|
"knowledge_base_version": null
|
|
},
|
|
"validator": {
|
|
"allow_unknown_fields": false
|
|
},
|
|
"prompt_builder": {
|
|
"target": "easy_illustrious",
|
|
"separator": ",",
|
|
"remove_duplicate_tags": true
|
|
},
|
|
"semantic": {
|
|
"enabled": false,
|
|
"min_similarity": 0.5,
|
|
"backend": "char_ngram"
|
|
},
|
|
"debug": {
|
|
"enabled": false,
|
|
"level": "basic"
|
|
}
|
|
}
|