Documentation
¶
Overview ¶
Package retriever defines the interface for retrieving relevant chunks based on a query.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ChunkFromSearchResult ¶
func ChunkFromSearchResult(sr vectorstore.SearchResult) *chunk.Chunk
ChunkFromSearchResult builds the chunk a vector hit stands for. The vector entry's ID is the chunk ID ingest wrote, so it is carried through: without it nobody can tell which chunk, document or collection a hit came from. Everything else on the chunk comes from the metadata store, which the engine reads afterwards.
Types ¶
type HybridRetriever ¶
type HybridRetriever struct {
// contains filtered or unexported fields
}
HybridRetriever combines multiple retrievers using Reciprocal Rank Fusion (RRF).
func NewHybridRetriever ¶
func NewHybridRetriever(retrievers ...Retriever) *HybridRetriever
NewHybridRetriever creates a hybrid retriever from multiple sub-retrievers.
func (*HybridRetriever) Describe ¶
func (r *HybridRetriever) Describe() weave.ComponentInfo
Describe reports a hybrid retriever, its RRF constant and its parts.
type MMRRetriever ¶
type MMRRetriever struct {
// contains filtered or unexported fields
}
MMRRetriever uses Maximal Marginal Relevance to re-rank candidates, balancing relevance and diversity.
func NewMMRRetriever ¶
func NewMMRRetriever(vs vectorstore.VectorStore, emb embedder.Embedder, lambda float64) *MMRRetriever
NewMMRRetriever creates a new MMR retriever. Lambda controls the trade-off: 1.0 = pure relevance, 0.0 = pure diversity.
func (*MMRRetriever) Describe ¶
func (r *MMRRetriever) Describe() weave.ComponentInfo
Describe reports an MMR retriever and its lambda.
type Options ¶
type Options struct {
// CollectionID restricts retrieval to a specific collection.
CollectionID string `json:"collection_id,omitempty"`
// TenantKey is the namespace key for tenant isolation.
TenantKey string `json:"tenant_key,omitempty"`
// TopK is the maximum number of results to return.
TopK int `json:"top_k"`
// MinScore is the minimum relevance score threshold.
MinScore float64 `json:"min_score"`
// Filter restricts retrieval to chunks matching these metadata key-value pairs.
Filter map[string]string `json:"filter,omitempty"`
}
Options configures a retrieval operation.
type Reranker ¶
type Reranker interface {
Rerank(ctx context.Context, query string, documents []string) ([]float64, error)
}
Reranker scores query-document pairs for re-ordering.
type RerankerRetriever ¶
type RerankerRetriever struct {
// contains filtered or unexported fields
}
RerankerRetriever wraps a base retriever and re-orders results using a cross-encoder or other reranker.
func NewRerankerRetriever ¶
func NewRerankerRetriever(base Retriever, reranker Reranker) *RerankerRetriever
NewRerankerRetriever creates a retriever that re-ranks results from the base retriever.
func (*RerankerRetriever) Describe ¶
func (r *RerankerRetriever) Describe() weave.ComponentInfo
Describe reports a reranking retriever and the retriever it wraps.
type Result ¶
type Result struct {
// Chunk is the retrieved chunk.
Chunk *chunk.Chunk `json:"chunk"`
// Score is the relevance score (higher is more relevant).
Score float64 `json:"score"`
}
Result represents a retrieved chunk with a relevance score.
type Retriever ¶
type Retriever interface {
// Retrieve returns the most relevant chunks for the given query.
Retrieve(ctx context.Context, query string, opts *Options) ([]Result, error)
}
Retriever retrieves relevant chunks for a given query.
type SimilarityRetriever ¶
type SimilarityRetriever struct {
// contains filtered or unexported fields
}
SimilarityRetriever wraps a VectorStore.Search for simple cosine similarity retrieval.
func NewSimilarityRetriever ¶
func NewSimilarityRetriever(vs vectorstore.VectorStore, emb embedder.Embedder, store chunk.Store) *SimilarityRetriever
NewSimilarityRetriever creates a new similarity-based retriever.
func (*SimilarityRetriever) Describe ¶
func (r *SimilarityRetriever) Describe() weave.ComponentInfo
Describe reports a similarity retriever. Its score is whatever the vector store underneath reports.