Interface IVectorStore
Abstracts vector storage and similarity search operations. Implementations handle only storage and retrieval โ they have no knowledge of RAG pipelines.
For logical isolation (e.g. tenant, category), use metadata conditions via Where(string, string).
public interface IVectorStore
Methods
CountAsync(VectorFilter?, CancellationToken)
Returns the number of records matching the optional filter.
When filter is null, returns the total record count.
Implementations may ignore MinScore as it is not meaningful for counting.
Task<long> CountAsync(VectorFilter? filter = null, CancellationToken cancellationToken = default)
Parameters
filterVectorFiltercancellationTokenCancellationToken
Returns
DeleteAsync(string, VectorFilter?, CancellationToken)
Deletes a single record by its Id.
Implementations may use filter to narrow by metadata conditions.
Task DeleteAsync(string id, VectorFilter? filter = null, CancellationToken cancellationToken = default)
Parameters
idstringfilterVectorFiltercancellationTokenCancellationToken
Returns
DeleteByFilterAsync(VectorFilter, CancellationToken)
Deletes all records matching the specified filter.
Task DeleteByFilterAsync(VectorFilter filter, CancellationToken cancellationToken = default)
Parameters
filterVectorFiltercancellationTokenCancellationToken
Returns
GetAsync(string, VectorFilter?, CancellationToken)
Retrieves a single record by its Id.
Implementations may use filter to narrow results by metadata conditions.
Task<VectorRecord?> GetAsync(string id, VectorFilter? filter = null, CancellationToken cancellationToken = default)
Parameters
idstringfilterVectorFiltercancellationTokenCancellationToken
Returns
GetBatchAsync(IEnumerable<string>, VectorFilter?, CancellationToken)
Retrieves multiple records by their Ids in a single batch operation.
Records that do not exist or do not match filter are omitted from the result.
The order of results is not guaranteed to match the order of ids.
Task<IReadOnlyList<VectorRecord>> GetBatchAsync(IEnumerable<string> ids, VectorFilter? filter = null, CancellationToken cancellationToken = default)
Parameters
idsIEnumerable<string>filterVectorFiltercancellationTokenCancellationToken
Returns
HybridSearchAsync(float[], string, int, VectorFilter?, CancellationToken)
Performs a hybrid search combining dense vector similarity and keyword matching. Implementations with native hybrid support should override this method.
Task<IReadOnlyList<VectorSearchResult>> HybridSearchAsync(float[] denseVector, string query, int topK = 5, VectorFilter? filter = null, CancellationToken cancellationToken = default)
Parameters
denseVectorfloat[]The dense embedding vector for semantic similarity.
querystringThe original text query for keyword-based matching.
topKintMaximum number of results to return.
filterVectorFilterOptional filter criteria (metadata conditions, min score).
cancellationTokenCancellationTokenCancellation token.
Returns
- Task<IReadOnlyList<VectorSearchResult>>
Results ordered by descending hybrid relevance score.
ReplaceByFilterAsync(VectorFilter, IReadOnlyList<VectorRecord>, CancellationToken)
Atomically replaces all records matching the filter with new records. Deletes existing records by filter, then inserts the new records โ both within a single transaction where supported (e.g. PostgreSQL). On failure, the transaction rolls back and existing data remains intact.
Task ReplaceByFilterAsync(VectorFilter filter, IReadOnlyList<VectorRecord> records, CancellationToken cancellationToken = default)
Parameters
filterVectorFilterFilter identifying the records to delete before inserting.
recordsIReadOnlyList<VectorRecord>The new records to insert after deletion.
cancellationTokenCancellationTokenCancellation token.
Returns
SearchAsync(float[], int, VectorFilter?, CancellationToken)
Performs a similarity search. Implementations should respect Conditions and MinScore when present.
Task<IReadOnlyList<VectorSearchResult>> SearchAsync(float[] queryVector, int topK = 5, VectorFilter? filter = null, CancellationToken cancellationToken = default)
Parameters
queryVectorfloat[]The query embedding vector.
topKintMaximum number of results to return.
filterVectorFilterOptional filter criteria (metadata conditions, min score).
cancellationTokenCancellationTokenCancellation token.
Returns
- Task<IReadOnlyList<VectorSearchResult>>
Results ordered by descending similarity score.
UpsertAsync(VectorRecord, CancellationToken)
Inserts or updates a single vector record. If a record with the same Id already exists, it is overwritten.
Task UpsertAsync(VectorRecord record, CancellationToken cancellationToken = default)
Parameters
recordVectorRecordcancellationTokenCancellationToken
Returns
UpsertBatchAsync(IEnumerable<VectorRecord>, CancellationToken)
Inserts or updates multiple vector records in a batch.
Task UpsertBatchAsync(IEnumerable<VectorRecord> records, CancellationToken cancellationToken = default)
Parameters
recordsIEnumerable<VectorRecord>cancellationTokenCancellationToken
Returns
VerifyConnectionAsync(CancellationToken)
Verifies that the store can reach its backend (e.g. database, API). Throws on failure. In-memory stores succeed immediately.
Task VerifyConnectionAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken