# leoxramadani/ragapidotnet architecture

> Architecture diagram of the GitHub repository leoxramadani/ragapidotnet, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/leoxramadani/ragapidotnet
- Repository: https://github.com/leoxramadani/ragapidotnet

## Overview

LangVector is a document-grounded RAG API. Its main workflow accepts document uploads, extracts and chunks text, embeds and indexes it, then retrieves relevant chunks to generate cited answers. It also exposes document management and an evaluation workflow for retrieval, guardrails, and answer faithfulness. The source excerpts show most ingestion and retrieval calls; evaluation-controller routing and some question-controller details are supported by the source index, while other relationships are left out where evidence is limited.

Main entry points: [`Services/RagService.cs`](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/RagService.cs) (RAG orchestration), [`Services/IngestionService.cs`](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/IngestionService.cs) (Ingestion), [`Services/EvaluationService.cs`](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/EvaluationService.cs) (Evaluation), [`Services/VectorStoreService.cs`](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/VectorStoreService.cs) (Vector store)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API endpoints"]
  node_documents_api["Documents API"]
  node_questions_api["Questions API"]
  node_evaluation_api["Evaluation API"]
end

subgraph group_ingest["Document ingestion"]
  node_ingestion["Ingestion"]
  node_extractor["Text extraction"]
  node_splitter["Text splitting"]
end

subgraph group_rag["Question answering"]
  node_rag_service["RAG orchestration<br/>[RagService.cs]"]
  node_prompts["RAG prompts<br/>[RagPrompts.cs]"]
end

subgraph group_evaluation["RAG evaluation"]
  node_eval_service["Evaluation"]
end

subgraph group_infra["Models and integrations"]
  node_embeddings["Embeddings"]
  node_vector_store["Vector store"]
  node_models["API and domain models<br/>[Models.cs]"]
  node_options["Service options<br/>[Options.cs]"]
end

node_client(("API client"))
node_qdrant[("Qdrant")]
node_openai["OpenAI API"]

node_client -->|"uploads and manages"| node_documents_api
node_client -.->|"asks questions"| node_questions_api
node_client -.->|"submits evaluations"| node_evaluation_api
node_documents_api -->|"ingests uploads"| node_ingestion
node_documents_api -->|"lists and deletes"| node_vector_store
node_ingestion -->|"extracts text"| node_extractor
node_ingestion -->|"splits text"| node_splitter
node_ingestion -->|"embeds chunks"| node_embeddings
node_ingestion -->|"writes chunks"| node_vector_store
node_extractor -->|"returns extracted data"| node_models
node_embeddings -->|"requests vectors"| node_openai
node_vector_store -->|"reads and writes"| node_qdrant
node_questions_api -.->|"answers questions"| node_rag_service
node_rag_service -->|"checks and searches"| node_vector_store
node_rag_service -->|"embeds question"| node_embeddings
node_rag_service -->|"builds prompt"| node_prompts
node_rag_service -->|"generates answer"| node_openai
node_evaluation_api -.->|"runs evaluation"| node_eval_service
node_eval_service -->|"retrieves and generates"| node_rag_service
node_eval_service -->|"judges faithfulness"| node_openai
node_documents_api -->|"uses request and response"| node_models
node_rag_service -->|"returns answer data"| node_models
node_eval_service -->|"returns report"| node_models
node_embeddings -->|"configures model"| node_options
node_vector_store -->|"configures collection"| node_options
node_rag_service -->|"configures retrieval"| node_options
node_eval_service -->|"configures judge"| node_options

