Anvia
Retrieval

Vector Stores

Store and search embedded documents.

A vector store keeps embedded documents and exposes a searchable index. Anvia ships an in-memory store for local workflows, tests, and small prototypes.

1. Build a Store

import { InMemoryVectorStore } from "@anvia/core";

const store = InMemoryVectorStore.fromDocuments(embedded);
const index = store.index(embeddings);

Use the same embedding model that created the document embeddings.

2. Search Documents

const results = await index.search({
  query: "How long does a password reset link last?",
  topK: 3,
});

console.log(results[0]?.id);
console.log(results[0]?.score);
console.log(results[0]?.document);

search(...) returns scored documents sorted by relevance.

3. Search Only IDs

const matches = await index.searchIds({
  query: "priority support",
  topK: 2,
});

Use searchIds(...) when you want to load full records from your own database.

4. Add or Replace Documents

store.addDocuments(await embedDocuments(embeddings, updatedDocs, {
  id: (doc) => doc.id,
  content: (doc) => doc.body,
}));

When a document id already exists, the later document replaces it.

5. Expose Search as a Tool

const searchDocs = index.asTool({
  name: "search_docs",
  description: "Search support documentation.",
  topK: 3,
});

Use a search tool when the model should decide when retrieval is needed. Use RAG Context when every prompt should receive retrieved context automatically.