The best Hacker News stories from Show from the past day

Go back

Latest posts:

Show HN: Boldly go where Gradient Descent has never gone before with DiscoGrad

Trying to do gradient descent using automatic differentiation over branchy programs? Or to combine them with neural networks for end-to-end training? Then this might be interesting to you.<p>We develped DiscoGrad, a tool for automatic differentiation through C++ programs involving input-dependent control flow (e.g., "if (f(x) < c) { ... }", differentiating wrt. x) and randomness. Our initial motivation was to enable the use of gradient descent with simulations, which often rely heavily on such discrete branching. The latter makes plain autodiff mostly useless, since it can only account for the single path taken through the program. Our tool offers several backends that handle this situation, giving useful descent directions for optimization by accounting for alternative branches. Besides simulations, this problem arises in many other places, for example in deep learning when trying to combine imperative programs with neural networks.<p>In a nutshell, DiscoGrad applies an (LLVM-based) source-to-source transformation to your C++ program, adding some calls to our header library, which then handles the gradient computation. What sets it apart from similar tools/estimators is that it's fully automatic (no need to come up with a differentiable problem formulation/reparametrization) and that the branching condition can be any function of the program inputs (no need to know upfront what distribution the condition follows).<p>We're currently a team of two working on DiscoGrad as part of a research project, so don't expect to see production-grade code quality, but we do intend for it to be more than a throwaway research prototype. Use cases we've successfully tested include calibrating simulation models of epidemics or evacuation scenarios via gradient descent, and combining simulations with neural networks in an end-to-end trainable fashion.<p>We hope you find this interesting and useful, and we're happy to answer questions!

Show HN: Boldly go where Gradient Descent has never gone before with DiscoGrad

Trying to do gradient descent using automatic differentiation over branchy programs? Or to combine them with neural networks for end-to-end training? Then this might be interesting to you.<p>We develped DiscoGrad, a tool for automatic differentiation through C++ programs involving input-dependent control flow (e.g., "if (f(x) < c) { ... }", differentiating wrt. x) and randomness. Our initial motivation was to enable the use of gradient descent with simulations, which often rely heavily on such discrete branching. The latter makes plain autodiff mostly useless, since it can only account for the single path taken through the program. Our tool offers several backends that handle this situation, giving useful descent directions for optimization by accounting for alternative branches. Besides simulations, this problem arises in many other places, for example in deep learning when trying to combine imperative programs with neural networks.<p>In a nutshell, DiscoGrad applies an (LLVM-based) source-to-source transformation to your C++ program, adding some calls to our header library, which then handles the gradient computation. What sets it apart from similar tools/estimators is that it's fully automatic (no need to come up with a differentiable problem formulation/reparametrization) and that the branching condition can be any function of the program inputs (no need to know upfront what distribution the condition follows).<p>We're currently a team of two working on DiscoGrad as part of a research project, so don't expect to see production-grade code quality, but we do intend for it to be more than a throwaway research prototype. Use cases we've successfully tested include calibrating simulation models of epidemics or evacuation scenarios via gradient descent, and combining simulations with neural networks in an end-to-end trainable fashion.<p>We hope you find this interesting and useful, and we're happy to answer questions!

Show HN: Boldly go where Gradient Descent has never gone before with DiscoGrad