click node_documents_api "https://github.com/leoxramadani/ragapidotnet/blob/main/Controllers/DocumentsController.cs"
click node_questions_api "https://github.com/leoxramadani/ragapidotnet/blob/main/Controllers/QuestionsController.cs"
click node_evaluation_api "https://github.com/leoxramadani/ragapidotnet/blob/main/Controllers/EvaluationController.cs"
click node_ingestion "https://github.com/leoxramadani/ragapidotnet/blob/main/Services/IngestionService.cs"
click node_extractor "https://github.com/leoxramadani/ragapidotnet/blob/main/Services/DocumentTextExtractor.cs"
click node_splitter "https://github.com/leoxramadani/ragapidotnet/blob/main/Services/RecursiveTextSplitter.cs"
click node_embeddings "https://github.com/leoxramadani/ragapidotnet/blob/main/Services/EmbeddingService.cs"
click node_vector_store "https://github.com/leoxramadani/ragapidotnet/blob/main/Services/VectorStoreService.cs"
click node_rag_service "https://github.com/leoxramadani/ragapidotnet/blob/main/Services/RagService.cs"
click node_prompts "https://github.com/leoxramadani/ragapidotnet/blob/main/Services/RagPrompts.cs"
click node_eval_service "https://github.com/leoxramadani/ragapidotnet/blob/main/Services/EvaluationService.cs"
click node_models "https://github.com/leoxramadani/ragapidotnet/blob/main/Models/Models.cs"
click node_options "https://github.com/leoxramadani/ragapidotnet/blob/main/Options/Options.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_documents_api,node_questions_api,node_evaluation_api,node_client toneBlue
class node_ingestion,node_extractor,node_splitter,node_qdrant toneAmber
class node_rag_service,node_prompts,node_openai toneMint
class node_eval_service toneRose
class node_embeddings,node_vector_store,node_models,node_options toneIndigo
```

## Components

### API endpoints

- [Documents API](https://github.com/leoxramadani/ragapidotnet/blob/main/Controllers/DocumentsController.cs): `Controllers/DocumentsController.cs`
- [Questions API](https://github.com/leoxramadani/ragapidotnet/blob/main/Controllers/QuestionsController.cs): `Controllers/QuestionsController.cs`
- [Evaluation API](https://github.com/leoxramadani/ragapidotnet/blob/main/Controllers/EvaluationController.cs): `Controllers/EvaluationController.cs`

### Document ingestion

- [Ingestion](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/IngestionService.cs): `Services/IngestionService.cs`
- [Text extraction](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/DocumentTextExtractor.cs): `Services/DocumentTextExtractor.cs`
- [Text splitting](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/RecursiveTextSplitter.cs): `Services/RecursiveTextSplitter.cs`

### Question answering

- [RAG orchestration](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/RagService.cs): `Services/RagService.cs`
- [RAG prompts](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/RagPrompts.cs): `Services/RagPrompts.cs`

### RAG evaluation

- [Evaluation](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/EvaluationService.cs): `Services/EvaluationService.cs`

### Models and integrations

- [Embeddings](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/EmbeddingService.cs): `Services/EmbeddingService.cs`
- [Vector store](https://github.com/leoxramadani/ragapidotnet/blob/main/Services/VectorStoreService.cs): `Services/VectorStoreService.cs`
- [API and domain models](https://github.com/leoxramadani/ragapidotnet/blob/main/Models/Models.cs): `Models/Models.cs`
- [Service options](https://github.com/leoxramadani/ragapidotnet/blob/main/Options/Options.cs): `Options/Options.cs`

### Other components

- **API client**
- **Qdrant**
- **OpenAI API**

## Connections

- API client → Documents API: uploads and manages (evidence: `Controllers/DocumentsController.cs`)
- API client → Questions API: asks questions
- API client → Evaluation API: submits evaluations
- Documents API → Ingestion: ingests uploads (evidence: `Controllers/DocumentsController.cs`)
- Documents API → Vector store: lists and deletes (evidence: `Controllers/DocumentsController.cs`)
- Ingestion → Text extraction: extracts text (evidence: `Services/IngestionService.cs`)
- Ingestion → Text splitting: splits text (evidence: `Services/IngestionService.cs`)
- Ingestion → Embeddings: embeds chunks (evidence: `Services/IngestionService.cs`)
- Ingestion → Vector store: writes chunks (evidence: `Services/IngestionService.cs`)
- Text extraction → API and domain models: returns extracted data (evidence: `Services/DocumentTextExtractor.cs`)
- Embeddings → OpenAI API: requests vectors (evidence: `Services/EmbeddingService.cs`)
- Vector store → Qdrant: reads and writes (evidence: `Services/VectorStoreService.cs`)
- Questions API → RAG orchestration: answers questions (evidence: `Controllers/QuestionsController.cs`)
- RAG orchestration → Vector store: checks and searches (evidence: `Services/RagService.cs`)
- RAG orchestration → Embeddings: embeds question (evidence: `Services/RagService.cs`)
- RAG orchestration → RAG prompts: builds prompt (evidence: `Services/RagService.cs`)
- RAG orchestration → OpenAI API: generates answer (evidence: `Services/RagService.cs`)
- Evaluation API → Evaluation: runs evaluation (evidence: `Controllers/EvaluationController.cs`)
- Evaluation → RAG orchestration: retrieves and generates (evidence: `Services/EvaluationService.cs`)
- Evaluation → OpenAI API: judges faithfulness (evidence: `Services/EvaluationService.cs`)
- Documents API → API and domain models: uses request and response (evidence: `Controllers/DocumentsController.cs`)
- RAG orchestration → API and domain models: returns answer data (evidence: `Services/RagService.cs`)
- Evaluation → API and domain models: returns report (evidence: `Services/EvaluationService.cs`)
- Embeddings → Service options: configures model (evidence: `Services/EmbeddingService.cs`)
- Vector store → Service options: configures collection (evidence: `Services/VectorStoreService.cs`)
- RAG orchestration → Service options: configures retrieval (evidence: `Services/RagService.cs`)
- Evaluation → Service options: configures judge (evidence: `Services/EvaluationService.cs`)
