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-apibuilds the public FastAPI surface on top of it.admin-api-libandextractor-api-libreuse 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-libitself 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 models –
pydantic-settingsbased schemas for Langfuse, retry/backoff knobs, and feature flags. All values can be set via environment variables or Helm values. - LangChain/LangGraph utilities – Reusable
AsyncRunnableabstraction, 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 selection –
RAG_CLASS_TYPE_LLM_TYPE(stackit,ollama,fake). Provider-specific keys such asSTACKIT_VLLM_API_KEYorOLLAMA_BASE_URLfill the matching settings models (StackitVLLMSettings,OllamaLLMSettings). - Embedding selection –
EMBEDDER_CLASS_TYPE_EMBEDDER_TYPEplus provider-specific variables (for exampleSTACKIT_EMBEDDER_MODEL,OLLAMA_EMBEDDER_MODEL). - Langfuse –
LANGFUSE_PUBLIC_KEY,LANGFUSE_SECRET_KEY, and optional host/project settings configure tracing. - Retry defaults –
RETRY_DECORATOR_MAX_RETRIES,RETRY_DECORATOR_BACKOFF_FACTOR, and related keys feedRetryDecoratorSettings. 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.
Release files for rag-core-lib 4.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rag_core_lib-4.2.0.tar.gz | 19.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rag_core_lib-4.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 49.6 kB
Release files / rag_core_lib-4.2.0.tar.gz
| Download URL | rag_core_lib-4.2.0.tar.gz |
|---|---|
| Size | 19.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a4f74f9dacde93d0c98da6c839a098d1a7f2feb6c38865c2b3c31b1782b0d732
|
|
BLAKE2b-256 checksum How to use checksums |
a2818df23f70bef75be20c8fd9d3b50aee4923bb48f6c99e819482d4e48373b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.13.11 Linux/6.11.0-1018-azure
|
Release files / rag_core_lib-4.2.0-py3-none-any.whl
| Download URL | rag_core_lib-4.2.0-py3-none-any.whl |
|---|---|
| Size | 29.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e9f771f20c43ce0d8500544a836674b7a44c09319dcb68c5ed5cf5d40bd762bd
|
|
BLAKE2b-256 checksum How to use checksums |
0a62acebf56be814c428fff9587862674c7e16dc93c14668a328812a2fc9a5b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.13.11 Linux/6.11.0-1018-azure
|