Skip to content

nimgent/vector_store

This page is generated from the module’s exported API and ## documentation comments.

Small in-memory vector store for local retrieval and examples.

Stored vector and metadata identified by a caller-provided ID.

VectorRecord = object
id*: string
embedding*: seq[float]
metadata*: JsonNode

View source

Vector search result with its similarity score.

VectorMatch = object
id*: string
score*: float
metadata*: JsonNode

View source

Small in-memory vector store for local retrieval and tests.

InMemoryVectorStore = ref object

View source

Cosine similarity in [-1, 1]. Both vectors must be non-empty and equal-sized.

proc cosineSimilarity(a, b: openArray[float]): float {.raises: [ValueError],
tags: [], forbids: [].}

Returns: float.

Name Type Default
a openArray[float]
b openArray[float]

View source

Create an empty in-memory vector store.

proc newInMemoryVectorStore(): InMemoryVectorStore {.raises: [], tags: [],
forbids: [].}

Returns: InMemoryVectorStore.

View source

Insert or replace a vector by ID.

proc upsert(store: InMemoryVectorStore; id: string; embedding: openArray[float];
metadata: JsonNode = nil) {.raises: [ValueError], tags: [],
forbids: [].}
Name Type Default
store InMemoryVectorStore
id string
embedding openArray[float]
metadata JsonNode nil

View source

Delete a vector by ID and report whether it existed.

proc delete(store: InMemoryVectorStore; id: string): bool {.
raises: [ValueError], tags: [], forbids: [].}

Returns: bool.

Name Type Default
store InMemoryVectorStore
id string

View source

Return up to limit vectors ranked by cosine similarity.

proc search(store: InMemoryVectorStore; embedding: openArray[float]; limit = 10): seq[
VectorMatch] {.raises: [ValueError], tags: [], forbids: [].}

Returns: seq[VectorMatch].

Name Type Default
store InMemoryVectorStore
embedding openArray[float]
limit inferred 10

View source

Save the store as a readable, versioned JSON document.

proc save(store: InMemoryVectorStore; path: string) {.
raises: [IOError, ValueError, KeyError], tags: [WriteIOEffect], forbids: [].}
Name Type Default
store InMemoryVectorStore
path string

View source

Load a store saved by save.

proc loadInMemoryVectorStore(path: string): InMemoryVectorStore {.
raises: [IOError, ValueError, KeyError, ValueError],
tags: [ReadIOEffect, WriteIOEffect], forbids: [].}

Returns: InMemoryVectorStore.

Name Type Default
path string

View source