knowledge_search
knowledge_search
¶
KnowledgeSearchTool — filtered BM25 retrieval with source attribution.
Wraps KnowledgeStore so agents can search ingested documents by text query
and optional provenance filters (source, doc_type, author, date range).
Optionally delegates to a TwoStageRetriever for BM25 + reranking.
Depuis le 23 août 2026, l'outil sait aussi se construire SEUL : sans magasin injecté, il monte à la première recherche la même pile hybride que la recherche profonde — KnowledgeStore + OllamaEmbedder (nomic-embed-text) + HybridSearch (BM25 et vecteurs, fusion RRF). C'est ce qui l'a fait entrer dans la trousse du chat : le savoir personnel (notes Obsidian, Apple Notes, documents ingérés) était indexé, embarqué… et inaccessible au modèle. Ollama absent = repli BM25 seul, jamais un échec.
Classes¶
KnowledgeSearchTool
¶
KnowledgeSearchTool(
store: Optional[KnowledgeStore] = None,
retriever: Optional["TwoStageRetriever"] = None,
)
Bases: BaseTool
Search the knowledge store using filtered BM25 retrieval.
Results include source attribution so agents can cite provenance.
When a TwoStageRetriever is supplied it is used in place of the
store's direct retrieve method, enabling optional semantic reranking.
Source code in src/diapason/tools/knowledge_search.py
KnowledgeGetDocumentTool
¶
Bases: BaseTool
Le document ENTIER derrière un extrait de recherche.
Le dernier kilomètre (Atlas, 25 août 2026) : knowledge_search rend des extraits de 300 caractères alors que l'index porte le corps COMPLET des mails et des notes. Cet outil recoud les chunks — « retrouve le mail de X sur Y » devient recherche puis lecture, corps entier, même hors ligne, même Ollama éteint.