Skip to content

feat(pii): NER tier engine — privacy-filter.cpp backend + NER-centric PII filter#10360

Open
richiejp wants to merge 1 commit into
mudler:masterfrom
richiejp:feat/pii-ner-tier-engine
Open

feat(pii): NER tier engine — privacy-filter.cpp backend + NER-centric PII filter#10360
richiejp wants to merge 1 commit into
mudler:masterfrom
richiejp:feat/pii-ner-tier-engine

Conversation

@richiejp

Copy link
Copy Markdown
Collaborator

Description

Introduce named-entity-recognition token classification for PII filtering.
Also this extends the regex based filtering mechanism and makes a number of
changes to the UI.

A new backend is introduced; privacy-filter.cpp. This supports OpenAI Privacy
Filter models.

Notes for Reviewers

Squashed feat/pii-ner-tier-engine rebased onto master (was 45 commits; see
backup/pii-ner-tier-engine-prerebase). Net change:

  • privacy-filter.cpp: standalone GGML engine for the openai-privacy-filter
    PII/NER token classifier, wired as a LocalAI gRPC backend (CPU/CUDA/Vulkan).
    TokenClassify moves off the patched llama.cpp path onto this backend.
  • PII filter reworked to be NER-centric (encoder/NER detection tier scanning
    whole conversations as one document), with a recreated bounded restricted-
    regex secret-matching pattern detector tier alongside it (per-model
    pii_detection.builtins / .patterns + core/services/routing/piipattern).
  • Detection labelled by source (ner vs pattern); backend trace / confidence /
    debug observability; analyze/redact exposed as a synchronous API.
  • Instance-wide default detector policy + per-usecase default-on; request
    filtering extended to completions, embeddings, edits & Ollama.
  • React UI: NER-centric PII editor, detector-models table, pattern/builtins
    editor, middleware default-policy UI.
  • Gallery: privacy-filter-multilingual token-classify model + NER install
    filter; token_classify known_usecase; batch sized to context for NER models.
    privacy-filter backend registered in the backend gallery (cpu/vulkan/cuda-13
    meta + image entries with a capabilities map) matching its CI matrix jobs,
    and an /import-model auto-detect importer (PrivacyFilterImporter, narrow
    privacy-filter GGUF detection) replacing the prior pref-only registration.

Reconciled against master's independent evolution:

  • Dropped master's PIIPatternOverrides feature (global-pattern runtime
    overrides + /api/pii/patterns API + runtime_settings.json persistence). The
    per-model NER + pattern-detector design supersedes it; it was built on the
    global redactor pattern set this branch replaced.
  • Reverted the llama.cpp Score carry-patch (0006-server-task-type-score):
    removed the patch and restored master's grpc-server.cpp Score RPC (direct
    llama_decode, slot-loop bypass) and LLAMA_VERSION pin, plus master's
    model_config validation forbidding score + chat/completion/embeddings on
    llama-cpp. token_classify is unaffected (it runs on the privacy-filter
    backend, not llama-cpp).

Assisted-by: Claude:claude-opus-4-8 [Claude Code]

Signed commits

  • Yes, I signed my commits.

@richiejp richiejp force-pushed the feat/pii-ner-tier-engine branch 2 times, most recently from 0c8529e to 49583c2 Compare June 16, 2026 14:23
… PII filter

Squashed feat/pii-ner-tier-engine rebased onto master (was 45 commits; see
backup/pii-ner-tier-engine-prerebase). Net change:

- privacy-filter.cpp: standalone GGML engine for the openai-privacy-filter
  PII/NER token classifier, wired as a LocalAI gRPC backend (CPU/CUDA/Vulkan).
  TokenClassify moves off the patched llama.cpp path onto this backend.
- PII filter reworked to be NER-centric (encoder/NER detection tier scanning
  whole conversations as one document), with a recreated bounded restricted-
  regex secret-matching pattern detector tier alongside it (per-model
  pii_detection.builtins / .patterns + core/services/routing/piipattern).
- Detection labelled by source (ner vs pattern); backend trace / confidence /
  debug observability; analyze/redact exposed as a synchronous API.
- Instance-wide default detector policy + per-usecase default-on; request
  filtering extended to completions, embeddings, edits & Ollama.
- React UI: NER-centric PII editor, detector-models table, pattern/builtins
  editor, middleware default-policy UI.
- Gallery: privacy-filter-multilingual token-classify model + NER install
  filter; token_classify known_usecase; batch sized to context for NER models.
  privacy-filter backend registered in the backend gallery (cpu/vulkan/cuda-13
  meta + image entries with a capabilities map) matching its CI matrix jobs,
  and an /import-model auto-detect importer (PrivacyFilterImporter, narrow
  privacy-filter GGUF detection) replacing the prior pref-only registration.

Reconciled against master's independent evolution:

- Dropped master's PIIPatternOverrides feature (global-pattern runtime
  overrides + /api/pii/patterns API + runtime_settings.json persistence). The
  per-model NER + pattern-detector design supersedes it; it was built on the
  global redactor pattern set this branch replaced.
- Reverted the llama.cpp Score carry-patch (0006-server-task-type-score):
  removed the patch and restored master's grpc-server.cpp Score RPC (direct
  llama_decode, slot-loop bypass) and LLAMA_VERSION pin, plus master's
  model_config validation forbidding score + chat/completion/embeddings on
  llama-cpp. token_classify is unaffected (it runs on the privacy-filter
  backend, not llama-cpp).

Assisted-by: Claude:claude-opus-4-8 [Claude Code]
Signed-off-by: Richard Palethorpe <io@richiejp.com>
@richiejp richiejp force-pushed the feat/pii-ner-tier-engine branch from 49583c2 to 361db0a Compare June 17, 2026 14:33
@richiejp richiejp requested a review from mudler June 17, 2026 14:33
@@ -0,0 +1,112 @@
# Phase-1 integration guide — `openai-privacy-filter` in llama.cpp + LocalAI

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@richiejp this looks leftover (the whole docs/plans

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤦‍♀️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants