Class EdgeVectorStore
- Namespace
- Qavren.Edge.VectorData
- Assembly
- Qavren.Edge.VectorData.dll
A Microsoft.Extensions.VectorData store over one sub-project 1
IEdgeDatabase. It never constructs a connection of its own, which is what lets it
ride on an encrypted, pooled, pragma-configured database that a connection-string-based
connector structurally cannot reach.
public sealed class EdgeVectorStore : VectorStore, IDisposable
- Inheritance
-
EdgeVectorStore
- Implements
- Inherited Members
Constructors
- EdgeVectorStore(IEdgeDatabase, EdgeVectorStoreOptions?, IEmbeddingGenerator?, IEmbeddingGenerator?, ILoggerFactory?)
Creates the store.
Methods
- CollectionExistsAsync(string, CancellationToken)
Checks if the collection exists in the vector store.
- EnsureCollectionDeletedAsync(string, CancellationToken)
Drops a collection's three tables and its triggers without needing a record type: the sidecar names come from the store's name formats, which is the same source EdgeVectorSchema uses.
- GetCollection<TKey, TRecord>(string, VectorStoreCollectionDefinition?)
Gets a collection from the vector store.
- GetDynamicCollection(string, VectorStoreCollectionDefinition)
Gets a collection from the vector store, using dynamic mapping; the record type is represented as a Dictionary<TKey, TValue>.
- GetService(Type, object?)
Asks the VectorStore for an object of the specified type
serviceType.
- ListCollectionNamesAsync(CancellationToken)
Data tables only, and the exclusion is structural, not by name. A virtual table is recognised from its own DDL in
sqlite_master.sql(USING vec0/USING fts5), and a shadow table by carrying one of the module's known child names under a parent that is itself a virtual table of that module - FTS5's five (_data,_idx,_content,_docsize,_config) and vec0's (_info,_chunks,_rowids,_auxiliaryand the numbered_vector_chunksNN/_metadatachunksNN/metadatatextNN).sqlite%is excluded as well. A table callednotes_vec_archivenext to a vec0 table callednotes_vecis a data table and is listed.Name-prefix filtering would be wrong in both directions, because VectorTableNameFormat and VectorTableName let a sidecar be called anything, and a consumer's own data table may legitimately be called
foo_vec. Upstream's connector leaks its vec0 tables here; this one does not.