terraphim / terraphim/terraphim-ai
arch: Apply faer-style Rust optimisation patterns to core search pipeline
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Rust
- Estrellas
- 62
- Forks
- 5
- Merge medio
- 2 h 27 min
- PR fusionados (30 d)
- 1
Descripción
Architecture Optimisation: Apply faer-style Rust Patterns
Context
Evaluation of faer (pure Rust linear algebra library) identified several advanced Rust optimisation patterns that are directly applicable to terraphim-ai's core search pipeline. These patterns complement the existing performance epic (#193) and automata refactor (#201) with concrete, proven techniques.
KB reference: cto-executive-system/knowledge/faer-rust-linear-algebra.md
Patterns to Evaluate and Apply
1. Move+Reborrow for Mutable Views (MatMut pattern)
faer's MatMut uses move semantics + reborrow instead of Copy to prevent aliased mutable access at compile time. This pattern could improve:
AutomataPathand mutable graph traversal interraphim_automata- Mutable search context objects passed through the pipeline
- Any
&mutaliasing that currently relies on runtime checks (RefCell, Mutex)
Benefit: Compile-time exclusive access guarantees without runtime overhead.
2. Runtime SIMD Dispatch
faer uses std::arch for runtime CPU feature detection (AVX-512/AVX2/SSE) with automatic dispatch to optimal codepaths. Applicable to:
- Aho-Corasick pattern matching hot path (currently delegated to
aho-corasickcrate, but custom SIMD could help with pre/post processing) - Hash computation for knowledge graph lookups
- String comparison in thesaurus matching
Benefit: 2-4x throughput on SIMD-capable hardware without losing portability.
3. Zero-Copy View Types
faer's MatRef/MatMut provide zero-copy slicing with lifetime-bound subviews. Applicable to:
- Search result slices passed between pipeline stages
- Knowledge graph node/edge views (avoid cloning during traversal)
- Automata state views during matching (connects to #201 cache efficiency goal)
Benefit: Eliminate allocations in hot paths identified in #196 and #382.
4. Trait-Based Generic Configuration (Auto trait)
faer's Auto trait provides algorithm-specific hyperparameters tuned per scalar type. Applicable to:
- Search scoring functions that currently use runtime type checks or enum dispatch
- Automata builder configuration (different strategies for different corpus sizes)
perf-warnstyle compile-time warnings when suboptimal configurations are used
Benefit: Zero-cost abstractions for configurable behaviour.
Relationship to Existing Issues
| Existing Issue | How This Connects |
|---|---|
| #193 (Performance Epic) | Adds concrete Rust patterns to the roadmap |
| #201 (Automata Refactor) | Move+reborrow and SIMD patterns directly applicable |
| #196 (Excessive Cloning) | Zero-copy views are the solution pattern |
| #382 (HTTP client allocations) | Zero-copy patterns reduce allocation pressure |
| #200 (Search Relevance) | Trait-based config for scoring function dispatch |
Implementation Approach
- Audit: Profile current hot paths with
cargo flamegraphto identify where these patterns give most ROI - Prototype: Apply move+reborrow pattern to one mutable context type, measure impact
- Evaluate SIMD: Check if
aho-corasickcrate's SIMD is sufficient or if custom dispatch adds value - Zero-copy views: Introduce
SearchResultRef/SearchResultMutview types for pipeline stages
Not In Scope
- Numerical linear algebra (faer's core domain) -- not relevant to terraphim
- Sparse matrix operations
- Rayon parallelism (already evaluated separately)
References
- faer docs: https://docs.rs/faer/latest/faer/
- faer repo: https://github.com/sarah-ek/faer-rs
- Rust Performance Book: https://nnethercote.github.io/perf-book/
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Start by profiling the core search pipeline with cargo flamegraph, then compare the hot paths with the move+reborrow, SIMD dispatch, zero-copy view, and trait-based configuration patterns described here. Review the related issues #193, #201, #196, #382, and #200; completion would require a scoped prototype and measured evidence showing which pattern provides useful benefit.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- rust
- Área
- backend, performance
- Tipo de issue
- Refactorización
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 20/100