6dfc13be1d
Implements five of the six enhancements from docs/kb-enhancements-proposal.htm, closing the retrieval-quality gap identified in the qmd review. - Cross-encoder reranking: new kb/reranker.py loads an optional reranking model at startup (KB_RERANK_ENABLED, KB_RERANKER_MODEL, KB_RERANK_CANDIDATES). Search degrades gracefully to plain hybrid retrieval when the model is absent. Exposed via a "rerank" block in /status, a rerank flag on search, and --no-rerank in the CLI. - RRF rank fusion: FTS and vector lists now merge by reciprocal rank fusion with a top-rank bonus, replacing the old score blend. Scores are comparable across queries. - Bench harness and explain traces: kb bench runs a query fixture against each backend and reports precision@k, recall and MRR. --explain returns a per-result score breakdown. - Tag context descriptions: tags carry an optional one-line description (kb tag-describe), returned as tag_contexts with search results. Adds a tags.description column migration. - Structured data ingestion: .json/.yaml/.toml files ingest as text via the new "data" doc type, pretty-printing minified JSON before chunking. Query expansion (proposal item 5) is deliberately left out pending bench results. Requires engine v3.3.0. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
45 lines
1.3 KiB
YAML
45 lines
1.3 KiB
YAML
services:
|
|
kb-engine:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.nvidia
|
|
runtime: nvidia
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: 1
|
|
capabilities: [gpu]
|
|
ports:
|
|
- "${KB_PORT:-8000}:8000"
|
|
volumes:
|
|
- ${KB_DATA_PATH:-./data}:/data
|
|
environment:
|
|
- KB_MODEL=${KB_MODEL:-all-MiniLM-L6-v2}
|
|
- KB_DEVICE=${KB_DEVICE:-auto}
|
|
- KB_INGEST_DEVICE=${KB_INGEST_DEVICE:-auto}
|
|
- KB_API_KEY=${KB_API_KEY:-}
|
|
- KB_SEARCH_THRESHOLD=${KB_SEARCH_THRESHOLD:-0.01}
|
|
- KB_RERANK_ENABLED=${KB_RERANK_ENABLED:-true}
|
|
- KB_RERANKER_MODEL=${KB_RERANKER_MODEL:-BAAI/bge-reranker-v2-m3}
|
|
- KB_RERANK_CANDIDATES=${KB_RERANK_CANDIDATES:-40}
|
|
- HF_HUB_OFFLINE=${HF_HUB_OFFLINE:-}
|
|
restart: unless-stopped
|
|
|
|
kb-mcp:
|
|
build:
|
|
context: ../mcp
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "${KB_MCP_PORT:-3000}:3000"
|
|
environment:
|
|
- KB_ENGINE_URL=http://kb-engine:8000
|
|
- KB_API_KEY=${KB_API_KEY:-}
|
|
- KB_MCP_API_KEY=${KB_MCP_API_KEY:-}
|
|
# Comma-separated IPs/FQDNs allowed to connect remotely (e.g. 192.168.1.50,kb.example.com)
|
|
- KB_MCP_ALLOWED_HOSTS=${KB_MCP_ALLOWED_HOSTS:-}
|
|
depends_on:
|
|
- kb-engine
|
|
restart: unless-stopped
|