Skip to content
View sabit-shaikholla's full-sized avatar

Highlights

  • Pro

Block or report sabit-shaikholla

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
sabit-shaikholla/README.md

Sabit Shaikholla

AI/LLM Engineer · Forward Deployed Engineer

Almaty, Kazakhstan · sabit-shaikholla.github.io · LinkedIn · saba.shaiholla@gmail.com

On the work side I've built enterprise RAG over internal knowledge: 100+ code repositories, 1000+ Confluence pages and 5000+ internal documents, most of it scanned PDFs and badly formatted DOCX where top-k retrieval breaks down. The pipeline runs an automated RAGAS evaluation loop (faithfulness 0.89, answer relevance 0.92 on a 15K-query benchmark), and for the messy-document part I use agents that decide what to read themselves instead of trusting nearest-neighbour search.

On the serving side: deployed Kimi-K2.6 on-premise with SGLang (MoE, 100+ tokens/sec throughput, 52% lower TTFT than baseline) and GPT-OSS 120B with vLLM. Also built a marketplace for AI agent skills on APM (Agent Package Manager) — skills as installable packages with versions and dependency resolution, instead of being copied between projects by hand.

Background: Spring Boot microservices, event-driven backends, edge/IoT systems, plus a stretch leading a team of 10 on platforms with 3M+ MAU. A lot of my work is customer-facing — working out what they actually need before anything gets built.

Code here, reasoning on my site.


Currently

  • Agentic document search on Google ADK + Gemini 3 Flash: the agent navigates files with tools instead of an embedding index.
  • Evaluation in the loop: OpenEvals graders as agent reflection steps, groundedness scoring, self-correcting retrieval. Posts on both below.

Selected work

An agent that explores a document folder itself rather than trusting nearest-neighbour search on pre-embedded chunks. It runs a Scan → Deep Dive → Backtrack loop over nine filesystem and vector tools (scan_folder, grep_search, semantic_search, parse_file, …), so it can follow references and retry when retrieval misses something.

Google ADK · Gemini 3 Flash · Docling · pgvector / DuckDB · FastAPI

RAG pipeline that grades every retrieved document for relevance before using it. The score routes the agent into Correct / Incorrect / Ambiguous branches, falling back to web search if nothing passes the threshold. OpenEvals graders run inside the agent loop as reflection steps, not just offline tests.

LangGraph · Gemini 2.5 Flash · Ollama (Qwen 2.5 7B) · OpenEvals · Tavily

Managed RAG end to end: upload a PDF, get answers with grounding metadata pointing at source chunks. Runs on an Oracle Cloud always-free instance behind Nginx + Let's Encrypt, with CI pushing releases. Setup documented step by step.

Gemini File Search API · Streamlit · Nginx · GitHub Actions

Agent Skill Marketplace, on APM

Marketplace for AI agent skills built on APM (Agent Package Manager): skills as packages you can install, with versions and dependency resolution. Not public, no repo to link.

Agent Package Manager · Python

Selenium scraper that gets past FBREF's 403s, 584 engineered features across 17 statistical categories, six seasons of matches. Reaches 61.2% test accuracy on three-way Win/Draw/Loss against a 33.3% baseline. The scraper broke after OPTA removed the advanced tables in Jan 2026, but the datasets are in the repo, so the modelling still runs.

Python · scikit-learn · Selenium · pandas

More
Project What it is Stack
iot-edge-latency Measures latency and QoS trade-offs across Raspberry Pi, EC2, local VM, and AWS Greengrass nodes using Aruco-marker video as ground truth Python, OpenCV, AWS Greengrass, MQTT
ecommerce-microservices Event-driven e-commerce platform: service discovery, distributed tracing, Keycloak auth Spring Boot, Kafka, Eureka, Zipkin, Keycloak
football-oracle AI-driven player analytics with JWT auth, generated reports, and SonarQube in CI Spring Boot, React, PostgreSQL, Vertex AI
ai-llm-tutorials Hands-on notebooks working through LLM mechanics and RAG patterns Python, Jupyter

Writing

All posts · TIL notes · RSS


Stack

Languages Python · Java · Go
AI / LLM Google ADK · LangChain · LangGraph · Pydantic-AI · PyTorch · Vertex AI · SageMaker · Gemini API
Model serving vLLM · SGLang · self-hosted inference (embeddings → 120B)
LLM Ops OpenEvals · LangSmith · Langfuse · MLflow · Kubeflow
Backend Spring Boot · Quarkus · FastAPI · gRPC · GraphQL
Data & Messaging Kafka · RabbitMQ · Spark · PostgreSQL · pgvector · DuckDB · Elasticsearch
Platform Docker · Kubernetes · AWS · GCP · Azure · Oracle Cloud · GitHub Actions · Grafana

Open to AI/LLM and forward-deployed engineering roles. Email is fastest: saba.shaiholla@gmail.com.

Pinned Loading

  1. ai-llm-tutorials ai-llm-tutorials Public

    Hands-on tutorials for learning Large Language Models and AI mechanisms

    Jupyter Notebook 1

  2. corrective-rag-openevals corrective-rag-openevals Public

    Corrective Retrieval Augmented Generation (CRAG) with OpenEvals on LangGraph

    Python 1

  3. ecommerce-microservices ecommerce-microservices Public

    E-Commerce platform using a microservices based on Spring Boot with dynamic service discovery and event-driven communication.

    Java

  4. gemini-api-file-search-tool gemini-api-file-search-tool Public

    Gemini API File Search Tool - RAG-as-a-Service

    Python

  5. pl-football pl-football Public

    Premier League Match Prediction - FBREF Data Pipeline

    Jupyter Notebook

  6. agentic-file-query agentic-file-query Public

    AI-powered document search agent using Google ADK and Gemini — scans, reasons, and follows cross-references instead of blind retrieval.

    Python 2