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.
