Skip to content

v0.3.0

Choose a tag to compare

@gregpriday gregpriday released this 24 Feb 01:49
· 243 commits to develop since this release

What's New

Page-Level Reranking

The reranker now receives assembled page documents — all matching chunks concatenated in document order — instead of individual chunk snippets. This gives the reranker a holistic view of each page's relevance, significantly improving result quality. Full chunk markdown (up to 4000 chars) is stored at index time to support this.

Jina AI Embeddings & Reranking

Replaced OpenAI with Jina AI as the default (and only) embedding provider. Uses jina-embeddings-v3 with task-specific LoRA adapters (retrieval.passage for indexing, retrieval.query for search). The reranker (jina-reranker-v2-base-multilingual) shares the same API key — one key powers everything.

Link-Discovery Crawling for Build Mode

Enable source.build.discover: true to automatically find pages by crawling internal links from seed URLs. Useful when dynamic routes have many parameter values that are impractical to enumerate. Respects maxPages and maxDepth limits.

Minimum Score Filtering

New ranking.minScore option filters out low-relevance results before they reach the client. Set to a value like 0.3 to remove noise. Default is 0 (disabled).

Direct Credential Passing

New config options embeddings.apiKey, vector.turso.url, and vector.turso.authToken allow passing credentials directly instead of through environment variables.

Dimension Mismatch Auto-Recovery

Automatically detects and recreates the chunks table when switching to an embedding model with a different vector dimension.

Breaking Changes

  • OpenAI embedding provider has been removed. Use Jina AI (jina-embeddings-v3) instead. Existing indexes must be re-indexed with --force.

Full Changelog

v0.2.1...v0.3.0