# saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition architecture

> Architecture diagram of the GitHub repository saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition
- Repository: https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition

## Overview

AERIS is a document-grounded RAG system. A user question is decomposed into information requirements; the controller acquires and scores evidence adaptively, builds and verifies a claim–evidence graph, then generates a grounded answer. Documents are separately ingested and indexed for retrieval. The README documents contradiction handling, cross-lingual analysis, calibration, and budgeted selective verification; controller excerpts confirm those stages are orchestrated, but implementation details and some internal wiring were not sampled.

Main entry points: [`app/controller/controller.py`](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/controller/controller.py) (AERIS Controller), [`app/adaptive_retrieval/controller.py`](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/adaptive_retrieval/controller.py) (Adaptive Retrieval), [`app/retrieval/hybrid_retriever.py`](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval/hybrid_retriever.py) (Hybrid Retriever), [`app/indexing/index_builder.py`](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/indexing/index_builder.py) (Index Builder)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingestion["Document Indexing"]
  node_pdf_loader["PDF Loader<br/>[pdf_loader.py]"]
  node_chunker["Semantic Chunker"]
  node_index_builder["Index Builder<br/>[index_builder.py]"]
  node_embedding["Embedding Service"]
  node_vector_store[("Vector Store<br/>[vector_store.py]")]
end

subgraph group_acquisition["Evidence Acquisition"]
  node_adaptive["Adaptive Retrieval<br/>[controller.py]"]
  node_reformulator["Query Reformulator"]
  node_retrieval_memory[("Retrieval Memory<br/>[memory.py]")]
  node_hybrid["Hybrid Retriever"]
  node_dense["Dense Retriever<br/>[dense_retriever.py]"]
  node_bm25["BM25 Retriever<br/>[bm25_retriever.py]"]
  node_reranker["Reranker<br/>[reranker.py]"]
  node_coverage["Coverage Estimator"]
end

subgraph group_reasoning["Claim Reasoning"]
  node_claim_extractor["Claim Extraction<br/>[extractor.py]"]
  node_claim_graph["Claim–Evidence Graph<br/>[graph.py]"]
  node_verifier["Claim Verifier<br/>[claim_verifier.py]"]
  node_contradictions["Contradiction Analysis"]
  node_crosslingual["Cross-Lingual Analysis"]
  node_calibrator["Confidence Calibration<br/>[calibrator.py]"]
  node_selective["Selective Verification"]
end

subgraph group_orchestration["Answer Orchestration"]
  node_controller["AERIS Controller<br/>[controller.py]"]
  node_planner["Requirement Planner"]
  node_generator["Answer Generator"]
end

subgraph group_integrations["Model Services"]
  node_ollama["Ollama Model Service"]
end

node_user(("Questioner"))
node_document["PDF Document"]

node_document -->|"loads"| node_pdf_loader
node_pdf_loader -->|"extracts text"| node_chunker
node_chunker -->|"provides chunks"| node_index_builder
node_index_builder -->|"requests vectors"| node_embedding
node_index_builder -->|"writes index"| node_vector_store
node_embedding -->|"embeds via"| node_ollama
node_user -->|"asks"| node_controller
node_controller -->|"plans requirements"| node_planner
node_planner -->|"prompts"| node_ollama
node_controller -->|"acquires evidence"| node_adaptive
node_adaptive -->|"retrieves candidates"| node_hybrid
node_adaptive -->|"scores coverage"| node_coverage
node_adaptive -->|"reformulates queries"| node_reformulator
node_adaptive -->|"checks retrieval history"| node_retrieval_memory
node_hybrid -->|"queries"| node_dense
node_hybrid -->|"queries"| node_bm25
node_hybrid -->|"ranks results"| node_reranker
node_dense -->|"embeds query"| node_embedding
node_dense -->|"loads vectors"| node_vector_store
node_bm25 -->|"reads metadata"| node_vector_store
node_coverage -->|"evaluates evidence"| node_ollama
node_reformulator -->|"generates queries"| node_ollama
node_controller -->|"extracts claims"| node_claim_extractor
node_claim_extractor -->|"extracts with"| node_ollama
node_controller -->|"builds graph"| node_claim_graph
node_controller -->|"verifies claims"| node_verifier
node_verifier -->|"checks evidence links"| node_claim_graph
node_controller -.->|"analyzes conflicts"| node_contradictions
node_controller -.->|"analyzes language pairs"| node_crosslingual
node_controller -.->|"calibrates confidence"| node_calibrator
node_controller -.->|"selects verification work"| node_selective
node_selective -->|"evaluates claims"| node_claim_graph
node_controller -->|"generates grounded answer"| node_generator
node_generator -->|"generates with"| node_ollama
node_generator -->|"returns answer"| node_user

