The best Hacker News stories from Show from the past day

Go back

Latest posts:

Show HN: A dynamic C (Hot reloading) module-based Web Framework

Show HN: Documind – Open-source AI tool to turn documents into structured data

Documind is an open-source tool that turns documents into structured data using AI.<p>What it does:<p>- Extracts specific data from PDFs based on your custom schema - Returns clean, structured JSON that's ready to use - Works with just a PDF link + your schema definition<p>Just run npm install documind to get started.

Show HN: Documind – Open-source AI tool to turn documents into structured data

Documind is an open-source tool that turns documents into structured data using AI.<p>What it does:<p>- Extracts specific data from PDFs based on your custom schema - Returns clean, structured JSON that's ready to use - Works with just a PDF link + your schema definition<p>Just run npm install documind to get started.

Show HN: The App I Built to Help Manage My Diabetes

Hi HN,<p>I’m Joshua, a student, and I’m excited (and a little nervous) to share something deeply personal that I’ve been working on: Islet, my diabetes management app powered by GPT-4o-mini. It’s now on the App Store, but I want to be upfront—it’s still very much in its early stages, with a lot more to go.<p>I was diagnosed with Type 1 diabetes while rowing competitively, and that moment changed everything. It wasn’t just the practical challenges of managing insulin, carb counts, and blood sugars; it fundamentally shifted how I see myself and the world. It forced me to slow down, prioritise my health, and take control in ways I never had to before. My outlook on life became more focused on resilience, adaptability, and finding solutions to problems that truly matter.<p>This app started as a pet project over the summer, a way to see what I could create using ChatGPT and explore the potential of LLMs to help with real-world challenges. At first, it was just about making my own diabetes management easier—understanding patterns in blood sugars, planning meals, and adjusting routines. But as I worked on it, I realised it could do more.<p>Right now, Islet offers personalised meal suggestions, tracks activity, and provides basic insights based on the data you enter. It’s far from complete. Even so, the process of building Islet has already taught me so much about how powerful AI can be in creating personal, meaningful tools.<p>This project is deeply tied to how my diagnosis changed me. It’s about more than managing diabetes, it’s about showing how anyone, even a student experimenting over the summer, can use AI to potentially solve real, personal problems. I believe tools like LLMs have the power to democratise solutions for all, making life just a bit easier for all of us.<p>If you’re curious, you can check it out here: <a href="https://apps.apple.com/gb/app/islet-diabetes/id6453168642" rel="nofollow">https://apps.apple.com/gb/app/islet-diabetes/id6453168642</a>. I’d love to hear your thoughts what works, what doesn’t, and what features you think would make it better. Your input could help shape the next steps for Islet.<p>Thanks for reading !<p>joshua

Show HN: The App I Built to Help Manage My Diabetes

Hi HN,<p>I’m Joshua, a student, and I’m excited (and a little nervous) to share something deeply personal that I’ve been working on: Islet, my diabetes management app powered by GPT-4o-mini. It’s now on the App Store, but I want to be upfront—it’s still very much in its early stages, with a lot more to go.<p>I was diagnosed with Type 1 diabetes while rowing competitively, and that moment changed everything. It wasn’t just the practical challenges of managing insulin, carb counts, and blood sugars; it fundamentally shifted how I see myself and the world. It forced me to slow down, prioritise my health, and take control in ways I never had to before. My outlook on life became more focused on resilience, adaptability, and finding solutions to problems that truly matter.<p>This app started as a pet project over the summer, a way to see what I could create using ChatGPT and explore the potential of LLMs to help with real-world challenges. At first, it was just about making my own diabetes management easier—understanding patterns in blood sugars, planning meals, and adjusting routines. But as I worked on it, I realised it could do more.<p>Right now, Islet offers personalised meal suggestions, tracks activity, and provides basic insights based on the data you enter. It’s far from complete. Even so, the process of building Islet has already taught me so much about how powerful AI can be in creating personal, meaningful tools.<p>This project is deeply tied to how my diagnosis changed me. It’s about more than managing diabetes, it’s about showing how anyone, even a student experimenting over the summer, can use AI to potentially solve real, personal problems. I believe tools like LLMs have the power to democratise solutions for all, making life just a bit easier for all of us.<p>If you’re curious, you can check it out here: <a href="https://apps.apple.com/gb/app/islet-diabetes/id6453168642" rel="nofollow">https://apps.apple.com/gb/app/islet-diabetes/id6453168642</a>. I’d love to hear your thoughts what works, what doesn’t, and what features you think would make it better. Your input could help shape the next steps for Islet.<p>Thanks for reading !<p>joshua

