Skip to main content
🗄️
Your vector store+Stompy

An index finds passages. A record holds what you decided.

Use both. They answer different questions.

The Problem

A vector store answers: which passages in my documents are closest to this question? It is good at that, and at scale.

It does not know that you decided last month to ignore a whole section of those documents, or that one source overrides another. That knowledge is not in the index. It is in somebody's head, or in a chat.

How Stompy Helps

Stompy keeps the second kind of knowledge: the decisions, the rules and the reasons, each as a named, versioned entry that you chose to lock.

The two work side by side. Your pipeline, built on Pinecone, Weaviate, Chroma, Qdrant, Milvus, pgvector, FAISS, LlamaIndex or Haystack, retrieves passages. Before it answers, it also searches the Stompy project for what you decided about this material. Stompy's own search is hybrid, vector similarity plus full-text, over the entries you locked.

Stompy is not a replacement for the index and is not trying to be one. It holds the small, curated body of decisions that tells the pipeline how to use the documents.

Integration Walkthrough

1

Keep a decision about the material

A rule about how the documents are to be used, with the reason.

lock_context(
project="my-project",
topic="source_precedence",
content="""Rule: the 2026 policy document overrides the handbook where they differ.
Why: the handbook has not been revised since the policy changed."""
)
2

Read it alongside retrieval

Search the project record next to your own retrieval step, and give the model both.

import os
import httpx
BASE = "https://api.stompy.ai/api/v1/projects/my-project"
HEADERS = {"Authorization": f"Bearer {os.environ['STOMPY_PROJECT_KEY']}"}
def lock(topic: str, content: str) -> dict:
"""Keep a decision. Only called when the person asked for it."""
r = httpx.post(f"{BASE}/contexts", headers=HEADERS,
json={"topic": topic, "content": content})
r.raise_for_status()
return r.json()
def search(query: str) -> dict:
"""Find what the project already holds, by meaning."""
r = httpx.get(f"{BASE}/search", headers=HEADERS, params={"query": query})
r.raise_for_status()
return r.json()
passages = my_vector_store.query(question) # your index
decisions = search("which source takes precedence") # your record
prompt = f"Decisions:\n{decisions}\n\nPassages:\n{passages}\n\nQuestion: {question}"

What You Get

  • The index finds passages; the record says how to use them
  • Decisions are versioned and named, so they can be found and changed
  • Works beside any vector store or retrieval library
  • A small curated record stays readable, unlike a log of everything

Start your own record

Join the waitlist and we will tell you when your place is ready.