Vicky
Vicky is a code search and retrieval service that uses chisel for semantic code chunking.
The Pipeline
Repository → Enumerate Files → Chunk (chisel) → Embed (vex) → Store (pgvector) → Search
- Enumerate — Vicky clones/fetches the repository
- Chunk — Chisel parses files into semantic units
- Embed — Vex generates embeddings for each chunk
- Store — Chunks and embeddings go into PostgreSQL with pgvector
- Search — Queries are embedded and matched against stored chunks
What Chisel Provides
| Vicky needs | Chisel provides |
|---|---|
| Semantic boundaries | Chunks split at function/class boundaries |
| Symbol names | chunk.Symbol for display and filtering |
| Kind classification | chunk.Kind for faceted search |
| Source locations | chunk.StartLine, chunk.EndLine for navigation |
| Parent context | chunk.Context for hierarchical browsing |
| Embeddable content | chunk.Content with docs and implementation |
Configuration
Vicky selects chisel providers based on file extension:
| Extension | Provider |
|---|---|
.go | golang.New() |
.ts, .tsx | typescript.New() |
.js, .jsx | typescript.NewJavaScript() |
.py | python.New() |
.rs | rust.New() |
.md | markdown.New() |
Files with unrecognized extensions are skipped.
Metadata Storage
Vicky stores chunk metadata alongside embeddings:
CREATE TABLE chunks (
id UUID PRIMARY KEY,
repo_id UUID REFERENCES repos(id),
file_path TEXT NOT NULL,
symbol TEXT,
kind TEXT,
start_line INTEGER,
end_line INTEGER,
context TEXT[],
content TEXT NOT NULL,
embedding vector(1024)
);
This enables queries like:
- "Find functions named
Authenticate" - "Show all classes in
pkg/auth" - "Methods in the
UserServiceclass"