Show HN: Tips.io – A Tailwind playground with AI, page management, and theming

Hi HN!<p>My name is Nick and this is my fun side project. Please lay it on me. HN can think of Tips.io as a cracked out Tailwind Playground that has page management and amazing AI integration.<p>There are a few core ideas:<p>1) The HTML is the CMS<p>There are no fields or restrictions. Just hover, click, and start tweaking any HTML. Also, certain elements you click will have special easy edit abilities:<p>- <img> auto creates an uploader, stock photo picker (or HTML)<p>- <video> auto creates an uploader, stock video picker (or HTML)<p>- <svg> auto creates a big icon picker (or HTML)<p>- <div class="prose"> auto creates a WYSIWYG Editor (or HTML)<p>2) Slices<p>Think of these as just individual HTML sections of a page or lil baby single-file components. They are self-contained and isolated so you drag them around easily. The real power comes from reuse across your pages and linking them (aka, one HTML footer updates globally). You can also use "slices" from any other tips.io project for quickly expanding your site with more design options.<p>3) AI Elements, Not Pages<p>Another cool concept is you can select any element on an HTML slice an edit that individually vs re-streaming/rebuilding and entire component every time. We support 5 different AI models right now. Some other really intense/cool AI integration is coming soon.<p>4) Tailwind Everything, No Build Step, & Theming<p>We have a custom "themer" to make creating Tailwind config files near instant with real-time font trying, color palettes/preset trying, and more. All our Tailwind is automatic and requires zero config instantly. The same Tailwind that magic runs client-side will run server-side so quick no one knows a build step is happening. Tailwind and AI are also a match made in heaven.<p>Other features:<p>- Animations - Zoomable page tree - Basic Forms (yes on your static site!) - Analytics - Redirects, site passwords, and much more.<p>Tech:<p>- 100% Cloudflare Workers - Svelte - UnoCSS<p>Some resources:<p>- Promo video: <a href="https://www.youtube.com/watch?v=s8U2rJJX-rk" rel="nofollow">https://www.youtube.com/watch?v=s8U2rJJX-rk</a> - Tutorial & demo video: <a href="https://tips.io/tutorial" rel="nofollow">https://tips.io/tutorial</a> - Just launch: <a href="https://new.tips.io" rel="nofollow">https://new.tips.io</a>

Show HN: Tips.io – A Tailwind playground with AI, page management, and theming

Hi HN!<p>My name is Nick and this is my fun side project. Please lay it on me. HN can think of Tips.io as a cracked out Tailwind Playground that has page management and amazing AI integration.<p>There are a few core ideas:<p>1) The HTML is the CMS<p>There are no fields or restrictions. Just hover, click, and start tweaking any HTML. Also, certain elements you click will have special easy edit abilities:<p>- <img> auto creates an uploader, stock photo picker (or HTML)<p>- <video> auto creates an uploader, stock video picker (or HTML)<p>- <svg> auto creates a big icon picker (or HTML)<p>- <div class="prose"> auto creates a WYSIWYG Editor (or HTML)<p>2) Slices<p>Think of these as just individual HTML sections of a page or lil baby single-file components. They are self-contained and isolated so you drag them around easily. The real power comes from reuse across your pages and linking them (aka, one HTML footer updates globally). You can also use "slices" from any other tips.io project for quickly expanding your site with more design options.<p>3) AI Elements, Not Pages<p>Another cool concept is you can select any element on an HTML slice an edit that individually vs re-streaming/rebuilding and entire component every time. We support 5 different AI models right now. Some other really intense/cool AI integration is coming soon.<p>4) Tailwind Everything, No Build Step, & Theming<p>We have a custom "themer" to make creating Tailwind config files near instant with real-time font trying, color palettes/preset trying, and more. All our Tailwind is automatic and requires zero config instantly. The same Tailwind that magic runs client-side will run server-side so quick no one knows a build step is happening. Tailwind and AI are also a match made in heaven.<p>Other features:<p>- Animations - Zoomable page tree - Basic Forms (yes on your static site!) - Analytics - Redirects, site passwords, and much more.<p>Tech:<p>- 100% Cloudflare Workers - Svelte - UnoCSS<p>Some resources:<p>- Promo video: <a href="https://www.youtube.com/watch?v=s8U2rJJX-rk" rel="nofollow">https://www.youtube.com/watch?v=s8U2rJJX-rk</a> - Tutorial & demo video: <a href="https://tips.io/tutorial" rel="nofollow">https://tips.io/tutorial</a> - Just launch: <a href="https://new.tips.io" rel="nofollow">https://new.tips.io</a>

