Either way, thanks for sharing!
23 karma · joined June 23, 2020
Either way, thanks for sharing!
Great work though, and here's to more experiments of this nature with nested data extraction. Kudos to the BAML team for coming up with such an awesome format, and kudos to the DSPy maintainers for designing such a hackable, usable framework!
Perhaps a lot of similar data engineering/analysis tasks (e.g., ETL, quantifying results, visualization) in the future can be much more easily delegated to LLMs with simple prompts via MCP servers of database systems (possibly multiple of them at the same time). It would be fascinating to see the programming patterns that emerge in this space as MCP clients/servers evolve alongside! We'd love to get feedback and hear more about how otler folks are getting LLMs to do cool stuff using database MCP servers!
Although I cannot comment too much SurrealDB's exact capabilities and performance at this point, I can definitely highlight that at the data modeling and query language-level: Kuzu's data model is a property graph model (so an actual "graph" model rather than a multi-model database) and Kuzu implements Cypher as its query language, which is already widely adopted in the industry and is very intuitive to write (for both humans and LLMs).
Although Surreal DB does indeed offer an embedded mode, Kuzu is by design 100% embedded, is super-lightweight and can run natively in many environments, such as browsers, Android applications, AWS Lambda (serverless) and we're especially designed to be a VERY Python-friendly graph database that integrates with pretty much all well-known Python libraries. Because of its columnar storage layer, Kuzu can seamlessly read and write different data formats, such as Panda/Polars DataFrame, Arrow tables, Iceberg or Delta Lake tables and seamlessly move data between advanced graph analytics libraries like NetworkX. For anything related to graph computation, Kuzu is likely to have all the right tools and utilities to help you solve the problem at hand.
In my opinion, it's a myth that databases are heavy, monolithic pieces of software, and hopefully, using Kuzu will demonstrate that it's totally possible to have data in your primary store but seamlessly move it to a performant graph storage layer when required, and move the results back with minimum friction and cost. Hope that helps!
The graph that you build is more for your own exploration and not for sharing with the outside world.
https://graindb.github.io/ https://github.com/graphflow/graphflow-columnar-techniques
Putting aside LLMs for a minute, even applications that do not need LLMs, but benefit from a graph database, can be unlocked to help build interactive UIs and visualizations that retain privacy on the client side without ever moving the data to a server. Loads of possibilities!
You're making a fair observation here and it's true for any high level query language - SQL and Cypher and interchangeable unless the queries are recursive, in which case Cypher's graph syntax (e.g., the Kleene star * or shortest paths) has several advantages. One could make the argument that Cypher is easier for LLMs to generate because the joins are less verbose (you simply express the join as a query pattern). This post is not necessarily about graph analytics. It's about demonstrating that it's very simple to develop a relatively complex application using LLMs and a database fully in-browser, which can potentially open up new use cases. I'm sure many people will come up with other creative ways putting these fully in-browser technologies, both graph-specific, and not, e.g., using vector search-based retrieval. In fact, there are already some of our users doing this right now.
How would you say this compares to DSPy? At first glance, ell is very application developer focused, while DSPy is more designed as a lower level framework on top of which others can build. Curious to see how this evolves for ell. Also, prompt "optimization" as per the docs is a fuzzy term - what is being optimized exactly? Basically, if I want to minimize my time doing prompt engineering (which I hate), is ell the framework for me?
Both libraries offer multilingual support for keywords, I believe, so that's a benefit to vector search where multilingual embedding models are rather expensive.
As some others here have pointed out, information extraction and searching with relevant context are the hardest parts of any search system, and it's clear that simply chunking vectors up and throwing them into a vector DB has limitations, no matter what the vector DB vendors tell you. Just like this article says, I hope that 2024 is the year where we actually get some papers that perform more rigorous evaluations of systems that use vector DBs, graph DBs, or a combination of them for building RAGs.