Self-hosting
RAG indexing
RAG adds relevant existing code and docs to the AI reviewer prompt. It is additive and fail-safe.
Prerequisites
- Repo activation
- GITTENSORY_REVIEW_RAG=true and the repo in GITTENSORY_REVIEW_REPOS, or a private per-repo feature toggle.
- Vector backend
- SQLite vectors by default, Qdrant with the qdrant profile, or Postgres/pgvector where configured.
- Embedding provider
- An OpenAI-compatible embeddings endpoint with a model whose dimension matches the vector collection.
Qdrant and Ollama example
.env
GITTENSORY_REVIEW_RAG=true
GITTENSORY_REVIEW_REPOS=owner/repo
QDRANT_URL=http://qdrant:6333
QDRANT_DIM=768
AI_EMBED_BASE_URL=http://ollama:11434/v1
AI_EMBED_MODEL=nomic-embed-text:latestdocker compose --profile qdrant --profile ollama up -d
docker compose exec ollama ollama pull nomic-embed-text:latestbashUse QDRANT_DIM=1024 for 1024-dimensional models such as bge-m3 or mxbai-embed-large. If a Qdrant collection already exists, recreate it before changing dimensions.
Indexing
RAG needs an index before it can retrieve useful context. A cold or missing index degrades to no context; the review still runs.
curl -X POST http://localhost:8787/v1/internal/jobs/rag-index \
-H "authorization: Bearer $INTERNAL_JOB_TOKEN" \
-H "content-type: application/json" \
-d '{"repoFullName":"owner/repo"}'bashOperational checks
- Boot logs should include
selfhost_embed_providerwhen an embedding provider is configured. - Qdrant mode should log
selfhost_vectorizewith backendqdrant. - Empty RAG context usually means the repo is not indexed, the embed model is unavailable, or dimensions do not match.
RAG is context, not authority. The AI reviewer still has to verify every claim against the diff, grounding, and review rules.
Pair RAG with AI providers and optionally REES.