Show HN: HelixDB – A graph database built on object storage

github.com

141 points by GeorgeCurtis 1 day ago

Hey HN, it’s been just over a year since we launched HelixDB (https://news.ycombinator.com/item?id=43975423), a project a friend and I started in college. It’s an OLTP graph database built on object-storage, with native vector search and full-text search (FTS).

Why graph, vector and FTS? Graph databases provide a natural cognitive model for data, vectors allow for a semantic understanding of the entities and relationships in the graph, and FTS provides more specific filtering. Many AI-driven applications attempt to combine all of these functionalities by stitching together multiple disconnected systems, but even then there’s no native way to perform joins or queries that span all systems. You still need to handle this logic at the application level.

Helix started as a graph DB, but we moved to a hybrid graph/vector approach after attempting to build an AI memory system, which led us down the GraphRAG and HybridRAG rabbit hole, where we would need separate graph and vector databases.

We knew scalability would be a challenge at each stage of our product's development, however our initial focus this past year was to prove out the product through local deployments and was only meant to be run on a single node. Scaling graph DBs remained a difficult and expensive problem we’d have to solve later. Some common ways other graph DBs solve scaling is by duplicating entire datasets across distributed machines (extremely expensive per node), or by sharding the data.

Sharding databases is effective and affordable, however, graph data doesn’t have explicit partitions like relational databases do. For example, sharding a relational DB involves splitting up tables. When it comes to graph DBs, the edges can span across any of the partitions, and hopping across multiple machines when traversing nodes is ineffective and computationally expensive.

Replicating graph DBs for high availability and better throughput drastically increases the operational cost of the db and still has a limit of how big you can vertically scale. The workload that we’re used for requires storing a huge amount of data for agents, where only a subset of that data is ever needed at any one time. So rather than having the whole thing in memory, we can store it all in object-storage and get the bits we need when they’re needed.

Agents benefit from better context, which is achieved from more and better data (more relationships etc). By using S3 as the persistence/data layer there is no limit to how big the graph can be or how many relationships you can have, and we can scale to serve throughput and requests by horizontally spinning up nodes and caching relevant subsets of the graph on each node. This way, you get extremely low latency for “hot” data and a p99 of ~100ms for writes and ~50ms for reads from cold storage (S3). Plus you get the benefit of dirt cheap storage.

Workloads that HelixDB is currently supporting: - Huge amounts of data (TBs) from which the agents need to search and traverse over - Offering affordable graph storage for companies where cost of graph data is a bottleneck - Consolidating multiple databases, enabling AI agents to have autonomy over companies, helping them become more autonomous. - AI memory - Company brains

We’re currently working on our own generalised AI memory layer which will use HelixDB under the hood and be completely open-source. Also, we’re finishing up on pre-filtering for vector search which will allow you to pre-filter based on relationships in the graph, metadata, and sub-graphs. And lastly, GA cloud will be available in the coming weeks.

If you want to run Helix locally (either on-disk or in-memory), you can find more info on our github (https://github.com/HelixDB/helix-db) or via our docs (https://docs.helix-db.com/database/local-development). If you’re interested in getting started with our distributed cloud, please email us founders@helix-db.com.

Many thanks! Comments and feedback welcome!

lennertjansen 37 minutes ago

Are you ACID? And does this version have multi-tenancy?

jesol 21 hours ago

I've been working on a graph database in Rust this year actually! I'd love to hear anything you can talk about wrt the query planner and/or how you decided to do cardinality estimation. I decided to go with an EAV graph which makes CE pretty complex, and it's been an interesting challenge to balance quality and speed and expressiveness in the query language

thedreammachine 16 hours ago

What kinds of graph shapes or query patterns do you feel are the worst case for object storage?

  • GeorgeCurtis 5 hours ago

    OLAP queries, deep multi-hops where latency is a priority.

    As long as the sub-graph you're trying to hop is cached, then there's no problem or latency issues. However, if you need to do a deep hop query, where all those nodes and edges are in cold storage, each hop costs ~50ms. So a 10-hop would take ~0.5 seconds.

    Again though, we find most people are using us for agentic workloads, so even this worst case scenario the LLMs make up the majority of the latency.

let_rec 9 hours ago

This seems like a great idea.

What reassurance can you offer devs that are hesitant to try a new data-store?

  • GeorgeCurtis 6 hours ago

    Can't imagine why they'd be hesitant, Helix is awesome, we've never had any data loss issues, and are completely ACID.

    I'd encourage them to start a local instance with claude/codex to build a mini project and see what it's like.

    • aitchnyu 40 minutes ago

      Does it work only on S3?

mentioum 1 day ago

We've been having some issues with intermittent performance on multi hop queries.

What's your p99 like for multi hops?

  • GeorgeCurtis 1 day ago

    In prod we see p99’s of <10ms ms for warm queries and around 50ms per hop for cold queries.

    • mentioum 1 day ago

      Hmmm... I'll get in touch. Got an email i can reach out to, there doesn't seem to be one listed on your website?

      I'm more concerned about if the p99s stay consistent when things get spikey.

      dgraph is fine otherwise...

      • GeorgeCurtis 23 hours ago

        Sure! You can email me personally at george@helix-db.com

  • zw17 1 day ago

    If your use case is OLAP based, please check it out PuppyGraph. It’s a graph query engine that sits on top of your Lakehouse (no ETL required). Our benchmark has shown consistently that 10-hop queries across billions of edges in <2 seconds. Our customers including some most data demanding companies like Coinbase, Datadog, Palo Alto Network, Netskope, AMD, etc.

    • GeorgeCurtis 1 day ago

      PuppyGraph is a good fit for OLAP for sure.

      We’re just two young founders sharing what we’ve been building, so I’ll take the drive-by competitor plug as a compliment :)

      Definitely a different focus though. Helix is OLTP, built for operational graph + vector workloads, especially apps/agent memory where low-latency traversals and writes are concerned.

      • jauntywundrkind 1 day ago

        And is open source.

        • fouc 11 hours ago

          where is puppygraph's source code?

    • mentioum 1 day ago

      It's not, its actually our prod db with direct user usage - we self host a large dgraph cluster. We have a very large number of people manage their car and car histories with us and host a full replica of the UK MOT Database.

      We're fine with clickhouse and redshift for the OLAP work we do. I've been looking at ParaQuery lately if I really want to speed that up.

      • GeorgeCurtis 1 day ago

        This sounds like a perfect usecase. Would love to learn more and see if we can help!

        email us: founders@helix-db.com

rgbrgb 20 hours ago

congrats on the launch! site and docs look great.

can you host this yourself or do you need to use helix-cloud? the chat thing on the side seems to push me to helix-cloud but it looks like that starts at like $600/mo which is above my experimentation budget.

looking for a db for an agent memory application and i'd probably start with something that's just self-hosted / freeish. postgres is working ok but I want to start ingesting server and chat logs.

  • GeorgeCurtis 18 hours ago

    You can definitely host it for free locally for now.

    We aim to launch our GA cloud at the end of this month, which will be much more affordable.

    • Onawa 15 hours ago

      Why do you say "for now"?

      • GeorgeCurtis 13 hours ago

        Lapse of communication. For now as in you’ll be able to host it without reading the source code.

        Soon you’ll be able to host it yourself AND have access to the source code

cjlm 1 day ago

Currently #5 on gdb-engines.com - definitely worth a look.

  • GeorgeCurtis 1 day ago

    yooo this is awesome. Didn't even realise :)

  • dig1 22 hours ago

    How rankings are calculated? HelixDB has zero feature scores, unlike e.g. JanusGraph which is at #27 or Neo4j at #1.

    • cjlm 21 hours ago

      The feature scores are from a paper cited on the site. The ranking features are proprietary to dissuade gaming but are a blend of open public data across a number of different sources.

caust1c 23 hours ago

Where's the source code for the database itself? Looks like the repo is just a client.

Congrats on the launch!

  • GeorgeCurtis 22 hours ago

    This was a TEMPORARY decision we made, and I wrote a bit about why we did this here: https://x.com/georgecurtiss/status/2060043184059912470

    We’re 100% committed to going back to open-source on an Apache 2.0 license as soon as possible. In the meantime, you can continue to deploy us completely for free, however you like, using the compiled docker container.

    • tao_oat 10 hours ago

      Unfortunately it's not possible to read this without an X account.

ymir_e 22 hours ago

Congrats on the launch George!

Looking forward to looking into the generalised AI memory layer when it comes out.

maxrumpf 1 day ago

does it support fts/vector on edges of the graph?

  • GeorgeCurtis 1 day ago

    Yes you can put vectors, full text data, secondary and range indexes on both nodes and edges.

brene 1 day ago

How does this compare vs. Turbopuffer?

  • GeorgeCurtis 1 day ago

    We see comparable results for vectors and FTS.

    For vector search we have warm and cold p99s of approx 20ms and 400ms respectively. For FTS, warm and cold query p99s of approx 15ms and 250ms respectively.

    Both of these benchmarks were run on 1m docs.

rajit 1 day ago

when will the graph memory layer be available?

  • GeorgeCurtis 23 hours ago

    We plan on launching end of month.

Bnjoroge 1 day ago

congrats! how does this compare to turbopuffer, surreal or other multi-model ones built on object storage or not

  • GeorgeCurtis 23 hours ago

    tpuffer is a vector/fts database. Surreal is a bit of an "everything database".

    We're a graph database with vector and FTS capabilities. Our vector and FTS benchmarks are comparable with tpuffer, but you would primarily use us for building whole applications, knowledge graphs, or AI memory/retrieval. Anything that is relationship intense.

    Let me know if this properly answers your question

    • Bnjoroge 4 hours ago

      it does, think I misunderstood your value prop. best of luck -definitely a real usecase.

raufakdemir 1 day ago

what language does this support? cypher/gremlin?

  • GeorgeCurtis 1 day ago

    We don't support cypher or gremlin. We can

    You can query HelixDB using JSON or directly in your programming language of choice by using our Rust, TypeScript, Go or Python SDKs. We’ve found AI is very good at working with the SDKs and JSON itself to query, making the development experience much better than before: https://docs.helix-db.com/database/querying