pub struct FileVectorStore { /* private fields */ }Expand description
文件持久化向量存储
将向量数据持久化到本地文件,支持应用重启后恢复。 使用 JSON 格式存储,适合中小规模数据。
Implementations§
Source§impl FileVectorStore
impl FileVectorStore
Sourcepub fn new(config: VectorStoreConfig) -> Layer3Result<Self>
pub fn new(config: VectorStoreConfig) -> Layer3Result<Self>
创建新的文件向量存储
Sourcepub fn with_auto_persist(self, auto_persist: bool) -> Self
pub fn with_auto_persist(self, auto_persist: bool) -> Self
创建带自动持久化开关的存储
Sourcepub fn persist_sync(&self) -> Layer3Result<()>
pub fn persist_sync(&self) -> Layer3Result<()>
持久化数据到文件
Sourcepub fn load_sync(&self) -> Layer3Result<()>
pub fn load_sync(&self) -> Layer3Result<()>
从文件加载数据
Trait Implementations§
Source§impl VectorStore for FileVectorStore
impl VectorStore for FileVectorStore
Source§fn add<'life0, 'async_trait>(
&'life0 self,
id: String,
vector: Vec<f32>,
metadata: HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add<'life0, 'async_trait>(
&'life0 self,
id: String,
vector: Vec<f32>,
metadata: HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
添加向量
Source§fn add_batch<'life0, 'async_trait>(
&'life0 self,
items: Vec<VectorItem>,
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<bool>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add_batch<'life0, 'async_trait>(
&'life0 self,
items: Vec<VectorItem>,
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<bool>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
批量添加向量(优化版本) Read more
Source§fn query<'life0, 'async_trait>(
&'life0 self,
vector: Vec<f32>,
top_k: usize,
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<RetrievalResult>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query<'life0, 'async_trait>(
&'life0 self,
vector: Vec<f32>,
top_k: usize,
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<RetrievalResult>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
查询相似向量
Source§fn query_with_filter<'life0, 'async_trait>(
&'life0 self,
vector: Vec<f32>,
top_k: usize,
filter: Option<MetadataFilter>,
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<RetrievalResult>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query_with_filter<'life0, 'async_trait>(
&'life0 self,
vector: Vec<f32>,
top_k: usize,
filter: Option<MetadataFilter>,
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<RetrievalResult>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
带过滤条件的查询
Source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
删除向量
Source§fn delete_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Layer3Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Layer3Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
批量删除(优化版本)
Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Layer3Result<Option<VectorItem>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Layer3Result<Option<VectorItem>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
获取向量
Source§fn count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn count<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
统计数量
Source§fn clear<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn clear<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
清空存储
Source§fn persist<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn persist<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
持久化到磁盘(可选)
Source§fn load<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
从磁盘加载(可选)
Source§fn add_validated<'life0, 'async_trait>(
&'life0 self,
id: String,
vector: Vec<f32>,
metadata: HashMap<String, Value>,
expected_dimension: usize,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add_validated<'life0, 'async_trait>(
&'life0 self,
id: String,
vector: Vec<f32>,
metadata: HashMap<String, Value>,
expected_dimension: usize,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
添加向量(带验证) Read more
Source§fn query_with_threshold<'life0, 'async_trait>(
&'life0 self,
vector: Vec<f32>,
top_k: usize,
min_score: f32,
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<RetrievalResult>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query_with_threshold<'life0, 'async_trait>(
&'life0 self,
vector: Vec<f32>,
top_k: usize,
min_score: f32,
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<RetrievalResult>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
带分数阈值的查询 Read more
Source§fn delete_by_filter<'life0, 'async_trait>(
&'life0 self,
filter: MetadataFilter,
) -> Pin<Box<dyn Future<Output = Layer3Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_by_filter<'life0, 'async_trait>(
&'life0 self,
filter: MetadataFilter,
) -> Pin<Box<dyn Future<Output = Layer3Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
删除所有匹配元数据条件的向量
Source§fn get_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<Option<VectorItem>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Layer3Result<Vec<Option<VectorItem>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
批量获取向量
Source§fn upsert<'life0, 'async_trait>(
&'life0 self,
id: String,
vector: Vec<f32>,
metadata: HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn upsert<'life0, 'async_trait>(
&'life0 self,
id: String,
vector: Vec<f32>,
metadata: HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
更新向量(存在则更新,不存在则创建)
Source§fn exists<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn exists<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Layer3Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
检查向量是否存在
Source§fn stats<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<VectorStoreStats>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stats<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<VectorStoreStats>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
获取存储统计信息
Source§fn persist_async<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn persist_async<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Layer3Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
异步持久化(后台线程)
Source§fn persist_sync(&self) -> Layer3Result<()>
fn persist_sync(&self) -> Layer3Result<()>
强制同步持久化
Source§fn validate_dimension(
&self,
vector: &[f32],
expected: usize,
) -> Layer3Result<()>
fn validate_dimension( &self, vector: &[f32], expected: usize, ) -> Layer3Result<()>
验证向量维度
Auto Trait Implementations§
impl !RefUnwindSafe for FileVectorStore
impl !UnwindSafe for FileVectorStore
impl Freeze for FileVectorStore
impl Send for FileVectorStore
impl Sync for FileVectorStore
impl Unpin for FileVectorStore
impl UnsafeUnpin for FileVectorStore
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more