Trying to do gradient descent using automatic differentiation over branchy programs? Or to combine them with neural networks for end-to-end training? Then this might be interesting to you.<p>We develped DiscoGrad, a tool for automatic differentiation through C++ programs involving input-dependent control flow (e.g., "if (f(x) < c) { ... }", differentiating wrt. x) and randomness. Our initial motivation was to enable the use of gradient descent with simulations, which often rely heavily on such discrete branching. The latter makes plain autodiff mostly useless, since it can only account for the single path taken through the program. Our tool offers several backends that handle this situation, giving useful descent directions for optimization by accounting for alternative branches. Besides simulations, this problem arises in many other places, for example in deep learning when trying to combine imperative programs with neural networks.<p>In a nutshell, DiscoGrad applies an (LLVM-based) source-to-source transformation to your C++ program, adding some calls to our header library, which then handles the gradient computation. What sets it apart from similar tools/estimators is that it's fully automatic (no need to come up with a differentiable problem formulation/reparametrization) and that the branching condition can be any function of the program inputs (no need to know upfront what distribution the condition follows).<p>We're currently a team of two working on DiscoGrad as part of a research project, so don't expect to see production-grade code quality, but we do intend for it to be more than a throwaway research prototype. Use cases we've successfully tested include calibrating simulation models of epidemics or evacuation scenarios via gradient descent, and combining simulations with neural networks in an end-to-end trainable fashion.<p>We hope you find this interesting and useful, and we're happy to answer questions!

Show HN: Pong Wars with C#

Show HN: Resume Builder in Python

A no nonsense tool to build resumes in pure Python. No extra dependencies, no pip install etc.<p>Ths tool creates a clean, easy to read resume as a self contained HTML file You can easily convert this to PDF in your browser.<p>Let me know what you think! I created this to help me quickly tailer my resume for multiple jobs. Writing a resume in Google Docs just wasn't cutting it. Cheers!

Show HN: LogsQL – opinionated query language for logs

I don't like the existing query languages for Elasticsearch and Grafana Loki, because they are too awkward to use for typical logs' investigation cases. So I designed new query language - LogsQL - and wrote reference implementation for it as a part of VictoriaLogs - an open source database for logs. LogsQL is based on the following principles:<p>- Simplicity. It is easy to write typical queries over logs in it. For example, a single word `error` is a valid LogsQL query, which returns all the logs with the `error` word. Another example is `_time:5m error`, which returns all the logs with the 'error' word over the last 5 minutes.<p>- Composable building blocks similar to Unix pipes, which allow powerful filtering, transforming and calculating stats over the selected logs. For example, `_time:5m error | stats count() as rows` returns the number of logs with the `error` word over the last 5 minutes.<p>- Readability. Typical LogsQL queries must be easy to read and understand even for persons unfamiliar with it.<p>Take a look at LogsQL docs [1] and try using VictoriaLogs [2] in production. If you like Unix way and KISS design principle, then you'll enjoy LogsQL :)<p>[1] <a href="https://docs.victoriametrics.com/victorialogs/logsql/" rel="nofollow">https://docs.victoriametrics.com/victorialogs/logsql/</a><p>[2] <a href="https://docs.victoriametrics.com/victorialogs/" rel="nofollow">https://docs.victoriametrics.com/victorialogs/</a>

Show HN: ServerlessMaps – Host your own maps in the cloud

Have a look at the website with an example map, <a href="https://www.serverlessmaps.com/" rel="nofollow">https://www.serverlessmaps.com/</a>, or read the accompanying blog post <a href="https://tobilg.com/serverless-maps-for-fun-and-profit" rel="nofollow">https://tobilg.com/serverless-maps-for-fun-and-profit</a>

Show HN: ServerlessMaps – Host your own maps in the cloud

Have a look at the website with an example map, <a href="https://www.serverlessmaps.com/" rel="nofollow">https://www.serverlessmaps.com/</a>, or read the accompanying blog post <a href="https://tobilg.com/serverless-maps-for-fun-and-profit" rel="nofollow">https://tobilg.com/serverless-maps-for-fun-and-profit</a>

Show HN: I built an Obsidian plugin to create notes from BibTeX

With this plugin you can create literature notes from BibTeX entries, display formatted reference lists, and instantly generate citations.

Show HN: I built an Obsidian plugin to create notes from BibTeX

With this plugin you can create literature notes from BibTeX entries, display formatted reference lists, and instantly generate citations.

Show HN: I built an Obsidian plugin to create notes from BibTeX

With this plugin you can create literature notes from BibTeX entries, display formatted reference lists, and instantly generate citations.