Show HN: Tips.io – A Tailwind playground with AI, page management, and theming

Hi HN!<p>My name is Nick and this is my fun side project. Please lay it on me. HN can think of Tips.io as a cracked out Tailwind Playground that has page management and amazing AI integration.<p>There are a few core ideas:<p>1) The HTML is the CMS<p>There are no fields or restrictions. Just hover, click, and start tweaking any HTML. Also, certain elements you click will have special easy edit abilities:<p>- <img> auto creates an uploader, stock photo picker (or HTML)<p>- <video> auto creates an uploader, stock video picker (or HTML)<p>- <svg> auto creates a big icon picker (or HTML)<p>- <div class="prose"> auto creates a WYSIWYG Editor (or HTML)<p>2) Slices<p>Think of these as just individual HTML sections of a page or lil baby single-file components. They are self-contained and isolated so you drag them around easily. The real power comes from reuse across your pages and linking them (aka, one HTML footer updates globally). You can also use "slices" from any other tips.io project for quickly expanding your site with more design options.<p>3) AI Elements, Not Pages<p>Another cool concept is you can select any element on an HTML slice an edit that individually vs re-streaming/rebuilding and entire component every time. We support 5 different AI models right now. Some other really intense/cool AI integration is coming soon.<p>4) Tailwind Everything, No Build Step, & Theming<p>We have a custom "themer" to make creating Tailwind config files near instant with real-time font trying, color palettes/preset trying, and more. All our Tailwind is automatic and requires zero config instantly. The same Tailwind that magic runs client-side will run server-side so quick no one knows a build step is happening. Tailwind and AI are also a match made in heaven.<p>Other features:<p>- Animations - Zoomable page tree - Basic Forms (yes on your static site!) - Analytics - Redirects, site passwords, and much more.<p>Tech:<p>- 100% Cloudflare Workers - Svelte - UnoCSS<p>Some resources:<p>- Promo video: <a href="https://www.youtube.com/watch?v=s8U2rJJX-rk" rel="nofollow">https://www.youtube.com/watch?v=s8U2rJJX-rk</a> - Tutorial & demo video: <a href="https://tips.io/tutorial" rel="nofollow">https://tips.io/tutorial</a> - Just launch: <a href="https://new.tips.io" rel="nofollow">https://new.tips.io</a>

Show HN: Nova JavaScript Engine

We're building a different kind of JavaScript engine, based on data-oriented design and willingness to try something quite out of left field. This is most concretely visible in our major architectural choices:<p>1. All data allocated on the JavaScript heap is placed into a type-specific vector. Numbers go into the numbers vector, strings into the strings vector, and so on.<p>2. All heap references are type-discriminated indexes: A heap number is identified by its discriminant value and the index to which it points to in the numbers vector.<p>3. Objects are also split up into object kind -specific vectors. Ordinary objects go into one vector, Arrays go into another, DataViews into yet another, and so on.<p>4. Unordinary objects' heap data does not contain ordinary object data but instead they contain an optional index to the ordinary objects vector.<p>5. Objects are aggressively split into parts to avoid common use-cases having to reading parts that are known to be unused.<p>If this sounds interesting, I've written a few blog posts on the internals of Nova over in our blog, you can jump into that here: <a href="https://trynova.dev/blog/what-is-the-nova-javascript-engine" rel="nofollow">https://trynova.dev/blog/what-is-the-nova-javascript-engine</a>

Show HN: Nova JavaScript Engine

We're building a different kind of JavaScript engine, based on data-oriented design and willingness to try something quite out of left field. This is most concretely visible in our major architectural choices:<p>1. All data allocated on the JavaScript heap is placed into a type-specific vector. Numbers go into the numbers vector, strings into the strings vector, and so on.<p>2. All heap references are type-discriminated indexes: A heap number is identified by its discriminant value and the index to which it points to in the numbers vector.<p>3. Objects are also split up into object kind -specific vectors. Ordinary objects go into one vector, Arrays go into another, DataViews into yet another, and so on.<p>4. Unordinary objects' heap data does not contain ordinary object data but instead they contain an optional index to the ordinary objects vector.<p>5. Objects are aggressively split into parts to avoid common use-cases having to reading parts that are known to be unused.<p>If this sounds interesting, I've written a few blog posts on the internals of Nova over in our blog, you can jump into that here: <a href="https://trynova.dev/blog/what-is-the-nova-javascript-engine" rel="nofollow">https://trynova.dev/blog/what-is-the-nova-javascript-engine</a>

