-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbasic-kb.example.yaml
More file actions
90 lines (79 loc) · 4.97 KB
/
Copy pathbasic-kb.example.yaml
File metadata and controls
90 lines (79 loc) · 4.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# basic-kb instance config. Copy next to where you want the index to live.
# All relative paths are anchored to THIS file's directory.
name: my-notes # label only
store_dir: .chroma # ChromaDB store for this instance (gitignore it)
embedding_model: bge-small-en-v1.5
# env_file: ../../.env # Relative to config file. Optional: dotenv file to pull secrets from
# env_file_search_up: 5 # DEF=5. Climb this many parent dirs (nearest first) to find the closest
# # dotenv (basename of env_file, else .env). Straight up only, never into
# # siblings. 0 = only the explicit path above, no walk-up.
chunker: # defaults; override per-run with CLI flags
max_chunk_size: 1200
overlap: 100
min_chunk_size: 50
reranker:
type: local # local | jina (needs JINA_API_KEY) | none
model: jina-v2-multilingual # optional; per-type default otherwise. Such as jina-reranker-v3 (API) or jina-v2-multilingual (local)
# candidates: # how many top hits to rerank: clamp(n*multiplier, min, max)
# multiplier: 3 # fetch this × the requested result count (--n). DEF=3
# min: 50 # ...but always at least this many. DEF=50
# max: 200 # ...and never more than this. DEF=200
# Default search parameters. Every one is overridable per-run by its CLI flag.
# search:
# n: 15 # results to return (--n). In separate/batch mode, per query. DEF=15
# separate: false # DEF=false
# max_chars: 0 # truncate each result to N chars; 0 = full (--max-chars). DEF=0
# timing: false # print per-phase timings to stderr. DEF=false
# content_type: help # default frontmatter content_type filter for markdown sources (--content-type)
log_file: logs/basic-kb.log # write a timestamped event log (index/search/scan) here; path relative to this config
log_level: INFO # DEBUG | INFO | WARNING
# log_max_bytes: 10000000 # rotate at ~10 MB per file ...
# log_backup_count: 5 # ... keeping 5 old files (~50 MB of history; oldest dropped)
# After a search, basic-kb diffs the queried source(s) against the index and, if
# they've stayed stale, prints a one-line nudge. A source must be stale for
# `stale_after_days` before the FIRST nudge; then it re-nags at most once per
# `remind_every_days` until you re-index (re-indexing resets the clock).
# (hashes files at most once per remind window, no embedding). enabled: false turns it off.
# message placeholders: {source} {new} {updated} {deleted} {unchanged} {stale} {total} {days}
freshness:
enabled: true
stale_after_days: 3 # don't nag until a source has been stale this long
remind_every_days: 1 # then nag at most once a day while it stays un-indexed
# message: "[basic-kb] '{source}': {stale} file(s) changed since last index — re-index? (basic-kb index)"
# Optional throttling so a big index doesn't peg the CPU and make the machine
# unusable. Off by default (full speed). The three levers compose; all optional.
throttle:
cores_fraction: 0.5 # fraction of CPU cores the embedder may use (portable across machines)
# priority: low # low | normal — OS process priority while indexing
# pause_ms: 0 # sleep this many ms every `pause_every` embedded files (hard duty cap)
# pause_every: 50
# Corruption guard: if a big fraction of already-indexed files change or vanish at
# once (a moved/corrupted/re-pointed source), incremental index confirms before
# re-embedding. On a TTY it prompts; unattended it aborts (leaving the index intact).
# --yes accepts, --no-reindex-guard skips it for one run. On by default.
# reindex_guard:
# enabled: true
# threshold: 0.9 # churn fraction (changed+deleted / indexed) that triggers the prompt
# Each source -> its own collection. Query one (--source notes), several
# (--source notes,docs), or all (default). See --source list.
sources:
- id: notes
type: markdown # markdown | transcript
path: data/notes # folder of .md files (searched recursively)
chunker: recursive # recursive (no headings) | breadcrumb (heading-aware)
label: My Notes
description: Personal markdown notes.
exclude: # gitignore-style: skip these files/folders under path
- "*.private.md" # name pattern at any depth
- "drafts/"
- "*.log" # trailing slash = a folder and everything under it
- "archive/old*" # contains a slash = anchored at the source root
# - "!keep.md" # leading '!' re-includes a path an earlier line excluded
watch: # auto-reindex THIS source on edits (via `basic-kb watch`)
enabled: true # false to exclude this source from watching
debounce_seconds: 30 # reindex a file this long after it goes quiet (0 = immediately)
# - id: transcripts
# type: transcript
# path: data/transcripts
# chunker: recursive
# label: Meeting Transcripts