from typing import Optional
from pydantic import BaseModel
from r2r.base import (
AsyncPipe,
EmbeddingProvider,
EvalProvider,
KGProvider,
LLMProvider,
PromptProvider,
VectorDBProvider,
)
from r2r.pipelines import (
EvalPipeline,
IngestionPipeline,
RAGPipeline,
SearchPipeline,
)
class R2RProviders(BaseModel):
vector_db: Optional[VectorDBProvider]
embedding: Optional[EmbeddingProvider]
llm: Optional[LLMProvider]
prompt: Optional[PromptProvider]
eval: Optional[EvalProvider]
kg: Optional[KGProvider]
class Config:
arbitrary_types_allowed = True
class R2RPipes(BaseModel):
parsing_pipe: Optional[AsyncPipe]
embedding_pipe: Optional[AsyncPipe]
vector_storage_pipe: Optional[AsyncPipe]
vector_search_pipe: Optional[AsyncPipe]
rag_pipe: Optional[AsyncPipe]
streaming_rag_pipe: Optional[AsyncPipe]
eval_pipe: Optional[AsyncPipe]
kg_pipe: Optional[AsyncPipe]
kg_storage_pipe: Optional[AsyncPipe]
kg_agent_search_pipe: Optional[AsyncPipe]
class Config:
arbitrary_types_allowed = True
class R2RPipelines(BaseModel):
eval_pipeline: EvalPipeline
ingestion_pipeline: IngestionPipeline
search_pipeline: SearchPipeline
rag_pipeline: RAGPipeline
streaming_rag_pipeline: RAGPipeline
class Config:
arbitrary_types_allowed = True