Documentation
¶
Overview ¶
Package retrieve fusiona varios canales de búsqueda (BM25 sobre mensajes, BM25 sobre nodos del índice y —opcional— vectores) en un único ranking mediante Reciprocal Rank Fusion (RRF) + un boost de recencia. El agente es el reranker final: rerankea leyendo los hits; acá solo se ordenan candidatos baratos.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FTSQuery ¶ added in v0.4.0
FTSQuery convierte un query en lenguaje natural en una query FTS5 robusta: tokeniza, descarta stopwords y, por cada término, emite el literal exacto MÁS el prefijo de su stem (`"stem"*`) para matchear variantes morfológicas (programación↔programar) en ambas direcciones. Todo se combina con OR y BM25 rankea: el documento que matchea más términos (y más raros) sube solo. El término exacto sigue presente, así que el match preciso no se pierde. Devuelve "" si no queda ningún token utilizable.
Types ¶
type Channel ¶
Channel es una lista de items ya ordenada por relevancia (mejor primero).
func VectorChannel ¶
VectorChannel arma el canal de embeddings (capa opcional). Devuelve nil si los embeddings están apagados o el backend no responde (la búsqueda sigue con BM25 + estructura). Hace cosine de la query contra los vectores de los nodos y devuelve los top como Items de nodo. allowed (scope) vacío = sin filtro.
type Item ¶
type Item struct {
Kind string // "message" | "node"
ID string // id del mensaje o del nodo
ChatID string
Title string // título del chat/nodo (path corto)
Source string // codex | claude
Role string // rol (hits de mensaje)
NodeKind string // project|chat|commit (hits de nodo)
Content string // snippet o summary
Timestamp int64
// StoreID es el origen del item en lectura federada: "" = store personal,
// si no el nombre del team store. Participa de itemKey, así un mismo ID local
// en stores distintos (p.ej. tras promover un chat) no colapsa en uno.
StoreID string
}
Item es un candidato de cualquier canal, normalizado para fusionar y mostrar.
type Option ¶
type Option func(*config)
Option configura la fusión.
func WithRecencyWeight ¶
WithRecencyWeight fija el peso del boost de recencia (default 0.02).
type Params ¶ added in v0.4.0
type Params struct {
Query string // query en lenguaje natural
Top int // máximo de resultados (default 10)
Roles []string // roles de mensaje a incluir (ya resueltos; nil = todos)
Allowed []string // scope: chatIDs visibles (nil = sin filtro)
Mode string // "hybrid" (default) | "keyword" | "semantic"
Expand bool // activar PRF (expansión por relevancia)
}
Params configura una búsqueda completa.
type Scored ¶
Scored es un item con su score fusionado.
func Search ¶ added in v0.4.0
Search corre el pipeline completo de recuperación y devuelve los resultados ya fusionados (RRF + recencia): canales léxicos (BM25 sobre mensajes y nodos, con stem-prefix vía FTSQuery), vectores opcionales, y —si Expand— un canal extra de Pseudo-Relevance Feedback. Centraliza lo que antes estaba duplicado en el CLI y el MCP. El agente sigue siendo el reranker final que lee los hits.