click node_pdf_loader "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/ingestion/pdf_loader.py"
click node_chunker "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/chunking/semantic_chunker.py"
click node_index_builder "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/indexing/index_builder.py"
click node_embedding "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/indexing/embedding_service.py"
click node_vector_store "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/indexing/vector_store.py"
click node_controller "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/controller/controller.py"
click node_planner "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/planning/requirement_planner.py"
click node_adaptive "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/adaptive_retrieval/controller.py"
click node_reformulator "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/adaptive_retrieval/query_reformulator.py"
click node_retrieval_memory "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval_memory/memory.py"
click node_hybrid "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval/hybrid_retriever.py"
click node_dense "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval/dense_retriever.py"
click node_bm25 "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval/bm25_retriever.py"
click node_reranker "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval/reranker.py"
click node_coverage "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/coverage/evidence_coverage.py"
click node_claim_extractor "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/claim_extraction/extractor.py"
click node_claim_graph "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/claim_graph/graph.py"
click node_verifier "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/verification/claim_verifier.py"
click node_contradictions "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/verification/contradiction_graph.py"
click node_crosslingual "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/verification/cross_lingual_graph.py"
click node_calibrator "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/calibration/calibrator.py"
click node_selective "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/verification/selective_verification.py"
click node_generator "https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/answer_generation/answer_generator.py"

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_pdf_loader,node_chunker,node_index_builder,node_embedding,node_vector_store toneBlue
class node_adaptive,node_reformulator,node_retrieval_memory,node_hybrid,node_dense,node_bm25,node_reranker,node_coverage toneAmber
class node_claim_extractor,node_claim_graph,node_verifier,node_contradictions,node_crosslingual,node_calibrator,node_selective toneMint
class node_controller,node_planner,node_generator toneRose
class node_ollama,node_user,node_document toneIndigo
```

## Components

### Document Indexing

- [PDF Loader](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/ingestion/pdf_loader.py): `app/ingestion/pdf_loader.py`
- [Semantic Chunker](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/chunking/semantic_chunker.py): `app/chunking/semantic_chunker.py`
- [Index Builder](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/indexing/index_builder.py): `app/indexing/index_builder.py`
- [Embedding Service](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/indexing/embedding_service.py): `app/indexing/embedding_service.py`
- [Vector Store](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/indexing/vector_store.py): `app/indexing/vector_store.py`

### Evidence Acquisition

- [Adaptive Retrieval](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/adaptive_retrieval/controller.py): `app/adaptive_retrieval/controller.py`
- [Query Reformulator](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/adaptive_retrieval/query_reformulator.py): `app/adaptive_retrieval/query_reformulator.py`
- [Retrieval Memory](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval_memory/memory.py): `app/retrieval_memory/memory.py`
- [Hybrid Retriever](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval/hybrid_retriever.py): `app/retrieval/hybrid_retriever.py`
- [Dense Retriever](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval/dense_retriever.py): `app/retrieval/dense_retriever.py`
- [BM25 Retriever](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval/bm25_retriever.py): `app/retrieval/bm25_retriever.py`
- [Reranker](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/retrieval/reranker.py): `app/retrieval/reranker.py`
- [Coverage Estimator](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/coverage/evidence_coverage.py): `app/coverage/evidence_coverage.py`

### Claim Reasoning

- [Claim Extraction](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/claim_extraction/extractor.py): `app/claim_extraction/extractor.py`
- [Claim–Evidence Graph](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/claim_graph/graph.py): `app/claim_graph/graph.py`
- [Claim Verifier](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/verification/claim_verifier.py): `app/verification/claim_verifier.py`
- [Contradiction Analysis](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/verification/contradiction_graph.py): `app/verification/contradiction_graph.py`
- [Cross-Lingual Analysis](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/verification/cross_lingual_graph.py): `app/verification/cross_lingual_graph.py`
- [Confidence Calibration](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/calibration/calibrator.py): `app/calibration/calibrator.py`
- [Selective Verification](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/verification/selective_verification.py): `app/verification/selective_verification.py`

### Answer Orchestration

- [AERIS Controller](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/controller/controller.py): `app/controller/controller.py`
- [Requirement Planner](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/planning/requirement_planner.py): `app/planning/requirement_planner.py`
- [Answer Generator](https://github.com/saravanan2005real/aeris-improving-rag-reliability-via-adaptive-evidence-acquisition/blob/main/app/answer_generation/answer_generator.py): `app/answer_generation/answer_generator.py`

### Model Services

- **Ollama Model Service**

### Other components

- **Questioner**
- **PDF Document**

## Connections

- PDF Document → PDF Loader: loads
- PDF Loader → Semantic Chunker: extracts text
- Semantic Chunker → Index Builder: provides chunks
- Index Builder → Embedding Service: requests vectors
- Index Builder → Vector Store: writes index
- Embedding Service → Ollama Model Service: embeds via
- Questioner → AERIS Controller: asks
- AERIS Controller → Requirement Planner: plans requirements
- Requirement Planner → Ollama Model Service: prompts
- AERIS Controller → Adaptive Retrieval: acquires evidence
- Adaptive Retrieval → Hybrid Retriever: retrieves candidates
- Adaptive Retrieval → Coverage Estimator: scores coverage
- Adaptive Retrieval → Query Reformulator: reformulates queries
- Adaptive Retrieval → Retrieval Memory: checks retrieval history
- Hybrid Retriever → Dense Retriever: queries
- Hybrid Retriever → BM25 Retriever: queries
- Hybrid Retriever → Reranker: ranks results
- Dense Retriever → Embedding Service: embeds query
- Dense Retriever → Vector Store: loads vectors
- BM25 Retriever → Vector Store: reads metadata
- Coverage Estimator → Ollama Model Service: evaluates evidence
- Query Reformulator → Ollama Model Service: generates queries
- AERIS Controller → Claim Extraction: extracts claims
- Claim Extraction → Ollama Model Service: extracts with
- AERIS Controller → Claim–Evidence Graph: builds graph
- AERIS Controller → Claim Verifier: verifies claims
- Claim Verifier → Claim–Evidence Graph: checks evidence links
- AERIS Controller → Contradiction Analysis: analyzes conflicts
- AERIS Controller → Cross-Lingual Analysis: analyzes language pairs
- AERIS Controller → Confidence Calibration: calibrates confidence
- AERIS Controller → Selective Verification: selects verification work
- Selective Verification → Claim–Evidence Graph: evaluates claims
- AERIS Controller → Answer Generator: generates grounded answer
- Answer Generator → Ollama Model Service: generates with
- Answer Generator → Questioner: returns answer
