Repository navigation
v0.3.0
v0.3.0
This release adds PostgreSQL/pgvector as a first-class storage backend, a composable retrieval pipeline with hybrid search and re-ranking, new ingest extractors (CSV, JSON, DOCX), suspend/resume for agents and workflows, and a large set of agent memory improvements.
Highlights
PostgreSQL + pgvector Storage
New store/postgres package — full Store, KeywordSearcher, and MemoryStore backed by PostgreSQL with pgvector. Share one *pgxpool.Pool across your entire app.
pool, _ := pgxpool.New(ctx, connString)
store := postgres.New(pool)
memStore := postgres.NewMemoryStore(pool)- HNSW indexes for cosine distance vector search
tsvector/tsquerywith GIN index for full-text keyword search- Semantic deduplication in SQL (no brute-force scanning)
- Pure Go — only dependency:
github.com/jackc/pgx/v5
Retrieval Pipeline
Composable hybrid search with re-ranking for RAG:
RetrieverandRerankerinterfacesHybridRetriever— vector + keyword search with Reciprocal Rank FusionScoreReranker(zero-dependency) andLLMReranker(LLM-powered)KeywordSearcher— optional Store capability via type assertion
Suspend/Resume
Pause agent or workflow execution to await external input, then continue from where it left off:
Suspend(payload)from any step function or processorErrSuspendedwithResume(ctx, data)to continue- Works in Workflows, LLMAgent, and Network
Ingest Extractors & Chunk Metadata
csv.Extractor,json.Extractor,docx.Extractor(all pure Go)ChunkMetatype — page numbers, section headings, images per chunkMetadataExtractorinterface — opt-in structured metadata from extractors
All Changes
Added
- PostgreSQL + pgvector storage (
store/postgres) - Retrieval pipeline —
Retriever,Reranker,KeywordSearcher,HybridRetriever,ScoreReranker,LLMReranker - Suspend/Resume —
Suspend(),ErrSuspended,Resume(),ResumeData(),StepSuspended - Ingest extractors — CSV, JSON, DOCX with
MetadataExtractorinterface ChunkMetaandImagetypes for per-chunk metadataMaxHistory(n)— control message history depth per threadScoredMessage,ScoredChunk,ScoredSkill,ScoredFactscored result typesWithRetry(provider)— automatic retry with exponential backoff on 429/503CrossThreadSearchandMinScorefor semantic recall tuning- Auto fact extraction, trivial message filter, semantic supersedes, probabilistic decay
Attachmenttype for multimodal content (images, PDFs)Schedulerprimitive for polling due actions- Parallel tool execution in
LLMAgentandNetwork StreamingAgentinterfaceAgentTask.Contexttyped accessors- Built-in conversation memory, user memory, and cross-thread recall wiring
Changed
KnowledgeTooldelegates toRetrieverinterface (backward-compatible)- PDF extractor upgraded to
MetadataExtractor - Breaking:
ChatMessage.Images→ChatMessage.Attachments - Breaking: Search methods return
Scored*types withScore float32 - Breaking:
CrossThreadSearchandWithUserMemorynow takeEmbeddingProvideras required argument - Breaking:
AgentTask.Contexttype changed frommap[string]stringtomap[string]any - Breaking:
Workflow.Executereturns*WorkflowErroron step failure - Extracted shared
runLoopfromLLMAgentandNetwork(no public API change)
Fixed
- Parent-child chunk resolution works end-to-end
SQLITE_BUSYeliminated with single shared connection- Data race in
ObservedProvider.ChatStream - Cross-thread recall now filters by score and excludes current thread
Workflowretry works on all step types;ForEachcancels on first failureNetworkrouting no longer paraphrases user messages- Background persist completes even on context cancellation
AgentSteppropagates context and attachments to sub-agents
Full Changelog: v0.2.1...v0.3.0