Table of Contents

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, _auxiliary and the numbered _vector_chunksNN / _metadatachunksNN / metadatatextNN). sqlite% is excluded as well. A table called notes_vec_archive next to a vec0 table called notes_vec is 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.