跳转至

sage-middleware API

Domain-specific components and operators for RAG, LLM, memory, and database systems.

Layer: L4 (Domain Components)

Overview

sage-middleware provides high-level domain-specific components:

  • Operators: Pre-built RAG and LLM operators for pipelines
  • Components: NeuroMem (memory), SageDB, SageFlow, SageTSDB
  • Services: Memory services, vector databases, embeddings

Modules

Operators

RAG Operators

::: sage.middleware.operators.rag options: show_root_heading: true members: - OpenAIGenerator - ChromaRetriever - MilvusRetriever - QAPromptor - RefinerOperator

LLM Operators

::: sage.middleware.operators.llm options: show_root_heading: true members: - VLLMGenerator - VLLMEmbedding - OpenAIOperator

Tool Operators

::: sage.middleware.operators.tools options: show_root_heading: true members: - SearcherOperator - ImageCaptionerOperator

Components

NeuroMem (Memory Service)

::: sage.middleware.components.sage_mem.neuromem options: show_root_heading: true members: - NeuroMem - MemoryService

SageDB

::: sage.middleware.components.sage_db options: show_root_heading: true members: - SageDB - DatabaseService

Quick Examples

Using RAG Operators

from sage.kernel.api.local_environment import LocalStreamEnvironment
from sage.middleware.operators.rag import (
    QAPromptor,
    ChromaRetriever,
    OpenAIGenerator
)

env = LocalStreamEnvironment("rag_pipeline")

# Build RAG pipeline with middleware operators
stream = (env
    .from_source(questions)
    .map(QAPromptor, {
        "template": "Question: {question}\nContext: {context}\nAnswer:"
    })
    .map(ChromaRetriever, {
        "collection_name": "documents",
        "top_k": 3
    })
    .map(OpenAIGenerator, {
        "model": "gpt-4",
        "temperature": 0.7
    })
    .sink(output)
)

env.execute()

Using NeuroMem

from sage.middleware.components.sage_mem import NeuroMem

# Initialize memory service
memory = NeuroMem(
    embedding_service="openai",
    vector_db="chroma"
)

# Store memory
memory.store(
    content="Paris is the capital of France",
    metadata={"source": "geography"}
)

# Recall memory
results = memory.recall(
    query="What is the capital of France?",
    top_k=3
)

Using vLLM Service

from sage.middleware.operators.llm import VLLMGenerator

# Use local vLLM service
generator = VLLMGenerator(
    model_name="meta-llama/Llama-2-13b-chat-hf",
    base_url="http://localhost:8000/v1"
)

# In pipeline
stream = env.from_source(prompts).map(generator).sink(output)

Component Guides

Service APIs

See Also