Show HN: Open-source real time data framework for LLM applications

Hey HN, I am the founder of Tensorlake. Prototyping LLM applications have become a lot easier, building decision making LLM applications that work on constantly updating data is still very challenging in production settings. The systems engineering problems that we have seen people face are -<p>1. Reliably process ingested content in real time if the application is sensitive to freshness of information. 2. Being able to bring in any kind of model, and run different parts of the pipeline on GPUs and CPUs. 3. Fault Tolerance to ingestion spike, compute infrastructure failure. 4. Scaling compute, reads and writes as data volume grows.<p>We are built and open sourced Indexify(<a href="https://github.com/tensorlakeai/indexify">https://github.com/tensorlakeai/indexify</a>), to provide a compute engine and data frameworks to LLM applications that work on dynamic environments where data is updated frequently, or new data is constantly created.<p>Developers describe a declarative extraction graph, with stages that extract or transform unstructured data. Data passes from one stage to another, and end up finally at sinks like Vector Databases, Blob Stores or Structured DataStores like Postgres.<p>Examples - 1. Graph that does Video Understanding could be: Ingestion -> Audio Extraction -> Transcriptions -> NER and Embedding. And another path, Ingestion -> Key Frame Extraction -> Object and Scene Description (<a href="https://github.com/tensorlakeai/indexify/blob/main/docs/docs/examples/Video_RAG.ipynb">https://github.com/tensorlakeai/indexify/blob/main/docs/docs...</a>) 2. Structured Extraction and Search on PDF: PDF -> Markdown -> Chunking -> Embedding, NER (<a href="https://github.com/tensorlakeai/indexify/blob/main/docs/docs/examples/SEC_10_K_docs.ipynb">https://github.com/tensorlakeai/indexify/blob/main/docs/docs...</a>)<p>Application Layer - Indexify works as a retriever in the LLM application stack, so you can use it pretty easily with your existing applications. Call the retriever API over HTTP to get extracted data from Indexify, and that's pretty much all the integration you need to search or retrieve data.<p>You could use composable extractors and chain them together to build complex real time data pipelines that work with any unstructured data.<p>Since this is HN, I have the liberty to talk some technical details :)<p>How is it Real Time? We built a replicated state machine with Raft to process 10s of 1000s of ingestion events every second. The storage and network layer is optimized for progressing the scheduler to create tasks under 2 milliseconds. The architecture of the scheduler is very similar to that of Google's Borg and Hashicorp's Nomad. The architecture we have can be extended to parallel scheduling on multiple machines and have a centralized sequencer like Nomad.<p>Storage Systems: Since the focus is unstructured data, we wanted to be able to support storing and extracting from large files and be able to scale horizontally as data volume grows. Indexify uses blob stores under the hood to store unstructured data. If a graph creates embeddings, they are automatically stored in Vector Stores, and structured data is stored in structured stores like Postgres. Under the hood we have Rust traits between the ingestion server and the data stores, so we can easily implement support for other vector stores.<p>Sync Vector and Structured Store - Indexify also syncs structured data with vector store, if it detects the presence of both in a graph. This allows to use pre-filtering capabilities to narrow down the search space for better results.<p>APIs - Indexify exposes semantic search APIs over vector store, and a read SQL queries over semi-structured data. We can automatically figure out the schema of the structured data and expose a SQL interface on top. Behind the scenes we parse SQL and have a layer which scans and reads databases to slice and dice the rows. So BI tools should work out of the box on extracted data. We have Python and Typescript libraries to make it easy for people to build new or integrate into existing applications.<p>Thoughts? Would love to hear if you think this would be useful to what you are building!

Show HN: Open-source real time data framework for LLM applications

Hey HN, I am the founder of Tensorlake. Prototyping LLM applications have become a lot easier, building decision making LLM applications that work on constantly updating data is still very challenging in production settings. The systems engineering problems that we have seen people face are -<p>1. Reliably process ingested content in real time if the application is sensitive to freshness of information. 2. Being able to bring in any kind of model, and run different parts of the pipeline on GPUs and CPUs. 3. Fault Tolerance to ingestion spike, compute infrastructure failure. 4. Scaling compute, reads and writes as data volume grows.<p>We are built and open sourced Indexify(<a href="https://github.com/tensorlakeai/indexify">https://github.com/tensorlakeai/indexify</a>), to provide a compute engine and data frameworks to LLM applications that work on dynamic environments where data is updated frequently, or new data is constantly created.<p>Developers describe a declarative extraction graph, with stages that extract or transform unstructured data. Data passes from one stage to another, and end up finally at sinks like Vector Databases, Blob Stores or Structured DataStores like Postgres.<p>Examples - 1. Graph that does Video Understanding could be: Ingestion -> Audio Extraction -> Transcriptions -> NER and Embedding. And another path, Ingestion -> Key Frame Extraction -> Object and Scene Description (<a href="https://github.com/tensorlakeai/indexify/blob/main/docs/docs/examples/Video_RAG.ipynb">https://github.com/tensorlakeai/indexify/blob/main/docs/docs...</a>) 2. Structured Extraction and Search on PDF: PDF -> Markdown -> Chunking -> Embedding, NER (<a href="https://github.com/tensorlakeai/indexify/blob/main/docs/docs/examples/SEC_10_K_docs.ipynb">https://github.com/tensorlakeai/indexify/blob/main/docs/docs...</a>)<p>Application Layer - Indexify works as a retriever in the LLM application stack, so you can use it pretty easily with your existing applications. Call the retriever API over HTTP to get extracted data from Indexify, and that's pretty much all the integration you need to search or retrieve data.<p>You could use composable extractors and chain them together to build complex real time data pipelines that work with any unstructured data.<p>Since this is HN, I have the liberty to talk some technical details :)<p>How is it Real Time? We built a replicated state machine with Raft to process 10s of 1000s of ingestion events every second. The storage and network layer is optimized for progressing the scheduler to create tasks under 2 milliseconds. The architecture of the scheduler is very similar to that of Google's Borg and Hashicorp's Nomad. The architecture we have can be extended to parallel scheduling on multiple machines and have a centralized sequencer like Nomad.<p>Storage Systems: Since the focus is unstructured data, we wanted to be able to support storing and extracting from large files and be able to scale horizontally as data volume grows. Indexify uses blob stores under the hood to store unstructured data. If a graph creates embeddings, they are automatically stored in Vector Stores, and structured data is stored in structured stores like Postgres. Under the hood we have Rust traits between the ingestion server and the data stores, so we can easily implement support for other vector stores.<p>Sync Vector and Structured Store - Indexify also syncs structured data with vector store, if it detects the presence of both in a graph. This allows to use pre-filtering capabilities to narrow down the search space for better results.<p>APIs - Indexify exposes semantic search APIs over vector store, and a read SQL queries over semi-structured data. We can automatically figure out the schema of the structured data and expose a SQL interface on top. Behind the scenes we parse SQL and have a layer which scans and reads databases to slice and dice the rows. So BI tools should work out of the box on extracted data. We have Python and Typescript libraries to make it easy for people to build new or integrate into existing applications.<p>Thoughts? Would love to hear if you think this would be useful to what you are building!

Show HN: Spot – Simple, cross-platform, reactive desktop GUI toolkit for Go

Hi HN, I’m excited to share Spot, a simple, cross-platform, React-like GUI library for Go. It is just a few days old and has lots of missing features but I'm happy with the results so far, and looking for some design feedback.<p>Spot is designed to be easy to use and provide a consistent API across different platforms (mainly Mac & Linux). It’s inspired by React, but written in Go, aiming to combine the best of both worlds: the easy tooling & performance of Go with a modern, reactive approach to UI development.<p>Key features:<p>- Cross-platform: Leveraging FLTK[1] & Cocoa[2], Spot works on Mac, Linux, and the BSDs with plans for native Windows support in the future.<p>- Reactive UI: Adopts a React-like model for building UIs, making it intuitive for those familiar with reactive frameworks.<p>- Traditional, native widget set: Utilizes native widgets where available to provide a more traditional look and feel.<p>Why I built it:<p>I was searching for a cross-platform GUI toolkit for Go that had a more traditional appearance, and none of the existing options quite met my needs. I then started playing with Gocoa and go-fltk and suddenly I worked on an experiment to see how challenging it would be to build something like React in Go, and it kinda evolved into Spot. ¯\_(ツ)_/¯<p>In 2024, is there a still place for classic desktop GUIs—even with a modern spin?<p>I’d love to hear your thoughts, feedback, and any suggestions for improvement. Also, contributions are very welcome.<p>Thank you for checking it out!<p>[1] <a href="https://github.com/pwiecz/go-fltk">https://github.com/pwiecz/go-fltk</a><p>[2] <a href="https://github.com/roblillack/gocoa">https://github.com/roblillack/gocoa</a>

Show HN: Spot – Simple, cross-platform, reactive desktop GUI toolkit for Go

Hi HN, I’m excited to share Spot, a simple, cross-platform, React-like GUI library for Go. It is just a few days old and has lots of missing features but I'm happy with the results so far, and looking for some design feedback.<p>Spot is designed to be easy to use and provide a consistent API across different platforms (mainly Mac & Linux). It’s inspired by React, but written in Go, aiming to combine the best of both worlds: the easy tooling & performance of Go with a modern, reactive approach to UI development.<p>Key features:<p>- Cross-platform: Leveraging FLTK[1] & Cocoa[2], Spot works on Mac, Linux, and the BSDs with plans for native Windows support in the future.<p>- Reactive UI: Adopts a React-like model for building UIs, making it intuitive for those familiar with reactive frameworks.<p>- Traditional, native widget set: Utilizes native widgets where available to provide a more traditional look and feel.<p>Why I built it:<p>I was searching for a cross-platform GUI toolkit for Go that had a more traditional appearance, and none of the existing options quite met my needs. I then started playing with Gocoa and go-fltk and suddenly I worked on an experiment to see how challenging it would be to build something like React in Go, and it kinda evolved into Spot. ¯\_(ツ)_/¯<p>In 2024, is there a still place for classic desktop GUIs—even with a modern spin?<p>I’d love to hear your thoughts, feedback, and any suggestions for improvement. Also, contributions are very welcome.<p>Thank you for checking it out!<p>[1] <a href="https://github.com/pwiecz/go-fltk">https://github.com/pwiecz/go-fltk</a><p>[2] <a href="https://github.com/roblillack/gocoa">https://github.com/roblillack/gocoa</a>

Show HN: Spot – Simple, cross-platform, reactive desktop GUI toolkit for Go

Hi HN, I’m excited to share Spot, a simple, cross-platform, React-like GUI library for Go. It is just a few days old and has lots of missing features but I'm happy with the results so far, and looking for some design feedback.<p>Spot is designed to be easy to use and provide a consistent API across different platforms (mainly Mac & Linux). It’s inspired by React, but written in Go, aiming to combine the best of both worlds: the easy tooling & performance of Go with a modern, reactive approach to UI development.<p>Key features:<p>- Cross-platform: Leveraging FLTK[1] & Cocoa[2], Spot works on Mac, Linux, and the BSDs with plans for native Windows support in the future.<p>- Reactive UI: Adopts a React-like model for building UIs, making it intuitive for those familiar with reactive frameworks.<p>- Traditional, native widget set: Utilizes native widgets where available to provide a more traditional look and feel.<p>Why I built it:<p>I was searching for a cross-platform GUI toolkit for Go that had a more traditional appearance, and none of the existing options quite met my needs. I then started playing with Gocoa and go-fltk and suddenly I worked on an experiment to see how challenging it would be to build something like React in Go, and it kinda evolved into Spot. ¯\_(ツ)_/¯<p>In 2024, is there a still place for classic desktop GUIs—even with a modern spin?<p>I’d love to hear your thoughts, feedback, and any suggestions for improvement. Also, contributions are very welcome.<p>Thank you for checking it out!<p>[1] <a href="https://github.com/pwiecz/go-fltk">https://github.com/pwiecz/go-fltk</a><p>[2] <a href="https://github.com/roblillack/gocoa">https://github.com/roblillack/gocoa</a>

Show HN: Spot – Simple, cross-platform, reactive desktop GUI toolkit for Go

Hi HN, I’m excited to share Spot, a simple, cross-platform, React-like GUI library for Go. It is just a few days old and has lots of missing features but I'm happy with the results so far, and looking for some design feedback.<p>Spot is designed to be easy to use and provide a consistent API across different platforms (mainly Mac & Linux). It’s inspired by React, but written in Go, aiming to combine the best of both worlds: the easy tooling & performance of Go with a modern, reactive approach to UI development.<p>Key features:<p>- Cross-platform: Leveraging FLTK[1] & Cocoa[2], Spot works on Mac, Linux, and the BSDs with plans for native Windows support in the future.<p>- Reactive UI: Adopts a React-like model for building UIs, making it intuitive for those familiar with reactive frameworks.<p>- Traditional, native widget set: Utilizes native widgets where available to provide a more traditional look and feel.<p>Why I built it:<p>I was searching for a cross-platform GUI toolkit for Go that had a more traditional appearance, and none of the existing options quite met my needs. I then started playing with Gocoa and go-fltk and suddenly I worked on an experiment to see how challenging it would be to build something like React in Go, and it kinda evolved into Spot. ¯\_(ツ)_/¯<p>In 2024, is there a still place for classic desktop GUIs—even with a modern spin?<p>I’d love to hear your thoughts, feedback, and any suggestions for improvement. Also, contributions are very welcome.<p>Thank you for checking it out!<p>[1] <a href="https://github.com/pwiecz/go-fltk">https://github.com/pwiecz/go-fltk</a><p>[2] <a href="https://github.com/roblillack/gocoa">https://github.com/roblillack/gocoa</a>

Show HN: We open sourced our entire text-to-SQL product

Long story short: We (Dataherald) just open-sourced our entire codebase, including the core engine, the clients that interact with it and the backend application layer for authentication and RBAC. You can now use the full solution to build text-to-SQL into your product.<p>The Problem: modern LLMs write syntactically correct SQL, but they struggle with real-world relational data. This is because real world data and schema is messy, natural language can often be ambiguous and LLMs are not trained on your specific dataset.<p>Solution: The core NL-to-SQL engine in Dataherald is an LLM based agent which uses Chain of Thought (CoT) reasoning and a number of different tools to generate high accuracy SQL from a given user prompt. The engine achieves this by:<p>- Collecting context at configuration from the database and sources such as data dictionaries and unstructured documents which are stored in a data store or a vector DB and injected if relevant<p>- Allowing users to upload sample NL <> SQL pairs (golden SQL) which can be used in few shot prompting or to fine-tune an NL-to-SQL LLM for that specific dataset<p>- Executing the SQL against the DB to get a few sample rows and recover from errors<p>- Using an evaluator to assign a confidence score to the generated SQL<p>The repo includes four services <a href="https://github.com/Dataherald/dataherald/tree/main/services">https://github.com/Dataherald/dataherald/tree/main/services</a>:<p>1- Engine: The core service which includes the LLM agent, vector stores and DB connectors.<p>2- Admin Console: a NextJS front-end for configuring the engine and observability.<p>3- Enterprise Backend: Wraps the core engine, adding authentication, caching, and APIs for the frontend.<p>4- Slackbot: Integrate Dataherald directly into your Slack workflow for on-the-fly data exploration.<p>Would love to hear from the community on building natural language interfaces to relational data. Anyone live in production without a human in the loop? Thoughts on how to improve performance without spending weeks on model training?

Show HN: We open sourced our entire text-to-SQL product

Long story short: We (Dataherald) just open-sourced our entire codebase, including the core engine, the clients that interact with it and the backend application layer for authentication and RBAC. You can now use the full solution to build text-to-SQL into your product.<p>The Problem: modern LLMs write syntactically correct SQL, but they struggle with real-world relational data. This is because real world data and schema is messy, natural language can often be ambiguous and LLMs are not trained on your specific dataset.<p>Solution: The core NL-to-SQL engine in Dataherald is an LLM based agent which uses Chain of Thought (CoT) reasoning and a number of different tools to generate high accuracy SQL from a given user prompt. The engine achieves this by:<p>- Collecting context at configuration from the database and sources such as data dictionaries and unstructured documents which are stored in a data store or a vector DB and injected if relevant<p>- Allowing users to upload sample NL <> SQL pairs (golden SQL) which can be used in few shot prompting or to fine-tune an NL-to-SQL LLM for that specific dataset<p>- Executing the SQL against the DB to get a few sample rows and recover from errors<p>- Using an evaluator to assign a confidence score to the generated SQL<p>The repo includes four services <a href="https://github.com/Dataherald/dataherald/tree/main/services">https://github.com/Dataherald/dataherald/tree/main/services</a>:<p>1- Engine: The core service which includes the LLM agent, vector stores and DB connectors.<p>2- Admin Console: a NextJS front-end for configuring the engine and observability.<p>3- Enterprise Backend: Wraps the core engine, adding authentication, caching, and APIs for the frontend.<p>4- Slackbot: Integrate Dataherald directly into your Slack workflow for on-the-fly data exploration.<p>Would love to hear from the community on building natural language interfaces to relational data. Anyone live in production without a human in the loop? Thoughts on how to improve performance without spending weeks on model training?

Show HN: We open sourced our entire text-to-SQL product

Long story short: We (Dataherald) just open-sourced our entire codebase, including the core engine, the clients that interact with it and the backend application layer for authentication and RBAC. You can now use the full solution to build text-to-SQL into your product.<p>The Problem: modern LLMs write syntactically correct SQL, but they struggle with real-world relational data. This is because real world data and schema is messy, natural language can often be ambiguous and LLMs are not trained on your specific dataset.<p>Solution: The core NL-to-SQL engine in Dataherald is an LLM based agent which uses Chain of Thought (CoT) reasoning and a number of different tools to generate high accuracy SQL from a given user prompt. The engine achieves this by:<p>- Collecting context at configuration from the database and sources such as data dictionaries and unstructured documents which are stored in a data store or a vector DB and injected if relevant<p>- Allowing users to upload sample NL <> SQL pairs (golden SQL) which can be used in few shot prompting or to fine-tune an NL-to-SQL LLM for that specific dataset<p>- Executing the SQL against the DB to get a few sample rows and recover from errors<p>- Using an evaluator to assign a confidence score to the generated SQL<p>The repo includes four services <a href="https://github.com/Dataherald/dataherald/tree/main/services">https://github.com/Dataherald/dataherald/tree/main/services</a>:<p>1- Engine: The core service which includes the LLM agent, vector stores and DB connectors.<p>2- Admin Console: a NextJS front-end for configuring the engine and observability.<p>3- Enterprise Backend: Wraps the core engine, adding authentication, caching, and APIs for the frontend.<p>4- Slackbot: Integrate Dataherald directly into your Slack workflow for on-the-fly data exploration.<p>Would love to hear from the community on building natural language interfaces to relational data. Anyone live in production without a human in the loop? Thoughts on how to improve performance without spending weeks on model training?

< 1 2 3 ... 90 91 92 93 94 ... 719 720 721 >