How jain-brain/ayr-answer-engine works
This repository is an engineering-document answer engine. Its main workflow ingests PDFs and DOCX files into searchable, page-linked text, table rows, and figure descriptions; a user question then triggers document retrieval and, when appropriate, a structured-data SQL route before answer generation and citation checking. A separate evaluation workflow scores extraction, retrieval, answers, and citations. The graph reflects documented behavior and sampled calls; the corpus and external model service are shown as external dependencies, while unsampled subsystem details are kept at directory level.
Main entry points: engine.py Answer engine · llm.py Model client · ingest.py Document extraction · evaluate.py Evaluation runner
Components 20
Document ingestion
- Ingest runner
answer_engine/ingest.py - Document extraction
answer_engine/ingest.py - Figure description
answer_engine/ingest.py
Question answering
- Question interface
answer_engine/ask.py - Batch answering
answer_engine/ask.py - Answer engine
answer_engine/engine.py - BM25 retrieval
answer_engine/engine.py - SQL routing
answer_engine/engine.py - Citation check
answer_engine/engine.py - Settings and prompts
answer_engine/config.py - Model client
answer_engine/llm.py
Corpus and models
- Extracted documents
extracted - Source corpus
- SQLite tables
answer_engine/engine.py - OpenAI-compatible API
- Evaluation results
results
Evaluation
- Evaluation runner
answer_engine/evaluate.py - Extraction scores
answer_engine/evaluate.py - Retrieval and answer scores
answer_engine/evaluate.py
Other components
- Engineer
Connections 25
- Engineer → Ingest runner: requests extraction
README.md - Ingest runner → Document extraction: processes files
answer_engine/ingest.py - Document extraction → Source corpus: reads documents
answer_engine/ingest.py - Document extraction → Figure description: describes figures
answer_engine/ingest.py - Figure description → Model client: requests descriptions
answer_engine/ingest.py - Document extraction → Extracted documents: writes JSON and Markdown
answer_engine/ingest.py - Engineer → Question interface: asks question
README.md - Question interface → Answer engine: calls ask
answer_engine/ask.py - Question interface → Batch answering: answers question sets
answer_engine/ask.py - Batch answering → Answer engine: calls ask
answer_engine/ask.py - Answer engine → BM25 retrieval: searches units
answer_engine/engine.py - BM25 retrieval → Extracted documents: loads JSON
answer_engine/engine.py - Answer engine → SQL routing: routes question
answer_engine/engine.py - SQL routing → SQLite tables: queries tables
answer_engine/engine.py - SQL routing → Model client: requests route
answer_engine/engine.py - Answer engine → Model client: generates answer
answer_engine/engine.py - Model client → OpenAI-compatible API: calls API
answer_engine/llm.py - Answer engine → Citation check: checks citations
answer_engine/engine.py - Answer engine → Source corpus: loads structured files
answer_engine/engine.py - Engineer → Evaluation runner: runs evaluation
README.md - Evaluation runner → Extraction scores: scores extraction
answer_engine/evaluate.py - Evaluation runner → Retrieval and answer scores: scores answers
answer_engine/evaluate.py - Retrieval and answer scores → Batch answering: runs questions
answer_engine/evaluate.py - Retrieval and answer scores → Model client: judges answers
answer_engine/evaluate.py - Evaluation runner → Evaluation results: writes scores
README.md