ai / docs /architecture.md
3v324v23's picture
agent
ee9a09c
|
Raw
History Blame Contribute Delete
2.01 kB
# Architecture
Codebase Intelligence Agent is a repository question-answering system. It indexes source files into searchable chunks, retrieves relevant evidence for a user question, and optionally asks Gemini to turn that evidence into a natural answer with citations.
## Runtime Components
- **Frontend:** Streamlit app in `frontend/app.py`.
- **Backend API:** FastAPI app in `backend/main.py`.
- **Chunking:** Language-aware chunkers in `backend/chunking`.
- **Retrieval:** BM25, Qdrant semantic search, and graph boosting in `backend/retrieval`.
- **Vector database:** Qdrant Cloud stores embeddings for semantic search.
- **Graph store:** NetworkX builds dependency graphs and persists them as JSON files under `data/graphs`.
- **LLM:** Gemini generates final explanatory answers when `GEMINI_API_KEY` is configured.
## Request Flow
1. The user indexes a local, GitHub, or uploaded repository.
2. The backend parses files and creates `Chunk` records.
3. BM25 keeps an in-memory lexical index.
4. Qdrant stores chunk embeddings and payload metadata.
5. NetworkX stores dependency graph nodes and relationships locally.
6. On question answering, the backend retrieves candidate chunks.
7. Gemini receives the question plus top retrieved chunks and returns a concise explanation.
8. The API returns the answer, citations, and retrieved chunks to Streamlit.
## Storage Responsibilities
| System | Responsibility |
| --- | --- |
| Qdrant | Vector embeddings and semantic similarity search |
| NetworkX JSON | Code dependency graph and graph-based retrieval boosts |
| Backend memory | Current repo summaries and BM25 index |
| Local `data/` | Cloned/uploaded repository working files |
## Important Notes
- `localhost` works only when Qdrant is running on the same machine as the backend.
- This repo is currently arranged for Qdrant Cloud through `.env`.
- Dependency graphs are local files, so Neo4j is not required.
- Secrets must live in environment variables or CI/CD secrets, never in Git.