Vector Store
In-memory vector store, vector filters, search requests, and search tools.
Import from @anvia/core or @anvia/core/vector-store.
VectorFilter and vectorFilter
type VectorFilter =
| { type: "eq"; key: string; value: VectorMetadataValue }
| { type: "gt"; key: string; value: VectorMetadataValue }
| { type: "lt"; key: string; value: VectorMetadataValue }
| { type: "and"; filters: [VectorFilter, VectorFilter] }
| { type: "or"; filters: [VectorFilter, VectorFilter] };
const vectorFilter: {
eq(key: string, value: VectorMetadataValue): VectorFilter;
gt(key: string, value: VectorMetadataValue): VectorFilter;
lt(key: string, value: VectorMetadataValue): VectorFilter;
and(left: VectorFilter, right: VectorFilter): VectorFilter;
or(left: VectorFilter, right: VectorFilter): VectorFilter;
};Purpose: composable metadata filters for vector search.
Return behavior: factory methods return serializable filter objects.
Notable errors: unsupported metadata comparison types do not match results.
Search Types
type IndexStrategy = { type: "bruteForce" } | { type: "lsh"; numTables: number; numHyperplanes: number; seed?: number };
type VectorSearchRequest = {
query: string;
topK: number;
threshold?: number;
filter?: VectorFilter;
};
type VectorSearchResult<T = unknown, Metadata extends VectorMetadata = VectorMetadata> = {
score: number;
id: string;
document: T;
metadata?: Metadata;
};
type VectorSearchToolOptions = {
name: string;
description?: string;
topK?: number;
threshold?: number;
filter?: VectorFilter;
};Purpose: vector indexing, search, and tool option contracts.
Return behavior: used as inputs and outputs by vector indexes.
Notable errors: invalid topK values are normalized by concrete indexes.
VectorStoreIndex
interface VectorStoreIndex<T = unknown, Metadata extends VectorMetadata = VectorMetadata> {
search(request: VectorSearchRequest): Promise<Array<VectorSearchResult<T, Metadata>>>;
searchIds(request: VectorSearchRequest): Promise<Array<{ score: number; id: string }>>;
asTool(options: VectorSearchToolOptions): Tool<{ query: string; topK?: number }, unknown>;
}Purpose: search interface shared by in-memory and integration-backed vector stores.
Return behavior: searchIds(...) strips documents and metadata; asTool(...) wraps search as a tool.
Notable errors: model or store failures reject the returned promises.
InMemoryVectorStore
class InMemoryVectorStore<T, Metadata extends VectorMetadata = VectorMetadata> {
constructor(options?: { index?: IndexStrategy });
static fromDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(
documents: Array<EmbeddedDocument<T, Metadata>>,
options?: { index?: IndexStrategy },
): InMemoryVectorStore<T, Metadata>;
addDocuments(documents: Array<EmbeddedDocument<T, Metadata>>): this;
get(id: string): EmbeddedDocument<T, Metadata> | undefined;
values(): Array<EmbeddedDocument<T, Metadata>>;
len(): number;
isEmpty(): boolean;
index(model: EmbeddingModel): InMemoryVectorIndex<T, Metadata>;
}Purpose: local vector document store with brute force or LSH candidate selection.
Return behavior: index(...) binds the store to an embedding model for searching.
Notable errors: LSH index setup can fail if vectors have inconsistent dimensions.
InMemoryVectorIndex
class InMemoryVectorIndex<T, Metadata extends VectorMetadata = VectorMetadata>
implements VectorStoreIndex<T, Metadata> {
search(request: VectorSearchRequest): Promise<Array<VectorSearchResult<T, Metadata>>>;
searchIds(request: VectorSearchRequest): Promise<Array<{ score: number; id: string }>>;
asTool(options: VectorSearchToolOptions): Tool<{ query: string; topK?: number }, unknown>;
}Purpose: query-time embedding and scoring over an InMemoryVectorStore.
Return behavior: returns top results sorted by descending cosine score.
Notable errors: embedding model failures reject search calls.
createVectorSearchTool
function createVectorSearchTool<T, Metadata extends VectorMetadata>(
index: VectorStoreIndex<T, Metadata>,
options: VectorSearchToolOptions,
): Tool<{ query: string; topK?: number }, Array<VectorSearchResult<T, Metadata>>>;Purpose: expose any vector index as an agent tool.
Return behavior: returns a typed tool whose output is vector search results.
Notable errors: tool execution rejects when search rejects.
For workflow guidance, see Vector Stores.