Show HN: Nova JavaScript Engine

We're building a different kind of JavaScript engine, based on data-oriented design and willingness to try something quite out of left field. This is most concretely visible in our major architectural choices:<p>1. All data allocated on the JavaScript heap is placed into a type-specific vector. Numbers go into the numbers vector, strings into the strings vector, and so on.<p>2. All heap references are type-discriminated indexes: A heap number is identified by its discriminant value and the index to which it points to in the numbers vector.<p>3. Objects are also split up into object kind -specific vectors. Ordinary objects go into one vector, Arrays go into another, DataViews into yet another, and so on.<p>4. Unordinary objects' heap data does not contain ordinary object data but instead they contain an optional index to the ordinary objects vector.<p>5. Objects are aggressively split into parts to avoid common use-cases having to reading parts that are known to be unused.<p>If this sounds interesting, I've written a few blog posts on the internals of Nova over in our blog, you can jump into that here: <a href="https://trynova.dev/blog/what-is-the-nova-javascript-engine" rel="nofollow">https://trynova.dev/blog/what-is-the-nova-javascript-engine</a>

Show HN: FastGraphRAG – Better RAG using good old PageRank

Hey there HN! We’re Antonio, Luca, and Yuhang, and we’re excited to introduce Fast GraphRAG, an open-source RAG approach that leverages knowledge graphs and the 25 years old PageRank for better information retrieval and reasoning.<p>Building a good RAG pipeline these days takes a lot of manual optimizations. Most engineers intuitively start from naive RAG: throw everything in a vector database and hope that semantic search is powerful enough. This can work for use cases where accuracy isn’t too important and hallucinations are tolerable, but it doesn’t work for more difficult queries that involve multi-hop reasoning or more advanced domain understanding. Also, it’s impossible to debug it.<p>To address these limitations, many engineers find themselves adding extra layers like agent-based preprocessing, custom embeddings, reranking mechanisms, and hybrid search strategies. Much like the early days of machine learning when we manually crafted feature vectors to squeeze out marginal gains, building an effective RAG system often becomes an exercise in crafting engineering “hacks.”<p>Earlier this year, Microsoft seeded the idea of using Knowledge Graphs for RAG and published GraphRAG - i.e. RAG with Knowledge Graphs. We believe that there is an incredible potential in this idea, but existing implementations are naive in the way they create and explore the graph. That’s why we developed Fast GraphRAG with a new algorithmic approach using good old PageRank.<p>There are two main challenges when building a reliable RAG system:<p>(1) Data Noise: Real-world data is often messy. Customer support tickets, chat logs, and other conversational data can include a lot of irrelevant information. If you push noisy data into a vector database, you’re likely to get noisy results.<p>(2) Domain Specialization: For complex use cases, a RAG system must understand the domain-specific context. This requires creating representations that capture not just the words but the deeper relationships and structures within the data.<p>Our solution builds on these insights by incorporating knowledge graphs into the RAG pipeline. Knowledge graphs store entities and their relationships, and can help structure data in a way that enables more accurate and context-aware information retrieval. 12 years ago Google announced the knowledge graph we all know about [1]. It was a pioneering move. Now we have LLMs, meaning that people can finally do RAG on their own data with tools that can be as powerful as Google’s original idea.<p>Before we built this, Antonio was at Amazon, while Luca and Yuhang were finishing their PhDs at Oxford. We had been thinking about this problem for years and we always loved the parallel between pagerank and the human memory [2]. We believe that searching for memories is incredibly similar to searching the web.<p>Here’s how it works:<p>- Entity and Relationship Extraction: Fast GraphRAG uses LLMs to extract entities and their relationships from your data and stores them in a graph format [3].<p>- Query Processing: When you make a query, Fast GraphRAG starts by finding the most relevant entities using vector search, then runs a personalized PageRank algorithm to determine the most important “memories” or pieces of information related to the query [4].<p>- Incremental Updates: Unlike other graph-based RAG systems, Fast GraphRAG natively supports incremental data insertions. This means you can continuously add new data without reprocessing the entire graph.<p>- Faster: These design choices make our algorithm faster and more affordable to run than other graph-based RAG systems because we eliminate the need for communities and clustering.<p>Suppose you’re analyzing a book and want to focus on character interactions, locations, and significant events:<p><pre><code> from fast_graphrag import GraphRAG DOMAIN = "Analyze this story and identify the characters. Focus on how they interact with each other, the locations they explore, and their relationships." EXAMPLE_QUERIES = [ "What is the significance of Christmas Eve in A Christmas Carol?", "How does the setting of Victorian London contribute to the story's themes?", "Describe the chain of events that leads to Scrooge's transformation.", "How does Dickens use the different spirits (Past, Present, and Future) to guide Scrooge?", "Why does Dickens choose to divide the story into \"staves\" rather than chapters?" ] ENTITY_TYPES = ["Character", "Animal", "Place", "Object", "Activity", "Event"] grag = GraphRAG( working_dir="./book_example", domain=DOMAIN, example_queries="\n".join(EXAMPLE_QUERIES), entity_types=ENTITY_TYPES ) with open("./book.txt") as f: grag.insert(f.read()) print(grag.query("Who is Scrooge?").response) </code></pre> This code creates a domain-specific knowledge graph based on your data, example queries, and specified entity types. Then you can query it in plain English while it automatically handles all the data fetching, entity extractions, co-reference resolutions, memory elections, etc. When you add new data, locking and checkpointing is handled for you as well.<p>This is the kind of infrastructure that GenAI apps need to handle large-scale real-world data. Our goal is to give you this infrastructure so that you can focus on what’s important: building great apps for your users without having to care about manually engineering a retrieval pipeline. In the managed service, we also have a suite of UI tools for you to explore and debug your knowledge graph.<p>We have a free hosted solution with up to 100 monthly requests. When you’re ready to grow, we have paid plans that scale with you. And of course you can self host our open-source engine.<p>Give us a spin today at <a href="https://circlemind.co">https://circlemind.co</a> and see our code at <a href="https://github.com/circlemind-ai/fast-graphrag">https://github.com/circlemind-ai/fast-graphrag</a><p>We’d love feedback :)<p>[1] <a href="https://blog.google/products/search/introducing-knowledge-graph-things-not/" rel="nofollow">https://blog.google/products/search/introducing-knowledge-gr...</a><p>[2] Griffiths, T. L., Steyvers, M., & Firl, A. (2007). Google and the Mind: Predicting Fluency with PageRank. Psychological Science, 18(12), 1069–1076. <a href="http://www.jstor.org/stable/40064705" rel="nofollow">http://www.jstor.org/stable/40064705</a><p>[3] Similarly to Microsoft’s GraphRAG: <a href="https://github.com/microsoft/graphrag">https://github.com/microsoft/graphrag</a><p>[4] Similarly to OSU’s HippoRAG: <a href="https://github.com/OSU-NLP-Group/HippoRAG">https://github.com/OSU-NLP-Group/HippoRAG</a><p><a href="https://vhs.charm.sh/vhs-4fCicgsbsc7UX0pemOcsMp.gif" rel="nofollow">https://vhs.charm.sh/vhs-4fCicgsbsc7UX0pemOcsMp.gif</a>

