# mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag architecture

> Architecture diagram of the GitHub repository mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag
- Repository: https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag

## Overview

A Django movie-semantic-search application offers CLI commands and a browser UI over a shared Qdrant/embedding core. The main workflow loads and embeds the TMDB catalogue, then searches it by meaning; RAG chat retrieves movie context before generating answers. Exploration and vector visualizations are additional product capabilities. The README documents the broader interfaces; sampled source confirms the principal search, ingest, chat, and exploration wiring, but not every view or command implementation.

Main entry points: [`reviews/qdrant_utils.py`](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/qdrant_utils.py) (Qdrant utilities), [`manage.py`](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/manage.py) (Django CLI), [`reviews/views.py`](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/views.py) (Web views), [`reviews/management/commands/visualize_vectors.py`](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/visualize_vectors.py) (Vector charts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_cli["Django CLI<br/>[manage.py]"]
  node_web["Web routes<br/>[urls.py]"]
  node_views["Web views<br/>[views.py]"]
  node_templates["Web pages"]
end

subgraph group_domain["Movie workflows"]
  node_load["Load movies<br/>[load_movies.py]"]
  node_search["Search movies<br/>[search_movies.py]"]
  node_rag["RAG chat<br/>[rag_chat.py]"]
  node_explore["Vector explorer<br/>[explore_vectors.py]"]
  node_visualize["Vector charts"]
end

subgraph group_core["Vector search core"]
  node_vectorutils["Qdrant utilities<br/>[qdrant_utils.py]"]
end

subgraph group_integrations["Data and services"]
  node_csv["TMDB catalogue"]
  node_qdrant[("Local Qdrant")]
  node_embedmodel["Embedding model"]
  node_groq["Groq LLM API"]
end

node_user(("User"))

node_user -->|"runs commands"| node_cli
node_user -->|"browses"| node_web
node_cli -->|"dispatches"| node_load
node_cli -->|"dispatches"| node_search
node_cli -->|"dispatches"| node_rag
node_cli -->|"dispatches"| node_explore
node_cli -->|"dispatches"| node_visualize
node_web -->|"routes requests"| node_views
node_views -->|"renders pages"| node_templates
node_views -->|"searches movies"| node_vectorutils
node_views -->|"reads collection"| node_qdrant
node_views -.->|"generates answers"| node_groq
node_load -->|"reads catalogue"| node_csv
node_load -->|"creates and embeds"| node_vectorutils
node_vectorutils -->|"encodes text"| node_embedmodel
node_vectorutils -->|"creates and queries"| node_qdrant
node_search -->|"searches movies"| node_vectorutils
node_rag -->|"retrieves movies"| node_vectorutils
node_rag -.->|"generates answers"| node_groq
node_explore -->|"inspects vectors"| node_qdrant
node_explore -->|"encodes queries"| node_embedmodel
node_visualize -->|"reads vectors"| node_qdrant
node_visualize -->|"searches matches"| node_vectorutils
node_visualize -->|"encodes query"| node_embedmodel

click node_cli "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/manage.py"
click node_web "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/tutorial/urls.py"
click node_views "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/views.py"
click node_templates "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/tree/master/reviews/templates/reviews"
click node_load "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/load_movies.py"
click node_search "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/search_movies.py"
click node_rag "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/rag_chat.py"
click node_explore "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/explore_vectors.py"
click node_visualize "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/visualize_vectors.py"
click node_vectorutils "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/qdrant_utils.py"
click node_csv "https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/data/tmdb_5000_movies.csv"

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_cli,node_web,node_views,node_templates,node_user toneBlue
class node_load,node_search,node_rag,node_explore,node_visualize toneAmber
class node_vectorutils toneMint
class node_csv,node_qdrant,node_embedmodel,node_groq toneRose
```

## Components

### User interfaces

- [Django CLI](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/manage.py): `manage.py`
- [Web routes](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/tutorial/urls.py): `tutorial/urls.py`
- [Web views](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/views.py): `reviews/views.py`
- [Web pages](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/tree/master/reviews/templates/reviews): `reviews/templates/reviews`

### Movie workflows

- [Load movies](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/load_movies.py): `reviews/management/commands/load_movies.py`
- [Search movies](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/search_movies.py): `reviews/management/commands/search_movies.py`
- [RAG chat](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/rag_chat.py): `reviews/management/commands/rag_chat.py`
- [Vector explorer](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/explore_vectors.py): `reviews/management/commands/explore_vectors.py`
- [Vector charts](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/management/commands/visualize_vectors.py): `reviews/management/commands/visualize_vectors.py`

### Vector search core

- [Qdrant utilities](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/reviews/qdrant_utils.py): `reviews/qdrant_utils.py`

### Data and services

- [TMDB catalogue](https://github.com/mejji/movie-search-with-vectors---a-beginner-s-guide-to-qdrant--embeddings---rag/blob/master/data/tmdb_5000_movies.csv): `data/tmdb_5000_movies.csv`
- **Local Qdrant**
- **Embedding model**
- **Groq LLM API**

### Other components

- **User**

## Connections

- User → Django CLI: runs commands
- User → Web routes: browses
- Django CLI → Load movies: dispatches
- Django CLI → Search movies: dispatches
- Django CLI → RAG chat: dispatches
- Django CLI → Vector explorer: dispatches
- Django CLI → Vector charts: dispatches
- Web routes → Web views: routes requests
- Web views → Web pages: renders pages
- Web views → Qdrant utilities: searches movies
- Web views → Local Qdrant: reads collection
- Web views → Groq LLM API: generates answers
- Load movies → TMDB catalogue: reads catalogue
- Load movies → Qdrant utilities: creates and embeds
- Qdrant utilities → Embedding model: encodes text
- Qdrant utilities → Local Qdrant: creates and queries
- Search movies → Qdrant utilities: searches movies
- RAG chat → Qdrant utilities: retrieves movies
- RAG chat → Groq LLM API: generates answers
- Vector explorer → Local Qdrant: inspects vectors
- Vector explorer → Embedding model: encodes queries
- Vector charts → Local Qdrant: reads vectors
- Vector charts → Qdrant utilities: searches matches
- Vector charts → Embedding model: encodes query
