pub struct VectorStoreManager { /* private fields */ }Expand description
VectorStore のシンプルなインメモリ実装。
Implementations§
Source§impl VectorStoreManager
impl VectorStoreManager
Sourcepub fn new(config: VectorStoreConfig) -> Self
pub fn new(config: VectorStoreConfig) -> Self
新しい VectorStoreManager を生成。
Sourcepub fn segments(&self) -> &[VectorSegment]
pub fn segments(&self) -> &[VectorSegment]
現在保持しているセグメント一覧(読み取り専用)を返す。
§注意(Disk モード復元時の前提)
VectorStoreManagerは「セグメントの順序」をrow_idの割当てに利用します(検索時にrow_offsetを積み上げる)。from_segmentsで復元する場合は、永続化時と同じ順序(通常は古い→新しい)でsegmentsを渡してください。
Sourcepub fn config(&self) -> &VectorStoreConfig
pub fn config(&self) -> &VectorStoreConfig
設定を返す(Disk モードの復元用)。
§注意(Disk モード復元時の前提)
segments内の各セグメントは、このconfigと整合している必要があります(例:dimension/metric)。
Sourcepub fn next_segment_id(&self) -> u64
pub fn next_segment_id(&self) -> u64
次に割り当てられるセグメントIDを返す(永続化用)。
§注意(Disk モード復元時の前提)
from_segmentsに渡すnext_segment_idは、通常max(segment_id) + 1以上である必要があります。
Sourcepub fn from_segments(
config: VectorStoreConfig,
segments: Vec<VectorSegment>,
next_segment_id: u64,
) -> Self
pub fn from_segments( config: VectorStoreConfig, segments: Vec<VectorSegment>, next_segment_id: u64, ) -> Self
永続化済みセグメントから VectorStoreManager を復元する(Disk モード向け)。
§注意(呼び出し側が満たすべき前提)
segmentsは永続化時と同じ順序(通常は古い→新しい)で渡すこと。segmentsは重複しないsegment_idを持つこと。configとsegmentsの整合(dimension/metric など)を保つこと。next_segment_idはmax(segment_id) + 1以上であること(将来の追加/コンパクションで重複IDを避けるため)。
Sourcepub async fn append_batch(
&mut self,
keys: &[i64],
vectors: &[Vec<f32>],
) -> Result<AppendResult>
pub async fn append_batch( &mut self, keys: &[i64], vectors: &[Vec<f32>], ) -> Result<AppendResult>
ベクトルバッチを追加する。
§Errors
DimensionMismatch: 入力ベクトルの次元が設定と異なる場合InvalidVector: NaN/Inf を含む場合
§Examples
use alopex_core::vector::{VectorStoreManager, VectorStoreConfig};
let mut mgr = VectorStoreManager::new(VectorStoreConfig { dimension: 2, ..Default::default() });
let keys = vec![1, 2];
let vecs = vec![vec![1.0, 0.0], vec![0.0, 1.0]];
mgr.append_batch(&keys, &vecs).await?;Sourcepub fn segments_needing_compaction(&self) -> Vec<u64>
pub fn segments_needing_compaction(&self) -> Vec<u64>
コンパクション対象セグメントを取得する。
deletion_ratio が compaction_threshold 以上かつ > 0 のセグメントIDを返す。
threshold >= 1.0 の場合は常に空。
§Examples
ⓘ
assert!(mgr.segments_needing_compaction().is_empty()); // no deletions yet
// Mark one row deleted -> deletion_ratio = 0.5, meets threshold
mgr.segments[0].deleted.set(0, true);
mgr.segments[0].recompute_deletion_stats();
assert_eq!(mgr.segments_needing_compaction(), vec![mgr.segments[0].segment_id]);Sourcepub async fn delete_batch(&mut self, keys: &[i64]) -> Result<DeleteResult>
pub async fn delete_batch(&mut self, keys: &[i64]) -> Result<DeleteResult>
Sourcepub async fn compact_segment(
&mut self,
segment_id: u64,
) -> Result<CompactionResult>
pub async fn compact_segment( &mut self, segment_id: u64, ) -> Result<CompactionResult>
セグメントをコンパクションして新セグメントに置換する。
削除済み行を物理的に取り除き、新セグメントを構築する(全削除時はセグメントを削除)。
§Errors
Error::NotFound指定IDが存在しない場合InvalidFormatセグメントのデコード/再構成に失敗した場合
§Examples
ⓘ
let seg_id = mgr.segments[0].segment_id;
let res = futures::executor::block_on(mgr.compact_segment(seg_id)).unwrap();
assert!(res.new_segment_id.is_some());Sourcepub fn search(
&self,
params: VectorSearchParams,
) -> Result<Vec<VectorSearchResult>>
pub fn search( &self, params: VectorSearchParams, ) -> Result<Vec<VectorSearchResult>>
Sourcepub fn search_with_stats(
&self,
params: VectorSearchParams,
) -> Result<(Vec<VectorSearchResult>, SearchStats)>
pub fn search_with_stats( &self, params: VectorSearchParams, ) -> Result<(Vec<VectorSearchResult>, SearchStats)>
統計付き検索。
search と同じ結果に加え、走査/プルーニング件数を返す。
Trait Implementations§
Auto Trait Implementations§
impl Freeze for VectorStoreManager
impl RefUnwindSafe for VectorStoreManager
impl Send for VectorStoreManager
impl Sync for VectorStoreManager
impl Unpin for VectorStoreManager
impl UnwindSafe for VectorStoreManager
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