Show HN: FastGraphRAG – Better RAG using good old PageRank

Hey there HN! We’re Antonio, Luca, and Yuhang, and we’re excited to introduce Fast GraphRAG, an open-source RAG approach that leverages knowledge graphs and the 25 years old PageRank for better information retrieval and reasoning.<p>Building a good RAG pipeline these days takes a lot of manual optimizations. Most engineers intuitively start from naive RAG: throw everything in a vector database and hope that semantic search is powerful enough. This can work for use cases where accuracy isn’t too important and hallucinations are tolerable, but it doesn’t work for more difficult queries that involve multi-hop reasoning or more advanced domain understanding. Also, it’s impossible to debug it.<p>To address these limitations, many engineers find themselves adding extra layers like agent-based preprocessing, custom embeddings, reranking mechanisms, and hybrid search strategies. Much like the early days of machine learning when we manually crafted feature vectors to squeeze out marginal gains, building an effective RAG system often becomes an exercise in crafting engineering “hacks.”<p>Earlier this year, Microsoft seeded the idea of using Knowledge Graphs for RAG and published GraphRAG - i.e. RAG with Knowledge Graphs. We believe that there is an incredible potential in this idea, but existing implementations are naive in the way they create and explore the graph. That’s why we developed Fast GraphRAG with a new algorithmic approach using good old PageRank.<p>There are two main challenges when building a reliable RAG system:<p>(1) Data Noise: Real-world data is often messy. Customer support tickets, chat logs, and other conversational data can include a lot of irrelevant information. If you push noisy data into a vector database, you’re likely to get noisy results.<p>(2) Domain Specialization: For complex use cases, a RAG system must understand the domain-specific context. This requires creating representations that capture not just the words but the deeper relationships and structures within the data.<p>Our solution builds on these insights by incorporating knowledge graphs into the RAG pipeline. Knowledge graphs store entities and their relationships, and can help structure data in a way that enables more accurate and context-aware information retrieval. 12 years ago Google announced the knowledge graph we all know about [1]. It was a pioneering move. Now we have LLMs, meaning that people can finally do RAG on their own data with tools that can be as powerful as Google’s original idea.<p>Before we built this, Antonio was at Amazon, while Luca and Yuhang were finishing their PhDs at Oxford. We had been thinking about this problem for years and we always loved the parallel between pagerank and the human memory [2]. We believe that searching for memories is incredibly similar to searching the web.<p>Here’s how it works:<p>- Entity and Relationship Extraction: Fast GraphRAG uses LLMs to extract entities and their relationships from your data and stores them in a graph format [3].<p>- Query Processing: When you make a query, Fast GraphRAG starts by finding the most relevant entities using vector search, then runs a personalized PageRank algorithm to determine the most important “memories” or pieces of information related to the query [4].<p>- Incremental Updates: Unlike other graph-based RAG systems, Fast GraphRAG natively supports incremental data insertions. This means you can continuously add new data without reprocessing the entire graph.<p>- Faster: These design choices make our algorithm faster and more affordable to run than other graph-based RAG systems because we eliminate the need for communities and clustering.<p>Suppose you’re analyzing a book and want to focus on character interactions, locations, and significant events:<p><pre><code> from fast_graphrag import GraphRAG DOMAIN = "Analyze this story and identify the characters. Focus on how they interact with each other, the locations they explore, and their relationships." EXAMPLE_QUERIES = [ "What is the significance of Christmas Eve in A Christmas Carol?", "How does the setting of Victorian London contribute to the story's themes?", "Describe the chain of events that leads to Scrooge's transformation.", "How does Dickens use the different spirits (Past, Present, and Future) to guide Scrooge?", "Why does Dickens choose to divide the story into \"staves\" rather than chapters?" ] ENTITY_TYPES = ["Character", "Animal", "Place", "Object", "Activity", "Event"] grag = GraphRAG( working_dir="./book_example", domain=DOMAIN, example_queries="\n".join(EXAMPLE_QUERIES), entity_types=ENTITY_TYPES ) with open("./book.txt") as f: grag.insert(f.read()) print(grag.query("Who is Scrooge?").response) </code></pre> This code creates a domain-specific knowledge graph based on your data, example queries, and specified entity types. Then you can query it in plain English while it automatically handles all the data fetching, entity extractions, co-reference resolutions, memory elections, etc. When you add new data, locking and checkpointing is handled for you as well.<p>This is the kind of infrastructure that GenAI apps need to handle large-scale real-world data. Our goal is to give you this infrastructure so that you can focus on what’s important: building great apps for your users without having to care about manually engineering a retrieval pipeline. In the managed service, we also have a suite of UI tools for you to explore and debug your knowledge graph.<p>We have a free hosted solution with up to 100 monthly requests. When you’re ready to grow, we have paid plans that scale with you. And of course you can self host our open-source engine.<p>Give us a spin today at <a href="https://circlemind.co">https://circlemind.co</a> and see our code at <a href="https://github.com/circlemind-ai/fast-graphrag">https://github.com/circlemind-ai/fast-graphrag</a><p>We’d love feedback :)<p>[1] <a href="https://blog.google/products/search/introducing-knowledge-graph-things-not/" rel="nofollow">https://blog.google/products/search/introducing-knowledge-gr...</a><p>[2] Griffiths, T. L., Steyvers, M., & Firl, A. (2007). Google and the Mind: Predicting Fluency with PageRank. Psychological Science, 18(12), 1069–1076. <a href="http://www.jstor.org/stable/40064705" rel="nofollow">http://www.jstor.org/stable/40064705</a><p>[3] Similarly to Microsoft’s GraphRAG: <a href="https://github.com/microsoft/graphrag">https://github.com/microsoft/graphrag</a><p>[4] Similarly to OSU’s HippoRAG: <a href="https://github.com/OSU-NLP-Group/HippoRAG">https://github.com/OSU-NLP-Group/HippoRAG</a><p><a href="https://vhs.charm.sh/vhs-4fCicgsbsc7UX0pemOcsMp.gif" rel="nofollow">https://vhs.charm.sh/vhs-4fCicgsbsc7UX0pemOcsMp.gif</a>

