Documentation
¶
Index ¶
- func EmitEvent(events chan<- types.Event, event types.Event, strategyName string)
- func GetParam[T any](params map[string]any, key string, defaultValue T) T
- func GetParamPtr[T any](params map[string]any, key string) *T
- func MergeDocPaths(sharedDocs, strategyDocs []string, parentDir string) []string
- func ResolveDatabasePath(dbCfg latest.RAGDatabaseConfig, parentDir, defaultName string) (string, error)
- type BM25Database
- func (d *BM25Database) AddDocument(ctx context.Context, doc database.Document) error
- func (d *BM25Database) Close() error
- func (d *BM25Database) DeleteDocumentsByPath(ctx context.Context, sourcePath string) error
- func (d *BM25Database) DeleteFileMetadata(ctx context.Context, sourcePath string) error
- func (d *BM25Database) GetAllFileMetadata(ctx context.Context) ([]database.FileMetadata, error)
- func (d *BM25Database) GetDocumentsByPath(ctx context.Context, sourcePath string) ([]database.Document, error)
- func (d *BM25Database) GetFileMetadata(ctx context.Context, sourcePath string) (*database.FileMetadata, error)
- func (d *BM25Database) SearchSimilar(ctx context.Context, _ []float64, limit int) ([]database.SearchResult, error)
- func (d *BM25Database) SetFileMetadata(ctx context.Context, metadata database.FileMetadata) error
- type BM25Strategy
- func (s *BM25Strategy) CheckAndReindexChangedFiles(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, ...) error
- func (s *BM25Strategy) Close() error
- func (s *BM25Strategy) Initialize(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, ...) error
- func (s *BM25Strategy) Query(ctx context.Context, query string, numResults int, threshold float64) ([]database.SearchResult, error)
- func (s *BM25Strategy) StartFileWatcher(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, ...) error
- type BuildContext
- type Config
- func BuildStrategy(ctx context.Context, cfg latest.RAGStrategyConfig, buildCtx BuildContext, ...) (*Config, error)
- func NewBM25FromConfig(ctx context.Context, cfg latest.RAGStrategyConfig, buildCtx BuildContext, ...) (*Config, error)
- func NewChunkedEmbeddingsFromConfig(ctx context.Context, cfg latest.RAGStrategyConfig, buildCtx BuildContext, ...) (*Config, error)
- type Strategy
- type VectorDatabase
- func (d *VectorDatabase) AddDocument(ctx context.Context, doc database.Document) error
- func (d *VectorDatabase) Close() error
- func (d *VectorDatabase) DeleteDocumentsByPath(ctx context.Context, sourcePath string) error
- func (d *VectorDatabase) DeleteFileMetadata(ctx context.Context, sourcePath string) error
- func (d *VectorDatabase) GetAllFileMetadata(ctx context.Context) ([]database.FileMetadata, error)
- func (d *VectorDatabase) GetDocumentsByPath(ctx context.Context, sourcePath string) ([]database.Document, error)
- func (d *VectorDatabase) GetFileMetadata(ctx context.Context, sourcePath string) (*database.FileMetadata, error)
- func (d *VectorDatabase) SearchSimilar(ctx context.Context, queryEmbedding []float64, limit int) ([]database.SearchResult, error)
- func (d *VectorDatabase) SetFileMetadata(ctx context.Context, metadata database.FileMetadata) error
- type VectorStrategy
- func (s *VectorStrategy) CheckAndReindexChangedFiles(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, ...) error
- func (s *VectorStrategy) Close() error
- func (s *VectorStrategy) GetIndexingUsage() (tokens int, cost float64)
- func (s *VectorStrategy) Initialize(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, ...) error
- func (s *VectorStrategy) Query(ctx context.Context, query string, numResults int, threshold float64) ([]database.SearchResult, error)
- func (s *VectorStrategy) StartFileWatcher(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, ...) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EmitEvent ¶
EmitEvent sends an event to the events channel using non-blocking send This prevents strategies from hanging if the event channel is full or not ready Automatically sets the StrategyName field in the event
func GetParam ¶
GetParam gets a parameter from the config Params map. It includes numeric coercion so YAML numbers (which may be decoded as int, int64, uint64 or float64) can be safely read as either int or float64 without callers needing to worry about the concrete type.
func GetParamPtr ¶
GetParamPtr gets a parameter pointer from the config Params map
func MergeDocPaths ¶
MergeDocPaths merges shared docs with strategy-specific docs and makes them absolute
func ResolveDatabasePath ¶
func ResolveDatabasePath(dbCfg latest.RAGDatabaseConfig, parentDir, defaultName string) (string, error)
ResolveDatabasePath resolves database configuration to a path
Types ¶
type BM25Database ¶
type BM25Database struct {
// contains filtered or unexported fields
}
BM25Database implements a simple database for BM25 strategy (no vectors needed)
func NewBM25Database ¶
func NewBM25Database(dbPath string) (*BM25Database, error)
NewBM25Database creates a new SQLite database for BM25 strategy
func (*BM25Database) AddDocument ¶
AddDocument adds or updates a document (no embedding needed)
func (*BM25Database) Close ¶
func (d *BM25Database) Close() error
Close closes the database connection
func (*BM25Database) DeleteDocumentsByPath ¶
func (d *BM25Database) DeleteDocumentsByPath(ctx context.Context, sourcePath string) error
DeleteDocumentsByPath deletes all documents from a specific source file
func (*BM25Database) DeleteFileMetadata ¶
func (d *BM25Database) DeleteFileMetadata(ctx context.Context, sourcePath string) error
DeleteFileMetadata deletes metadata for a specific source file
func (*BM25Database) GetAllFileMetadata ¶
func (d *BM25Database) GetAllFileMetadata(ctx context.Context) ([]database.FileMetadata, error)
GetAllFileMetadata retrieves metadata for all indexed files
func (*BM25Database) GetDocumentsByPath ¶
func (d *BM25Database) GetDocumentsByPath(ctx context.Context, sourcePath string) ([]database.Document, error)
GetDocumentsByPath retrieves all documents from a specific source file
func (*BM25Database) GetFileMetadata ¶
func (d *BM25Database) GetFileMetadata(ctx context.Context, sourcePath string) (*database.FileMetadata, error)
GetFileMetadata retrieves metadata for a specific source file
func (*BM25Database) SearchSimilar ¶
func (d *BM25Database) SearchSimilar(ctx context.Context, _ []float64, limit int) ([]database.SearchResult, error)
SearchSimilar is not used by BM25 (it does its own scoring) This just returns all documents for BM25 to score
func (*BM25Database) SetFileMetadata ¶
func (d *BM25Database) SetFileMetadata(ctx context.Context, metadata database.FileMetadata) error
SetFileMetadata stores or updates metadata for a source file
type BM25Strategy ¶
type BM25Strategy struct {
// contains filtered or unexported fields
}
BM25Strategy implements BM25 keyword-based retrieval BM25 is a ranking function that uses term frequency and inverse document frequency
func NewBM25Strategy ¶
func NewBM25Strategy(name string, db database.Database, events chan<- types.Event, k1, b float64) *BM25Strategy
NewBM25Strategy creates a new BM25-based retrieval strategy
func (*BM25Strategy) CheckAndReindexChangedFiles ¶
func (s *BM25Strategy) CheckAndReindexChangedFiles(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, respectWordBoundaries bool) error
CheckAndReindexChangedFiles checks for file changes and re-indexes if needed
func (*BM25Strategy) Initialize ¶
func (s *BM25Strategy) Initialize(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, respectWordBoundaries bool) error
Initialize indexes all documents for BM25 retrieval
func (*BM25Strategy) Query ¶
func (s *BM25Strategy) Query(ctx context.Context, query string, numResults int, threshold float64) ([]database.SearchResult, error)
Query searches for relevant documents using BM25 scoring
func (*BM25Strategy) StartFileWatcher ¶
func (s *BM25Strategy) StartFileWatcher(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, respectWordBoundaries bool) error
StartFileWatcher starts monitoring files for changes
type BuildContext ¶
type BuildContext struct {
RAGName string
ParentDir string
Models map[string]latest.ModelConfig
Env environment.Provider
ModelsGateway string
}
BuildContext contains everything needed to build a strategy
type Config ¶
type Config struct {
Name string
Strategy Strategy
Docs []string // Merged document paths (shared + strategy-specific)
Limit int // Max results for this strategy
Threshold float64 // Score threshold
ChunkSize int // Chunk size for this strategy
ChunkOverlap int // Chunk overlap for this strategy
RespectWordBoundaries bool // Whether to chunk on word boundaries
}
Config contains a strategy and its runtime configuration.
func BuildStrategy ¶
func BuildStrategy(ctx context.Context, cfg latest.RAGStrategyConfig, buildCtx BuildContext, events chan<- types.Event) (*Config, error)
BuildStrategy builds a strategy from config Explicitly dispatches to the appropriate constructor based on type
func NewBM25FromConfig ¶
func NewBM25FromConfig(ctx context.Context, cfg latest.RAGStrategyConfig, buildCtx BuildContext, events chan<- types.Event) (*Config, error)
NewBM25FromConfig creates a BM25 strategy from configuration
func NewChunkedEmbeddingsFromConfig ¶
func NewChunkedEmbeddingsFromConfig(ctx context.Context, cfg latest.RAGStrategyConfig, buildCtx BuildContext, events chan<- types.Event) (*Config, error)
NewChunkedEmbeddingsFromConfig creates a chunked-embeddings strategy from configuration
type Strategy ¶
type Strategy interface {
// Initialize indexes all documents from the given paths.
Initialize(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, respectWordBoundaries bool) error
// Query searches for relevant documents using the strategy's retrieval method.
// numResults is the maximum number of candidates to retrieve (before fusion).
Query(ctx context.Context, query string, numResults int, threshold float64) ([]database.SearchResult, error)
// CheckAndReindexChangedFiles checks for file changes and re-indexes if needed.
CheckAndReindexChangedFiles(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, respectWordBoundaries bool) error
// StartFileWatcher starts monitoring files for changes.
StartFileWatcher(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, respectWordBoundaries bool) error
// Close releases resources held by the strategy.
Close() error
}
Strategy defines the interface for different retrieval strategies. This is the canonical definition used by both the strategies and rag packages.
type VectorDatabase ¶
type VectorDatabase struct {
// contains filtered or unexported fields
}
VectorDatabase implements a SQLite database for vector embeddings storage
func NewVectorDatabase ¶
func NewVectorDatabase(dbPath string, vectorDimensions int) (*VectorDatabase, error)
NewVectorDatabase creates a new SQLite database for vector embeddings
func (*VectorDatabase) AddDocument ¶
AddDocument adds or updates a document with its vector embedding
func (*VectorDatabase) Close ¶
func (d *VectorDatabase) Close() error
Close closes the database connection
func (*VectorDatabase) DeleteDocumentsByPath ¶
func (d *VectorDatabase) DeleteDocumentsByPath(ctx context.Context, sourcePath string) error
DeleteDocumentsByPath deletes all documents from a specific source file
func (*VectorDatabase) DeleteFileMetadata ¶
func (d *VectorDatabase) DeleteFileMetadata(ctx context.Context, sourcePath string) error
DeleteFileMetadata deletes metadata for a specific source file
func (*VectorDatabase) GetAllFileMetadata ¶
func (d *VectorDatabase) GetAllFileMetadata(ctx context.Context) ([]database.FileMetadata, error)
GetAllFileMetadata retrieves metadata for all indexed files
func (*VectorDatabase) GetDocumentsByPath ¶
func (d *VectorDatabase) GetDocumentsByPath(ctx context.Context, sourcePath string) ([]database.Document, error)
GetDocumentsByPath retrieves all documents from a specific source file
func (*VectorDatabase) GetFileMetadata ¶
func (d *VectorDatabase) GetFileMetadata(ctx context.Context, sourcePath string) (*database.FileMetadata, error)
GetFileMetadata retrieves metadata for a specific source file
func (*VectorDatabase) SearchSimilar ¶
func (d *VectorDatabase) SearchSimilar(ctx context.Context, queryEmbedding []float64, limit int) ([]database.SearchResult, error)
SearchSimilar finds documents similar to the query embedding using cosine similarity
func (*VectorDatabase) SetFileMetadata ¶
func (d *VectorDatabase) SetFileMetadata(ctx context.Context, metadata database.FileMetadata) error
SetFileMetadata stores or updates metadata for a source file
type VectorStrategy ¶
type VectorStrategy struct {
// contains filtered or unexported fields
}
VectorStrategy implements retrieval using vector embeddings and similarity search
func NewVectorStrategy ¶
func NewVectorStrategy(name string, embedModel provider.Provider, db database.Database, events chan<- types.Event, similarityMetric string, batchSize, maxConcurrency int, modelID string, modelsStore modelStore) *VectorStrategy
NewVectorStrategy creates a new vector-based retrieval strategy with models.dev pricing
func (*VectorStrategy) CheckAndReindexChangedFiles ¶
func (s *VectorStrategy) CheckAndReindexChangedFiles(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, respectWordBoundaries bool) error
CheckAndReindexChangedFiles checks for file changes and re-indexes if needed
func (*VectorStrategy) GetIndexingUsage ¶
func (s *VectorStrategy) GetIndexingUsage() (tokens int, cost float64)
GetIndexingUsage returns usage statistics from indexing
func (*VectorStrategy) Initialize ¶
func (s *VectorStrategy) Initialize(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, respectWordBoundaries bool) error
Initialize indexes all documents
func (*VectorStrategy) Query ¶
func (s *VectorStrategy) Query(ctx context.Context, query string, numResults int, threshold float64) ([]database.SearchResult, error)
Query searches for relevant documents using vector similarity
func (*VectorStrategy) StartFileWatcher ¶
func (s *VectorStrategy) StartFileWatcher(ctx context.Context, docPaths []string, chunkSize, chunkOverlap int, respectWordBoundaries bool) error
StartFileWatcher starts monitoring files for changes