Skip to main content

The rag-core-lib contains the shared components of at least two of the rag libs.

Project description

rag-core-lib

Foundation library for the STACKIT RAG template. It packages all reusable Retrieval-Augmented Generation (RAG) primitives—LLM factories, embedding providers, retry/backoff helpers, Langfuse instrumentation, and configuration models—so higher-level services and libs can stay thin and declarative.

rag-core-lib sits at the bottom of the dependency pyramid:

  • rag-core-api builds the public FastAPI surface on top of it.
  • admin-api-lib and extractor-api-lib reuse the same factories, tracing, and configuration system.
  • Service deployments (see services/*) can replace components through dependency-injector in the dependency containers of the libs. These dependency containers that can be overridden live in the respective API libs (rag-core-api, admin-api-lib, extractor-api-lib); rag-core-lib itself is a pure building-block library with no injectable services to swap.

What you get

  • Provider-agnostic LLM & embedding adapters – OpenAI-compatible, STACKIT model serving, Ollama, plus fake implementations for tests. Selection happens through RAGClassTypeSettings / EmbedderClassTypeSettings.
  • Shared configuration modelspydantic-settings based schemas for Langfuse, retry/backoff knobs, and feature flags. All values can be set via environment variables or Helm values.
  • LangChain/LangGraph utilities – Reusable AsyncRunnable abstraction, default chat graph wiring, and structured tracing wrappers (LangfuseTracedRunnable).
  • Observability tooling – Langfuse manager, structured logging hooks, and rate-limit aware retry decorator.
  • Safety & testing utilities – Fake providers, deterministic defaults, and pytest helpers reused across the monorepo.

Installation

pip install rag-core-lib

Python 3.13 is required.

Package map at a glance

Module Purpose
rag_core_lib.impl.settings.* Pydantic settings for LLM/embedding providers, Langfuse, retry decorator, and feature toggles.
rag_core_lib.impl.llms.llm_factory Produces chat/completion models based on the selected provider (stackit, ollama, fake).
rag_core_lib.impl.embeddings.* Embedding adapters with retry wrapping and provider-specific configuration.
rag_core_lib.impl.tracers.* Langfuse-backed wrappers to trace LangChain/LangGraph runnables.
rag_core_lib.impl.utils.retry_decorator Exponential backoff decorator shared by summarizers, embedders, and other outbound calls.
rag_core_lib.runnables.* Asynchronous runnable abstractions used by chat graphs and admin workflows.
rag_core_lib.tracers.* Abstractions for tracing runnables.

Configuration & environment variables

All settings derive from pydantic-settings models, so you can either build them in code or supply environment variables:

  • LLM selectionRAG_CLASS_TYPE_LLM_TYPE (stackit, ollama, fake). Provider-specific keys such as STACKIT_VLLM_API_KEY or OLLAMA_BASE_URL fill the matching settings models (StackitVLLMSettings, OllamaLLMSettings).
  • Embedding selectionEMBEDDER_CLASS_TYPE_EMBEDDER_TYPE plus provider-specific variables (for example STACKIT_EMBEDDER_MODEL, OLLAMA_EMBEDDER_MODEL).
  • LangfuseLANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, and optional host/project settings configure tracing.
  • Retry defaultsRETRY_DECORATOR_MAX_RETRIES, RETRY_DECORATOR_BACKOFF_FACTOR, and related keys feed RetryDecoratorSettings. Components can override them through their own settings models (e.g., StackitEmbedderSettings).

When deploying through the provided Helm chart, the same keys are exposed under shared.envs.*, backend.envs.*, and adminBackend.envs.*.

Typical usage

# Assumptions:
# - STACKIT exposes an OpenAI-compatible endpoint, so the default provider works out of the box.
# - You have a STACKIT_VLLM_API_KEY available via environment variables or provide it explicitly below.

from rag_core_lib.impl.llms.llm_factory import chat_model_provider
from rag_core_lib.impl.settings.stackit_vllm_settings import StackitVllmSettings

# Build settings from env or manually override defaults
settings = StackitVllmSettings(
    model="cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic",
    temperature=0.1,
)

# Resolve the LangChain chat model (async or sync)
chat_llm = chat_model_provider(settings)

response = chat_llm.invoke("Tell me about RAG pipelines")
print(response.content)

Related packages

  • rag-core-api – HTTP API layer that exposes chat, evaluation, and information piece endpoints.
  • admin-api-lib – Document lifecycle orchestration built on top of this foundation.
  • extractor-api-lib – Content extraction service using shared retry, settings, and tracing primitives.

Contributing

Follow the repository conventions (Black, isort, Flake8, pytest). When adding new providers or utilities, include typed settings, update Helm values if required, and add unit tests under libs/rag-core-lib/tests. For further instructions see the Contributing Guide.

License

Licensed under Apache 2.0, see the project license at the root LICENSE file of this repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rag_core_lib-4.2.0.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rag_core_lib-4.2.0-py3-none-any.whl (29.9 kB view details)

Uploaded Python 3

File details

Details for the file rag_core_lib-4.2.0.tar.gz.

File metadata

  • Download URL: rag_core_lib-4.2.0.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.11 Linux/6.11.0-1018-azure

File hashes

Hashes for rag_core_lib-4.2.0.tar.gz
Algorithm Hash digest
SHA256 a4f74f9dacde93d0c98da6c839a098d1a7f2feb6c38865c2b3c31b1782b0d732
MD5 251af09ee24400ead7e1bba4ae8a8be1
BLAKE2b-256 a2818df23f70bef75be20c8fd9d3b50aee4923bb48f6c99e819482d4e48373b5

See more details on using hashes here.

File details

Details for the file rag_core_lib-4.2.0-py3-none-any.whl.

File metadata

  • Download URL: rag_core_lib-4.2.0-py3-none-any.whl
  • Upload date:
  • Size: 29.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.11 Linux/6.11.0-1018-azure

File hashes

Hashes for rag_core_lib-4.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e9f771f20c43ce0d8500544a836674b7a44c09319dcb68c5ed5cf5d40bd762bd
MD5 cec20a2bb8828d219085dd8d56cb2814
BLAKE2b-256 0a62acebf56be814c428fff9587862674c7e16dc93c14668a328812a2fc9a5b8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page