Show HN: FastGraphRAG – Better RAG using good old PageRank

Hey there HN! We’re Antonio, Luca, and Yuhang, and we’re excited to introduce Fast GraphRAG, an open-source RAG approach that leverages knowledge graphs and the 25 years old PageRank for better information retrieval and reasoning.<p>Building a good RAG pipeline these days takes a lot of manual optimizations. Most engineers intuitively start from naive RAG: throw everything in a vector database and hope that semantic search is powerful enough. This can work for use cases where accuracy isn’t too important and hallucinations are tolerable, but it doesn’t work for more difficult queries that involve multi-hop reasoning or more advanced domain understanding. Also, it’s impossible to debug it.<p>To address these limitations, many engineers find themselves adding extra layers like agent-based preprocessing, custom embeddings, reranking mechanisms, and hybrid search strategies. Much like the early days of machine learning when we manually crafted feature vectors to squeeze out marginal gains, building an effective RAG system often becomes an exercise in crafting engineering “hacks.”<p>Earlier this year, Microsoft seeded the idea of using Knowledge Graphs for RAG and published GraphRAG - i.e. RAG with Knowledge Graphs. We believe that there is an incredible potential in this idea, but existing implementations are naive in the way they create and explore the graph. That’s why we developed Fast GraphRAG with a new algorithmic approach using good old PageRank.<p>There are two main challenges when building a reliable RAG system:<p>(1) Data Noise: Real-world data is often messy. Customer support tickets, chat logs, and other conversational data can include a lot of irrelevant information. If you push noisy data into a vector database, you’re likely to get noisy results.<p>(2) Domain Specialization: For complex use cases, a RAG system must understand the domain-specific context. This requires creating representations that capture not just the words but the deeper relationships and structures within the data.<p>Our solution builds on these insights by incorporating knowledge graphs into the RAG pipeline. Knowledge graphs store entities and their relationships, and can help structure data in a way that enables more accurate and context-aware information retrieval. 12 years ago Google announced the knowledge graph we all know about [1]. It was a pioneering move. Now we have LLMs, meaning that people can finally do RAG on their own data with tools that can be as powerful as Google’s original idea.<p>Before we built this, Antonio was at Amazon, while Luca and Yuhang were finishing their PhDs at Oxford. We had been thinking about this problem for years and we always loved the parallel between pagerank and the human memory [2]. We believe that searching for memories is incredibly similar to searching the web.<p>Here’s how it works:<p>- Entity and Relationship Extraction: Fast GraphRAG uses LLMs to extract entities and their relationships from your data and stores them in a graph format [3].<p>- Query Processing: When you make a query, Fast GraphRAG starts by finding the most relevant entities using vector search, then runs a personalized PageRank algorithm to determine the most important “memories” or pieces of information related to the query [4].<p>- Incremental Updates: Unlike other graph-based RAG systems, Fast GraphRAG natively supports incremental data insertions. This means you can continuously add new data without reprocessing the entire graph.<p>- Faster: These design choices make our algorithm faster and more affordable to run than other graph-based RAG systems because we eliminate the need for communities and clustering.<p>Suppose you’re analyzing a book and want to focus on character interactions, locations, and significant events:<p><pre><code> from fast_graphrag import GraphRAG DOMAIN = "Analyze this story and identify the characters. Focus on how they interact with each other, the locations they explore, and their relationships." EXAMPLE_QUERIES = [ "What is the significance of Christmas Eve in A Christmas Carol?", "How does the setting of Victorian London contribute to the story's themes?", "Describe the chain of events that leads to Scrooge's transformation.", "How does Dickens use the different spirits (Past, Present, and Future) to guide Scrooge?", "Why does Dickens choose to divide the story into \"staves\" rather than chapters?" ] ENTITY_TYPES = ["Character", "Animal", "Place", "Object", "Activity", "Event"] grag = GraphRAG( working_dir="./book_example", domain=DOMAIN, example_queries="\n".join(EXAMPLE_QUERIES), entity_types=ENTITY_TYPES ) with open("./book.txt") as f: grag.insert(f.read()) print(grag.query("Who is Scrooge?").response) </code></pre> This code creates a domain-specific knowledge graph based on your data, example queries, and specified entity types. Then you can query it in plain English while it automatically handles all the data fetching, entity extractions, co-reference resolutions, memory elections, etc. When you add new data, locking and checkpointing is handled for you as well.<p>This is the kind of infrastructure that GenAI apps need to handle large-scale real-world data. Our goal is to give you this infrastructure so that you can focus on what’s important: building great apps for your users without having to care about manually engineering a retrieval pipeline. In the managed service, we also have a suite of UI tools for you to explore and debug your knowledge graph.<p>We have a free hosted solution with up to 100 monthly requests. When you’re ready to grow, we have paid plans that scale with you. And of course you can self host our open-source engine.<p>Give us a spin today at <a href="https://circlemind.co">https://circlemind.co</a> and see our code at <a href="https://github.com/circlemind-ai/fast-graphrag">https://github.com/circlemind-ai/fast-graphrag</a><p>We’d love feedback :)<p>[1] <a href="https://blog.google/products/search/introducing-knowledge-graph-things-not/" rel="nofollow">https://blog.google/products/search/introducing-knowledge-gr...</a><p>[2] Griffiths, T. L., Steyvers, M., & Firl, A. (2007). Google and the Mind: Predicting Fluency with PageRank. Psychological Science, 18(12), 1069–1076. <a href="http://www.jstor.org/stable/40064705" rel="nofollow">http://www.jstor.org/stable/40064705</a><p>[3] Similarly to Microsoft’s GraphRAG: <a href="https://github.com/microsoft/graphrag">https://github.com/microsoft/graphrag</a><p>[4] Similarly to OSU’s HippoRAG: <a href="https://github.com/OSU-NLP-Group/HippoRAG">https://github.com/OSU-NLP-Group/HippoRAG</a><p><a href="https://vhs.charm.sh/vhs-4fCicgsbsc7UX0pemOcsMp.gif" rel="nofollow">https://vhs.charm.sh/vhs-4fCicgsbsc7UX0pemOcsMp.gif</a>

