feat(verbo): verbo-daemon — embeddings compartidos entre procesos
Daemon que carga un Provider una vez y lo sirve sobre socket Unix; DaemonClient lo consume desde otro proceso implementando el trait Provider (indistinguible de un backend local). Multi-instancia: un daemon por modelo, cada uno en su socket. Frames postcard con prefijo de largo. 8 tests (wire + integración real sobre socket). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
//! `verbo-daemon` — embeddings compartidos entre procesos.
|
||||
//!
|
||||
//! El problema: cada proceso que quiera embeddings cargaría su propia
|
||||
//! copia del modelo (cientos de MB de RAM, descargas duplicadas). La
|
||||
//! solución: un [`Daemon`] carga el modelo una vez y lo sirve sobre un
|
||||
//! socket Unix; cada proceso usa un [`DaemonClient`] que, por
|
||||
//! implementar `verbo_core::Provider`, es indistinguible de un backend
|
||||
//! local.
|
||||
//!
|
||||
//! ```text
|
||||
//! ┌── proceso A ──┐ ┌── proceso B ──┐ ┌── proceso C ──┐
|
||||
//! │ DaemonClient │ │ DaemonClient │ │ DaemonClient │
|
||||
//! └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
|
||||
//! └───────── socket Unix ─────────────────┘
|
||||
//! │
|
||||
//! ┌─────────┴─────────┐
|
||||
//! │ Daemon (Arc<P>) │ ← un modelo en RAM
|
||||
//! └───────────────────┘
|
||||
//! ```
|
||||
//!
|
||||
//! **Multi-instancia**: para servir varios modelos a la vez se levanta
|
||||
//! un daemon por modelo, cada uno en su socket — el daemon es agnóstico
|
||||
//! del backend (sirve cualquier `Provider`: `verbo-mock`, un backend
|
||||
//! Cohere, uno BGE local).
|
||||
|
||||
#![forbid(unsafe_code)]
|
||||
|
||||
mod client;
|
||||
mod server;
|
||||
mod wire;
|
||||
|
||||
pub use client::DaemonClient;
|
||||
pub use server::Daemon;
|
||||
pub use wire::{Request, Response};
|
||||
Reference in New Issue
Block a user