KnowledgeResource

Managed Embeddings & RAG

Knowledge resources define embeddings, ingestion pipelines, and storage for knowledge bases. Configure vector stores declaratively, share context across agents with access control.

KnowledgeResource Schema

Define knowledge bases as YAML specs following the Open Agentic Resource Specification

product-docs.yaml
type: knowledge
enabled: true
version: "0.1"
metadata:
  display_name: Product Documentation
  description: Searchable product docs for RAG
  tags:
    category: documentation
    team: support
spec:
  name: product-docs
  
  embedding:
    provider: openai
    model: text-embedding-3-large
    dimensions: 3072
  
  documents:
    - source: ./docs/**/*.md
    - source: https://api.example.com/docs
      loader: web_scraper
  
  storage:
    type: mongodb
    collection: product_docs
    index_name: vector_index
  
  # Reference a StorageResource
  # storage: ${"resource::storage::mongodb-default"}

Key Fields

  • embedding — Provider, model, and dimensions for vector embeddings
  • documents — Inline docs or external loaders (files, URLs, APIs)
  • storage — Vector store configuration or reference to StorageResource

Supported Embedding Providers

openai
cohere
anthropic
huggingface
local
StorageResource

Vector Store Backends

Configure backing stores used by knowledge resources. Supports any vector database while centralizing governance in EV.

MongoDB

Atlas Vector Search

Pinecone

Serverless vector DB

Qdrant

High-performance search

Chroma

Open source embeddings

mongodb-storage.yaml
type: storage
spec:
  name: mongodb-default
  driver: mongodb
  config:
    uri: ${"secret::string::MONGODB_URI"}
    database: ev
    
# Knowledge resources reference by name:
# storage: ${"resource::storage::mongodb-default"}

Knowledge Operator

The EVKnowledgeOperator supports CREATE and LOAD operations. It delegates loading through ResourceLoadOperatorwhile handling embedding workflows.

  • CREATE Operation
    Ingests documents, generates embeddings, stores in vector DB
  • LOAD Operation
    Retrieves knowledge resource with search capabilities
  • Incremental Updates
    Add documents without re-indexing entire corpus
knowledge_operator.py
from ev_core import EV
from ev_core.control.operators.knowledge import (
    KnowledgeOperationContext,
    KnowledgeOperationType,
    CreateKnowledgeParams,
)

# Create knowledge base
await EV.operate(
    KnowledgeOperationContext(
        operation=KnowledgeOperationType.CREATE,
        params=CreateKnowledgeParams(
            name="product-docs",
            documents=[
                "./docs/**/*.md",
                "https://api.example.com/docs"
            ]
        )
    )
)

# Load and search
kb = await EV.operate(
    KnowledgeOperationContext(
        operation=KnowledgeOperationType.LOAD,
        params=LoadKnowledgeParams(name="product-docs")
    )
)

results = await kb.search("How to reset password?")
RAG Integration

Use with Agents

Knowledge bases integrate seamlessly with agent definitions. Access controlled per-agent—RAG queries limited to declared knowledge resources.

Agent Definition with Knowledge

type: agent_definition
spec:
  name: support-agent
  engine: agno
  definition:
    model: openai-gpt-4o
    instructions: |
      Answer questions using the product docs.
      Always cite your sources.
  resources:
    knowledge:
      - product-docs      # ✓ searchable
      - faq-database      # ✓ searchable
      # - hr-policies     # ✗ not declared

Runtime Search

# Agent automatically has access to declared KBs
agent = await EV.operate(
    AgentDefinitionOperationContext(
        operation=AgentDefinitionOperationType.BUILD,
        params=BuildAgentDefinitionParams(
            name="support-agent"
        )
    )
)

# Knowledge search happens transparently
# during agent tool calls
response = await agent.run(
    task="How do I reset my password?"
)

# Agent retrieved context from product-docs
# and faq-database, but NOT hr-policies

MCP-Aware Knowledge

Combine knowledge resources with MCP connectors for external data access

mcp-knowledge.yaml
# MCP connector for external knowledge
type: mcp
spec:
  name: confluence-mcp
  transport:
    type: http
    url: https://mcp.confluence.internal
    headers:
      Authorization: Bearer ${"secret::string::CONFLUENCE_TOKEN"}

# Agent with both static knowledge and MCP
type: agent_definition
spec:
  name: docs-agent
  resources:
    knowledge:
      - product-docs        # Static embeddings
    mcp:
      - confluence-mcp      # Live Confluence access

Centralize Your Knowledge

Stop managing embeddings across silos—version, share, and govern knowledge in one place.

Explore Policies