How almarch/pokedex works
Pokédex is a multilingual Pokémon question-answering service. A user sends a request through Open-WebUI to the agent, which summarizes it, checks for named Pokémon and retrieves relevant descriptions, reranks the results, and adds them as instructions before proxying the request to Ollama; streamed answers return through the proxy. The README also documents notebook-based vector-database population. The request-processing and retrieval links are supported by sampled source; notebook ingestion and deployment wiring are documented but not sampled in detail.
Main entry points: Agent.py Request orchestrator · app.py Agent proxy · ollama.py Ollama client · regex.py Name matching
Components 16
User experience
- Open-WebUI
k8s/webui - Ingress and TLS
k8s/cert
Agent processing
- Agent proxy
agent/agent/app.py - Request orchestrator
agent/agent/Agent.py - Intent and language
agent/agent/summarize.py - Answer instructions
agent/agent/instructions.py - Request logs
logs
Knowledge retrieval
- Name matching
agent/agent/regex.py - Document retrieval
agent/agent/retrieve.py - Relevance ranking
agent/agent/rerank.py - Qdrant client
agent/agent/qdrant.py - Data preparation
notebook/pokemons.ipynb
Inference and data
- Ollama client
agent/agent/ollama.py - Ollama inference
k8s/ollama - Qdrant vector store
k8s/qdrant
Other components
- User
Connections 22
- User → Ingress and TLS: sends request
- Ingress and TLS → Open-WebUI: routes traffic
- Open-WebUI → Agent proxy: submits chat
- Agent proxy → Request orchestrator: processes streaming request
- Agent proxy → Request logs: writes transactions
- Request orchestrator → Intent and language: summarizes conversation
- Request orchestrator → Name matching: checks mentioned names
- Request orchestrator → Document retrieval: searches query elements
- Request orchestrator → Relevance ranking: ranks documents
- Request orchestrator → Answer instructions: formats answer context
- Intent and language → Ollama client: requests structured generation
- Name matching → Qdrant client: reads name collection
- Name matching → Ollama client: verifies candidates
- Document retrieval → Ollama client: embeds query
- Document retrieval → Qdrant client: queries descriptions
- Relevance ranking → Ollama client: scores documents
- Qdrant client → Qdrant vector store: reads and writes vectors
- Ollama client → Ollama inference: calls model APIs
- Data preparation → Qdrant vector store: populates knowledge
- Agent proxy → Ollama inference: forwards processed request
- Ollama inference → Agent proxy: streams response
- Agent proxy → Open-WebUI: returns stream