title: “Google Summer of Code 2025 - Beam ML Vector DB/Feature Store integrations” date: 2025-09-26 00:00:00 -0400 categories:
I have three objectives in mind when writing this blog post:
The goal of this project is to enhance Beam's Python SDK by developing connectors for vector databases like Milvus and feature stores like Tecton. These integrations will improve support for ML use cases such as Retrieval-Augmented Generation (RAG) and feature engineering. By bridging Beam with these systems, this project will attract more users, particularly in the ML community.
While Beam's Python SDK supports some vector databases, feature stores and embedding generators, the current integrations are limited to a few systems as mentioned in the tables down below. Expanding this ecosystem will provide more flexibility and richness for ML workflows particularly in feature engineering and RAG applications, potentially attracting more users, particularly in the ML community.
| Vector Database | Feature Store | Embedding Generator |
|---|---|---|
| BigQuery | Vertex AI | Vertex AI |
| AlloyDB | Feast | Hugging Face |
I chose to apply to Beam from among 180+ GSoC organizations because it aligns well with my passion for data processing systems that serve information retrieval systems and my core career values:
Freedom: Working on Beam supports open-source development, liberating developers from vendor lock-in through its unified programming model while enabling services like Project Shield to protect free speech globally
Innovation: Working on Beam allows engagement with cutting-edge data processing techniques and distributed computing paradigms
Accessibility: Working on Beam helps build open-source technology that makes powerful data processing capabilities available to all organizations regardless of size or resources. This accessibility enables projects like Project Shield to provide free protection to media, elections, and human rights websites worldwide
During my GSoC program, I focused on developing connectors for vector databases, feature stores, and embedding generators to enhance Beam's ML capabilities. Here are the artifacts I worked on and what remains to be done:
| Type | System | Artifact |
|---|---|---|
| Enrichment Handler | Milvus | PR #35216 PR #35577 PR #35467 |
| Sink I/O | Milvus | PR #35708 PR #35944 |
| Enrichment Handler | Tecton | PR #36062 |
| Sink I/O | Tecton | PR #36078 |
| Embedding Gen | OpenAI | PR #36081 |
| Embedding Gen | Anthropic | To Be Added |
Here are side-artifacts that are not directly linked to my project:
| Type | System | Artifact |
|---|---|---|
| AI Code Review | Gemini Code Assist | PR #35532 |
| Enrichment Handler | CloudSQL | PR #34398 PR #35473 |
| Pytest Markers | GitHub CI | PR #35655 PR #35740 PR #35816 |
For more granular contributions, checking out my ongoing Beam contributions.
My approach centered on community-driven design and iterative implementation, Originally inspired by my mentor‘s work. Here’s how it looked:
Here are some samples of those design docs:
| Component | Type | Design Document |
|---|---|---|
| Milvus | Vector Enrichment Handler | [Proposal][GSoC 2025] Milvus Vector Enrichment Handler for Beam |
| Milvus | Vector Sink I/O Connector | [Proposal][GSoC 2025] Milvus Vector Sink I/O Connector for Beam |
| Tecton | Feature Store Enrichment Handler | [Proposal][GSoC 2025] Tecton Feature Store Enrichment Handler for Beam |
| Tecton | Feature Store Sink I/O Connector | [Proposal][GSoC 2025] Tecton Feature Store Sink I/O Connector for Beam |
There were 2 places where challenges arose:
Running Docker TestContainers in Beam Self-Hosted CI Environment: The main challenge was that Beam runs in CI on Ubuntu 20.04, which caused compatibility and connectivity issues with Milvus TestContainers due to the Docker-in-Docker environment. After several experiments with trial and error, I eventually tested with Ubuntu latest (which at the time of writing this blog post is Ubuntu 25.04), and no issues arose. This version compatibility problem led to the container startup failures and network connectivity issues
Triggering and Modifying the PostCommit Python Workflows: This challenge magnified the above issue since for every experiment update to the given workflow, I had to do a round trip to my mentor to include those changes in the relevant workflow files and evaluate the results. I also wasn't aware that someone can trigger post-commit Python workflows by updating the trigger files in .github/trigger_files until near the middle of GSoC. I discovered there is actually a workflows README document in .github/workflows/README.md that was not referenced in the CONTRIBUTING.md file at the time of writing this post
It is observed that after we had a Milvus Enrichment Handler PR before even merging, we started to see community-driven contributions like this one that adds Qdrant. Qdrant is a competitor to Milvus in the vector space. This demonstrates how the project's momentum and visibility in the ML community space attracted contributors who wanted to expand the Beam ML ecosystem with additional vector database integrations.
If I have to boil it down across three dimensions, they would be:
If I have to boil them down to three, they would be:
If I have to boil them down to three, they would be:
I am now focusing on helping move the remaining artifacts in this project scope from the in-progress state to the merging state. After this, I would love to keep my contributions alive in Beam Python and Go SDK, to name a few. I would also love to connect with you all on my LinkedIn and GitHub.