pub struct InMemoryGraph { /* private fields */ }Expand description
In-memory KnowledgeGraph backed by a petgraph StableGraph.
StableGraph preserves node/edge indices after removal — required for
future forget() support without re-indexing every entry. The single
Mutex<Inner> is acceptable for the spike scale; production traffic
goes to Neo4jKnowledgeGraph (M2).
Trait Implementations§
Source§impl Default for InMemoryGraph
impl Default for InMemoryGraph
Source§impl KnowledgeGraph for InMemoryGraph
impl KnowledgeGraph for InMemoryGraph
Source§fn index<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
scope: Scope,
fact_id: &'life1 FactId,
entities: &'life2 [EntityRef],
text: &'life3 str,
_valid_from: Option<DateTime<Utc>>,
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn index<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
scope: Scope,
fact_id: &'life1 FactId,
entities: &'life2 [EntityRef],
text: &'life3 str,
_valid_from: Option<DateTime<Utc>>,
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Index a stored fact’s entities into the graph. Read more
Source§fn neighbors<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
entities: &'life2 [EntityRef],
) -> Pin<Box<dyn Future<Output = Result<Vec<FactId>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn neighbors<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
entities: &'life2 [EntityRef],
) -> Pin<Box<dyn Future<Output = Result<Vec<FactId>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Return
FactIds of facts reachable from entities via:
(a) direct MENTIONED_IN edges, and
(b) 1-hop CO_OCCURS siblings’ MENTIONED_IN edges. Read moreSource§fn recall_paths<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
entities: &'life2 [EntityRef],
) -> Pin<Box<dyn Future<Output = Result<Vec<RetrievalPath>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn recall_paths<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
entities: &'life2 [EntityRef],
) -> Pin<Box<dyn Future<Output = Result<Vec<RetrievalPath>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Return one
crate::RetrievalPath per (entity, fact_id)
edge reachable from entities via the same traversal as
Self::neighbors. Each hop carries chain_entry: None;
the ProvenanceKnowledgeGraph wrapper attaches provenance
after the inner graph returns. Read moreSource§fn subgraph<'life0, 'life1, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<GraphView, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn subgraph<'life0, 'life1, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<GraphView, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn forget<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
fact_id: &'life2 FactId,
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn forget<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
fact_id: &'life2 FactId,
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Remove a fact’s graph-side index entries. Paired with a
Custom("MemoryForget") provenance event by
ProvenanceKnowledgeGraph so the audit chain records the
deletion even though the chain itself stays append-only. Read moreSource§fn index_many<'life0, 'life1, 'async_trait>(
&'life0 self,
scope: Scope,
batch: &'life1 [IndexEntry],
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn index_many<'life0, 'life1, 'async_trait>(
&'life0 self,
scope: Scope,
batch: &'life1 [IndexEntry],
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Auto Trait Implementations§
impl !Freeze for InMemoryGraph
impl RefUnwindSafe for InMemoryGraph
impl Send for InMemoryGraph
impl Sync for InMemoryGraph
impl Unpin for InMemoryGraph
impl UnsafeUnpin for InMemoryGraph
impl UnwindSafe for InMemoryGraph
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more