MLOps LLM Stack Hackathon Winner

Travis Cline, Virta Health10:38 · Aug 2023 · 387 views
Thumbnail for MLOps LLM Stack Hackathon Winner Watch on YouTube
TL;DR
  1. 1

    The team built a Slack question-answering bot and a three-dimensional explorer for 10,000 MLOps Community Slack embeddings.

  2. 2

    Redis Pub/Sub connected a Go Slack server to a Python backend that retrieved similar conversations and supplied them to GPT-4.

  3. 3

    The team planned to update the embedding set, make the visualization real time, and show how conversations and topics changed over time.

Summary

Travis Cline describes the project that won the MLOps Community hackathon, a 12-hour, in-person event. The team used 10,000 embeddings from MLOps Community Slack conversations to build two tools. One was a retrieval-based Slack bot that found nearby conversations and passed them to GPT-4 as context. The other was an interactive browser visualization that compressed the embedding space into three dimensions with UMAP, with links back to the relevant Slack threads. A Go component handled Slack communication, while a Python backend made the OpenAI calls, with Redis Pub/Sub connecting them. The team used a Tilt-based hackathon template to let contributors start work quickly. Cline also describes plans to keep generating embeddings, share them with the community if permission allows, stream new content into the visualization, and show how discussions and themes evolve over time.

Key ideas
03:25

The team split the project between a Slack bot and an embedding explorer

The team received 10,000 embeddings of MLOps Community Slack conversations and asked how to make them useful. They pursued two connected tools. The first was a retrieval-based Slack bot that answered questions using Redis vector similarity to find relevant context. The second was an embeddings explorer with Slack integration. Cline coordinated the work and contributed to the networking and open-source Slack code, while Zhang Hong worked on the Python layer, Forest built the point-cloud implementation from scratch, and Brenda helped throughout the project and wrote a Medium post about it.

04:07

Redis connected the Go Slack service to the Python language-model backend

The Go component used LangChainGo and handled Slack communication, including watching for new content and responding to questions. Redis was used as a Pub/Sub layer between that Go server and the Python backend, which made the OpenAI calls. For an incoming question, the Python layer found the nearest Slack conversations using vector cosine-distance similarity and supplied a small set of neighbors to GPT-4 as context. Cline demonstrated the bot using his personal Slack credentials and said a future version should link answers directly to the relevant Slack conversation.

05:32

The browser visualization turned high-dimensional Slack embeddings into a navigable point cloud

The embeddings explorer compressed the high-dimensional Slack embedding space into three dimensions with UMAP. Each point represented a Slack conversation, and the interface allowed a user to move from the 3D visualization to the associated thread. Cline described this as a way to connect an abstract view of the data with the original discussion. The visualization was running in a browser, although his screen-sharing setup made the live demonstration less smooth. The project also included an interactive point-cloud implementation built by Forest.

07:03

A Tilt-based template helped the team start coding quickly during the 12-hour event

Cline had developed a hackathon template toolkit based on Tilt, and the team used it to get the project running quickly. The development workflow brought together the components they needed, including the Go service, Python layer, Redis, and a Postgres database. The setup let each person begin with the part of the system where they had the most experience. Cline presented this as a practical response to the limited time available in the one-day hackathon, rather than as a separate product feature.

07:39

The next version would keep the community's embedding set current

After winning, the team wanted to keep generating embeddings for new Slack threads. If the space owners and moderators gave permission, they also wanted to make the embedding set available to the community so people would not have to pay OpenAI again to process the same conversations. Cline described a real-time ingestion path from new Slack content through to the browser, with the OpenAI call expected to be the slowest part. This plan depended on permission and on building the remaining ingestion and browser updates.

08:20

Time-based views could show how community discussions and themes change

The team was considering a slider or animation for showing the point cloud over time. That view could make it possible to watch conversations emerge, along with themes and technologies being discussed in the MLOps Community Slack. Cline also wondered whether the visualization could provide some sense of which new ideas gained momentum. He described this as a future direction rather than a completed capability. The project was also intended to move toward deeper LangChainGo integration, while the current team structure kept OpenAI calls in the Python layer.

"We want to continue generating embeddings over new Slack thread content."07:39
Who should watch
  • You are building a short-lived hackathon project that needs a Go service, a Python model backend, and shared local development setup to work together quickly.
  • You want to use embeddings from internal chat data to build both question answering and visual exploration tools.
  • You are deciding how to keep a vector dataset current and how to connect a visualization back to the source conversations.