ractogateway.rag.pipeline
RactoRAG — the unified RAG pipeline.
Combines file reading, text processing, chunking, embedding, vector storage, retrieval, and LLM-based generation into a single, ergonomic interface.
Example:
from ractogateway import openai_developer_kit as opd
from ractogateway.rag.pipeline import RactoRAG
from ractogateway.rag.embedders.openai_embedder import OpenAIEmbedder
from ractogateway.rag.stores.chroma_store import ChromaStore
kit = opd.OpenAIDeveloperKit(model="gpt-4o")
rag = RactoRAG(
vector_store=ChromaStore(collection="docs"),
embedder=OpenAIEmbedder(),
llm_kit=kit,
)
rag.ingest("report.pdf")
response = rag.query("What were the key findings?")
print(response.answer.content)
- class ractogateway.rag.pipeline.RactoRAG(vector_store=None, embedder=None, *, store=None, chunker=None, processors=None, llm_kit=None, context_template=None, reader_registry=None, default_prompt=None)[source]
Bases:
objectProduction-grade RAG pipeline for RactoGateway.
- Parameters:
vector_store (
BaseVectorStore|None) – AnyBaseVectorStoreinstance.embedder (
BaseEmbedder|None) – AnyBaseEmbedderinstance.chunker (
BaseChunker|None) – How to split documents. Defaults toRecursiveChunkerwithchunk_size=512, overlap=50.processors (
list[BaseProcessor] |None) – List of text processors applied to each chunk before embedding. Defaults to[TextCleaner()].llm_kit (
Any|None) – Any developer kit (OpenAIDeveloperKit,GoogleDeveloperKit, orAnthropicDeveloperKit). Required forquery()/aquery().context_template (
str|None) – Template string for injecting retrieved context into the LLM prompt. Must contain{context}and{question}placeholders.reader_registry (
FileReaderRegistry|None) – CustomFileReaderRegistry. Defaults to a registry with all built-in readers.default_prompt (
RactoPrompt|None) – RACTO prompt used for generation. Falls back to a built-in RAG prompt.
- ingest(path, **metadata)[source]
Read, chunk, embed, and store a single file.
- ingest_dir(directory, pattern='**/*', **metadata)[source]
Recursively ingest all supported files in a directory.
- ingest_text(text, source='manual', **metadata)[source]
Ingest a raw text string directly (no file needed).
- async aingest_dir(directory, pattern='**/*', **metadata)[source]
Async variant of
ingest_dir().
- async aingest_text(text, source='manual', **metadata)[source]
Async variant of
ingest_text().
- retrieve(query, top_k=5, filters=None)[source]
Embed query and retrieve the top-k most relevant chunks.
- Parameters:
- Return type:
- Returns:
list[RetrievalResult] – Ranked results (rank 1 = most relevant).
- async aretrieve(query, top_k=5, filters=None)[source]
Async variant of
retrieve().- Return type:
- query(question, top_k=5, filters=None, prompt=None, temperature=0.0, max_tokens=2048)[source]
Retrieve relevant chunks and generate an answer.
- Parameters:
question (
str) – The user’s question.top_k (
int) – Number of context chunks to retrieve.filters (
dict[str,Any] |None) – Optional metadata filters for retrieval.prompt (
RactoPrompt|None) – Override the default RACTO prompt for generation.temperature (
float) – LLM temperature (default0.0for factual answers).max_tokens (
int) – Maximum tokens in the generated answer.
- Return type:
- Returns:
RAGResponse – Contains the generated answer plus the retrieved source chunks.
- Raises:
RuntimeError – If no
llm_kitwas provided.
- async aquery(question, top_k=5, filters=None, prompt=None, temperature=0.0, max_tokens=2048)[source]
Async variant of
query().- Return type:
- property store: BaseVectorStore
The underlying vector store.
- property embedder: BaseEmbedder
The underlying embedder.