diff --git a/docs/img/inspector-search.png b/docs/img/inspector-search.png new file mode 100644 index 00000000..989209e8 Binary files /dev/null and b/docs/img/inspector-search.png differ diff --git a/docs/inspector.md b/docs/inspector.md new file mode 100644 index 00000000..4aebaf0d --- /dev/null +++ b/docs/inspector.md @@ -0,0 +1,54 @@ +# Database Inspector + +Interactive TUI for browsing your LanceDB database. + +## Installation + +```bash +# For haiku.rag-slim +pip install 'haiku.rag-slim[inspector]' + +# Already included in haiku.rag +pip install haiku.rag +``` + +## Usage + +```bash +haiku-rag inspect +haiku-rag inspect --db /path/to/database.lancedb +``` + +## Interface + +![Inspector with search](img/inspector-search.png) + +Three panels display your data: + +- **Documents** (left) - All documents in the database +- **Chunks** (top right) - Chunks for the selected document +- **Detail View** (bottom right) - Full content and metadata + +## Navigation + +**Keyboard:** + +- `Tab` - Cycle between panels +- `↑` / `↓` - Navigate lists +- `/` - Open search modal +- `q` - Quit + +**Mouse:** Click to select, scroll to view content + +## Search + +Press `/` to open the full-screen search modal: + +- Enter your query and press `Enter` to search +- **Left panel**: Search results with relevance scores `[0.95] content preview` +- **Right panel**: Full chunk content and metadata +- Use `↑` / `↓` to navigate results - detail view updates in real-time +- Press `Enter` on a result to close search and navigate to that document/chunk +- Press `Esc` to close search without selecting + +Search uses hybrid (vector + full-text) search across all chunks. Content is rendered as markdown with syntax highlighting. diff --git a/haiku_rag_slim/haiku/rag/inspector/widgets/document_list.py b/haiku_rag_slim/haiku/rag/inspector/widgets/document_list.py index 4d8de6a9..ec52d40d 100644 --- a/haiku_rag_slim/haiku/rag/inspector/widgets/document_list.py +++ b/haiku_rag_slim/haiku/rag/inspector/widgets/document_list.py @@ -47,7 +47,7 @@ class DocumentList(VerticalScroll): # Add document items for doc in self.documents: - title = doc.title or doc.uri or doc.id or "Untitled" + title = doc.title or doc.uri or doc.id item = ListItem(Static(f"{title}")) await self.list_view.append(item) diff --git a/mkdocs.yml b/mkdocs.yml index 1604399e..34fa781d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -66,6 +66,7 @@ nav: - Server: server.md - Remote processing: remote-processing.md - MCP: mcp.md + - Inspector: inspector.md - Benchmarks: benchmarks.md markdown_extensions: - admonition