# `Nous.Plugins.KnowledgeBase`
[🔗](https://github.com/nyo16/nous/blob/v0.17.1/lib/nous/plugins/knowledge_base.ex#L1)

Plugin for LLM-compiled knowledge base with wiki-style entries.

Provides tools for agents to ingest documents, compile wiki entries,
search and query the knowledge base, and run health checks.

## Usage

    # Minimal — ETS store
    agent = Agent.new("openai:gpt-4",
      plugins: [Nous.Plugins.KnowledgeBase],
      deps: %{kb_config: %{store: Nous.KnowledgeBase.Store.ETS, kb_id: "my_kb"}}
    )

    # With embeddings for semantic search
    agent = Agent.new("openai:gpt-4",
      plugins: [Nous.Plugins.KnowledgeBase],
      deps: %{
        kb_config: %{
          store: Nous.KnowledgeBase.Store.ETS,
          kb_id: "my_kb",
          embedding: Nous.Memory.Embedding.OpenAI,
          embedding_opts: %{api_key: "sk-..."}
        }
      }
    )

## Composition with Memory Plugin

The KB plugin composes cleanly with `Nous.Plugins.Memory`:

    agent = Agent.new("openai:gpt-4",
      plugins: [Nous.Plugins.Memory, Nous.Plugins.KnowledgeBase],
      deps: %{
        memory_config: %{store: Nous.Memory.Store.ETS},
        kb_config: %{store: Nous.KnowledgeBase.Store.ETS, kb_id: "my_kb"}
      }
    )

## Configuration (via `deps[:kb_config]`)

**Required:**
  * `:store` - Store backend module (e.g. `Nous.KnowledgeBase.Store.ETS`)

**Optional — store:**
  * `:store_opts` - Options passed to `store.init/1`
  * `:store_state` - An already-initialised store. When present, the plugin
    reuses it instead of calling `store.init/1`, so a pre-populated (or
    previously-run) knowledge base survives plugin init.
  * `:kb_id` - Namespace for this knowledge base

**Optional — embedding:**
  * `:embedding` - Embedding provider module (reuses `Nous.Memory.Embedding.*`)
  * `:embedding_opts` - Options passed to embedding provider

**Optional — auto-injection:**
  * `:auto_inject` - Auto-inject relevant KB entries before each request (default: true)
  * `:inject_strategy` - `:first_only` (default) or `:every_iteration`
  * `:inject_limit` - Max entries to inject (default: 3)
  * `:inject_min_score` - Minimum score for injection (default: 0.3)

**Optional — compilation:**
  * `:compiler_model` - Model string for compilation LLM calls
  * `:auto_compile` - Auto-compile pending documents after runs (default: false)

---

*Consult [api-reference.md](api-reference.md) for complete listing*
