Search
Search your stored conversations using semantic similarity. Find relevant sessions by meaning, not just exact keywords.
Prerequisites
Search Guide
Step 1: Choose your vector store
tapes supports 4 vector backends. Pick one:
Built-in, no extra setup. Uses the same SQLite database as your conversation storage.
External vector store. Start it with Docker:
docker run -p 8000:8000 chromadb/chroma High-performance vector store with gRPC API. Start it with Docker:
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant Dashboard available at http://localhost:6333/dashboard
PostgreSQL extension for vector similarity search. Requires PostgreSQL with the pgvector extension installed:
docker run -p 5432:5432 -e POSTGRES_PASSWORD=postgres pgvector/pgvector:pg17 Uses HNSW indexing for efficient cosine similarity queries.
Step 2: Install Ollama embedding model
Download the embedding model that converts text into searchable vectors:
ollama pull nomic-embed-text Step 3: Run proxy with vector storage enabled
Start the tapes proxy with your chosen vector backend:
tapes serve \
--sqlite "./tapes.sqlite" \
--vector-store-provider sqlite \
--embedding-provider ollama \
--embedding-target "http://localhost:11434" \
--embedding-model nomic-embed-text tapes serve \
--sqlite "./tapes.sqlite" \
--vector-store-provider chroma \
--vector-store-target "http://localhost:8000" \
--embedding-provider ollama \
--embedding-target "http://localhost:11434" \
--embedding-model nomic-embed-text tapes serve \
--sqlite "./tapes.sqlite" \
--vector-store-provider qdrant \
--vector-store-target "http://localhost:6334" \
--embedding-provider ollama \
--embedding-target "http://localhost:11434" \
--embedding-model nomic-embed-text tapes serve \
--sqlite "./tapes.sqlite" \
--vector-store-provider pgvector \
--vector-store-target "postgres://postgres:postgres@localhost:5432/postgres" \
--embedding-provider ollama \
--embedding-target "http://localhost:11434" \
--embedding-model nomic-embed-text The tapes serve command automatically targets Ollama on localhost. The flags above enable vector storage for semantic search.
Step 4: Use your LLM through the proxy
Embeddings are generated automatically when vector storage is enabled:
curl -X POST http://localhost:8080/api/chat \
-H "Content-Type: application/json" \
-d '{"model": "qwen3", "messages": [{"role": "user", "content": "How do I configure logging?"}]}' Step 5: Search your sessions
Query your conversation history using natural language. Use the same vector store provider you chose above:
tapes search "logging configuration" \
--vector-store-provider sqlite \
--embedding-provider ollama \
--embedding-target http://localhost:11434 \
--embedding-model nomic-embed-text \
--sqlite ./tapes.sqlite tapes search "logging configuration" \
--vector-store-provider chroma \
--vector-store-target http://localhost:8000 \
--embedding-provider ollama \
--embedding-target http://localhost:11434 \
--embedding-model nomic-embed-text \
--sqlite ./tapes.sqlite tapes search "logging configuration" \
--vector-store-provider qdrant \
--vector-store-target http://localhost:6334 \
--embedding-provider ollama \
--embedding-target http://localhost:11434 \
--embedding-model nomic-embed-text \
--sqlite ./tapes.sqlite tapes search "logging configuration" \
--vector-store-provider pgvector \
--vector-store-target "postgres://postgres:postgres@localhost:5432/postgres" \
--embedding-provider ollama \
--embedding-target http://localhost:11434 \
--embedding-model nomic-embed-text \
--sqlite ./tapes.sqlite Understanding Results
Search results include:
Score Similarity score (higher = more relevant)Hash Unique identifier for the matched conversation turnSession ancestry Full conversation thread from root to matched messagePreview Snippet of the matched contentNext Steps
Once you've found a relevant conversation, use the checkout command to resume from that point. See the History guide for details on managing session history and resuming conversations.