M5: implement RAGcore knowledge integration

KnowledgeProvider protocol with a deterministic TF-IDF-weighted extractive demo provider (never generative, always cites real excerpts) and a RAGcore HTTP adapter that degrades cleanly to unavailable. Knowledge nav + chat-style Q&A UI with source cards and honest grounded/insufficient/unavailable states. 57 backend tests passing, ruff clean. Fixed a real relevance bug (generic terms like "vehicle" crowding out distinctive matches) via IDF weighting, found by testing the actual S6 scenario. Verified end-to-end in the browser: grounded damage question cites both expected procedures; unrelated question honestly returns insufficient evidence with no fabrication.
This commit is contained in:
NuklearRabbit
2026-08-01 22:57:06 +02:00
parent 59d663a43a
commit b511ba2dbc
14 changed files with 710 additions and 3 deletions
+26
View File
@@ -167,6 +167,32 @@ export interface MergeCustomersResult {
rewired_bookings: number;
}
export interface SourceCard {
document_id: string;
title: string;
version: string;
section: string;
excerpt: string;
}
export interface GroundedAnswer {
answer: string;
evidence_state: "grounded" | "insufficient" | "unavailable";
sources: SourceCard[];
provider: string;
correlation_id: string;
}
export interface KnowledgeHealth {
provider: string;
available: boolean;
detail: string;
tenant: string;
workspace: string;
collection: string;
document_count: number;
}
export interface AuditEvent {
id: string;
actor_type: string;