Show HN: ZQDGR a Script Runner for Golang

Hi everyone, recently I was a little tired with how development with Golang can be. I took it upon myself to build a runner for Golang that is quick and dirty, but good enough for me and this amalgamated to Zoe's Quick and Dirty Golang Runner.

Show HN: Libretto – Simple recording and editing, an alternative to Descript

Hi HN, We’re excited to share Libretto – a web-based recording and editing tool designed for creators, podcasters, and teams working remotely. If you’re familiar with Descript, you’ll find Libretto is similar but with unique features and a focus on simplicity.<p>What makes Libretto unique:<p>Local recording for high-quality audio/video: Libretto records media locally on each participant’s device and uploads it in the background, ensuring pristine quality even under poor network conditions. This works like double-ended recording but entirely within your browser.<p>Powerful yet simple editing tools: Transcript-based editing: Edit audio/video as if you’re editing text. Automatic filler word removal: Get rid of "uhs" and "ums" with one click. Core editing tools like splitting, trimming, and cropping are intuitive for non-professionals.<p>Collaborative and browser-based: No downloads required – everything runs in the browser. Teams can work together, sharing projects and edits in real time.<p>Built with:<p>LiveKit for webRTC infrastructure, Deepgram for transcriptions, Rendley’s video editing SDK and Liveblocks for real time shared state.<p>Libretto is free to try, and we’d love your feedback to make it better. If you’re curious, check it out. Questions, thoughts, or suggestions? We’re here to listen!

Show HN: Zyme – An Evolvable Programming Language

Zyme is an esoteric language for genetic programming: creating computer programs by means of natural selection.

Show HN: Zyme – An Evolvable Programming Language

Zyme is an esoteric language for genetic programming: creating computer programs by means of natural selection.

Show HN: Zyme – An Evolvable Programming Language

Zyme is an esoteric language for genetic programming: creating computer programs by means of natural selection.

< 1 2 3 4 ... 717 718 719 >