Documentation
¶
Overview ¶
Package search provides unified search capabilities for engram.
Package search provides unified search capabilities for engram.
Index ¶
- func BM25Normalize(score float64) float64
- type Manager
- func (m *Manager) CacheStats() map[string]any
- func (m *Manager) Changes(ctx context.Context, params SearchParams) (*UnifiedSearchResult, error)
- func (m *Manager) ClearCache()
- func (m *Manager) Close()
- func (m *Manager) Decisions(ctx context.Context, params SearchParams) (*UnifiedSearchResult, error)
- func (m *Manager) GetFrequentQueries(limit int) []RecentQuery
- func (m *Manager) GetRecentQueries(limit int) []RecentQuery
- func (m *Manager) HowItWorks(ctx context.Context, params SearchParams) (*UnifiedSearchResult, error)
- func (m *Manager) Metrics() *SearchMetrics
- func (m *Manager) SetDocumentStore(ds *gorm.DocumentStore, es *embedding.Service)
- func (m *Manager) SetGraphStore(gs graphpkg.GraphStore)
- func (m *Manager) UnifiedSearch(ctx context.Context, params SearchParams) (*UnifiedSearchResult, error)
- type RecentQuery
- type ScoredID
- type SearchMetrics
- type SearchParams
- type SearchResult
- type UnifiedSearchResult
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BM25Normalize ¶
BM25Normalize converts a raw PostgreSQL ts_rank score to [0,1). formula: |x| / (1 + |x|)
Types ¶
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager provides unified search across PostgreSQL and pgvector.
func NewManager ¶
func NewManager( observationStore *gorm.ObservationStore, summaryStore *gorm.SummaryStore, promptStore *gorm.PromptStore, vectorClient vector.Client, ) *Manager
NewManager creates a new search manager.
func (*Manager) CacheStats ¶
CacheStats returns current cache statistics.
func (*Manager) Changes ¶
func (m *Manager) Changes(ctx context.Context, params SearchParams) (*UnifiedSearchResult, error)
Changes performs a semantic search optimized for finding code changes.
func (*Manager) ClearCache ¶
func (m *Manager) ClearCache()
ClearCache clears the result cache. Useful for testing or after data changes.
func (*Manager) Close ¶
func (m *Manager) Close()
Close stops background goroutines and cleans up resources.
func (*Manager) Decisions ¶
func (m *Manager) Decisions(ctx context.Context, params SearchParams) (*UnifiedSearchResult, error)
Decisions performs a semantic search optimized for finding decisions.
func (*Manager) GetFrequentQueries ¶
func (m *Manager) GetFrequentQueries(limit int) []RecentQuery
GetFrequentQueries returns the most frequently used search queries.
func (*Manager) GetRecentQueries ¶
func (m *Manager) GetRecentQueries(limit int) []RecentQuery
GetRecentQueries returns the most recent search queries, sorted by last used time.
func (*Manager) HowItWorks ¶
func (m *Manager) HowItWorks(ctx context.Context, params SearchParams) (*UnifiedSearchResult, error)
HowItWorks performs a semantic search optimized for understanding architecture.
func (*Manager) Metrics ¶
func (m *Manager) Metrics() *SearchMetrics
Metrics returns the search metrics for monitoring.
func (*Manager) SetDocumentStore ¶ added in v0.3.0
func (m *Manager) SetDocumentStore(ds *gorm.DocumentStore, es *embedding.Service)
SetDocumentStore sets the document store and embedding service for document search.
func (*Manager) SetGraphStore ¶
func (m *Manager) SetGraphStore(gs graphpkg.GraphStore)
SetGraphStore sets the graph store for graph-augmented search expansion.
func (*Manager) UnifiedSearch ¶
func (m *Manager) UnifiedSearch(ctx context.Context, params SearchParams) (*UnifiedSearchResult, error)
UnifiedSearch performs a unified search across all document types. Uses caching and request coalescing for optimal performance.
type RecentQuery ¶
type RecentQuery struct {
LastUsed time.Time `json:"last_used"`
Query string `json:"query"`
Project string `json:"project,omitempty"`
Type string `json:"type,omitempty"`
Count int64 `json:"count"`
}
RecentQuery represents a recently executed search query.
type ScoredID ¶
type ScoredID struct {
DocType string // "observation", "session", "prompt"
Score float64
ID int64
}
ScoredID pairs a database row ID with a composite search score and document type.
func RRF ¶
RRF fuses multiple ranked lists using Reciprocal Rank Fusion (k=60). Each input list must be sorted descending by score (best first).
Weighting rules:
- First two lists in the variadic args receive 2x weight multiplier
- Top-rank bonuses: rank=0 -> +0.05, rank<=2 -> +0.02
Returns a deduplicated list sorted by fused score descending. Deduplication key: (ID, DocType) pair — keeps highest accumulated score.
type SearchMetrics ¶
type SearchMetrics struct {
TotalSearches int64
VectorSearches int64
FilterSearches int64
TotalLatencyNs int64
VectorLatencyNs int64
FilterLatencyNs int64
CacheHits int64
CoalescedRequests int64
SearchErrors int64
FTSShortCircuits int64
// contains filtered or unexported fields
}
SearchMetrics tracks search performance statistics.
func (*SearchMetrics) GetStats ¶
func (m *SearchMetrics) GetStats() map[string]any
GetStats returns the current search statistics.
type SearchParams ¶
type SearchParams struct {
Format string
Type string
Project string
ObsType string
Concepts string
Files string
Query string
Scope string
OrderBy string
DateStart int64
Offset int
Limit int
DateEnd int64
IncludeGlobal bool
ExcludeSuperseded bool
}
SearchParams contains parameters for unified search.
type SearchResult ¶
type SearchResult struct {
Metadata map[string]any `json:"metadata,omitempty"`
Type string `json:"type"`
Title string `json:"title,omitempty"`
Content string `json:"content,omitempty"`
Project string `json:"project"`
Scope string `json:"scope,omitempty"`
ID int64 `json:"id"`
CreatedAt int64 `json:"created_at_epoch"`
Score float64 `json:"score,omitempty"`
}
SearchResult represents a unified search result. Field order optimized for memory alignment (fieldalignment).
type UnifiedSearchResult ¶
type UnifiedSearchResult struct {
Query string `json:"query,omitempty"`
Results []SearchResult `json:"results"`
TotalCount int `json:"total_count"`
}
UnifiedSearchResult contains the combined search results.