Finished my internship @ Chelsio Communications

This summer I interned at Chelsio Communications, a semiconductor company based in Sunnyvale that specializes in high-performance Ethernet networking and storage solutions. My project: build a production-ready internal chatbot powered by an LLM and a private knowledge base, entirely on-premise with no external APIs.

Every component had to stay local. Sending proprietary data to an outside server wasn’t an option, which pushed me toward building a fully self-contained system from the ground up.

I was given a serious machine to work with: 128 cores, 256 GB RAM, 1.1 TB of disk, and an RTX 5090. The hardware constraint of staying local didn’t sting much when the local hardware is that good.

I chose Retrieval Augmented Generation (RAG) over fine-tuning after weighing the tradeoffs. Fine-tuning would have required retraining model weights, curating a high-quality dataset, and burning weeks of compute time. RAG let me combine a pre-trained LLM’s reasoning ability with a semantic search layer grounded in the company’s actual documents, and it was achievable within the internship timeline.

The hardest part turned out to be a problem I didn’t anticipate: document parsing. Most of Chelsio’s knowledge base lives in PDFs full of complex tables. Traditional parsers fell apart on these, producing poor embeddings and, consequently, poor retrieval. After a lot of trial and error, I came across ColPali, a method that embeds each PDF page directly as an image and performs semantic search over image embeddings, bypassing the parse-chunk-index pipeline entirely. It was the breakthrough the project needed.


Stack

Layer Tech
Retrieval ColPali (vision RAG)
Vector DB Local, on-prem, Chroma DB
Inference RTX 5090 local
Backend REST API + RAG pipeline
Containers Docker

Frontend

Once the RAG pipeline was working, I had to ship it as an actual usable application, which meant building a full-stack product. The backend was entirely mine: API server, database setup, RAG orchestration. For the frontend, I evaluated a few off-the-shelf chat UIs rather than building one from scratch.

UI Verdict
Gradio Fine for quick PoCs, not production-ready in terms of polish.
ChatbotUI Decent but had auth and user management friction.
Open WebUI Clean, extensible, easy to wire up to custom backends.

Open WebUI connected cleanly to the API endpoints exposed by my backend and gave the tool a professional, usable interface without me having to build a chat UI from scratch. The backend was significantly more complex than the frontend integration, and that’s where I spent most of my time.


Overall, this was the most meaningful technical project I’ve worked on. It has also deepened my interest in AI systems substantially. I want to spend more time learning about LLMs in depth rather than treating them as a black box.

Chelsio Chat Architecture