Live data from Hacker News

What Is a Knowledge Graph?

neo4j.com

51–60 of 60 posts

Re: What Is a Knowledge Graph?

#51
post #4

Good article on the high level concepts of a knowledge graph, but some concerning mischaracterizations of core functions of ontologies supporting the class schema and continued disparaging of competing standards-based (RDF triple-store) solutions. That the author omits the updates for property annotations using RDF* is probably not an accident and glosses over the issues with their proprietary clunky query language.…

I enjoy cypher, it's like you draw ASCII art to describe the path you want to match on and it gives you what you want. I was under the impression that with things like openCypher that cypher was becoming (if not was already) the main standard for interacting with a graph database (but I could be out of date). What are the better standards-based options you're referring to?

ISO-GQL

Re: What Is a Knowledge Graph?

#52

I've been working on an implementation of graph RAG (GRAG) using Neo4j as the underlying store. The overall DX is quite nice. The apoc-extended set of plugins[0] make it very seamless to work with embeddings and and LLMs during local dev/testing. The Graph Data Science package comes preloaded with a series of community detection algorithms[1] like Louvain and Leiden. Performance has been very, very good as long as yo…

If you are using community edition - check out the DozerDB plugin which adds enterprise features to Neo4j community such as multi database. Its still in its infancy but has already implemented multi db and enterprise constraints. https://dozerdb.org

Re: What Is a Knowledge Graph?

#53
post #36

Earlier quoted context omitted.

During our initial testing, ~1m nodes on a local Docker container with 1G RAM and 1vCPU. But here I mean "performance" in both retrieval time and the overall quality of the fragments retrieved for RAG compared to a `pgvector` only implementation. It is possible to "simulate" these types of graph traversals in pg as well, you'll have to work much harder to get the performance (we tried it first).

number of nodes mean nothing. what matters to measure performance is how much interconnected your network is and how complex are the relationships you want to extract.

Right. I created a Neo4j db once with millions of nodes and relationships. Individual queries were very performant for all of my access patterns. Where it failed was with queries/sec. Throw more users at it, and it slowed to a crawl. Yes, read replicas are an option, but I was really discouraged with Neo4j performance with more than a few users.

Re: What Is a Knowledge Graph?

#54

Earlier quoted context omitted.

It has been a while so maybe things have changed, but the main reasons I remember are 1) lists stored as a property must be a homogeneous list of simple builtin datatypes so no mixing of types, custom types, or language tagging like RDF has as first class concepts. 2) indexes on lists are much more limited ( exact match only iirc) so depending on the size of the data and the search parameters it could be a big perfor…

What would you recommend as an RDF database to explore?

Marklogic is the best triple store

Re: What Is a Knowledge Graph?

#55
post #44

As someone running neo4j in production I can just warn that the DBs are a pain and need a lot more care and love than Postgres or Oracle DBs. Even much larger instances. Maybe their cloud offerings are better, but they are quite expensive.

Yes, Postgres is actually a great general-purpose graph database (excluding specialized network analysis that's actually pretty niche) if you can deal with the clunky recursive-CTE syntax for graph queries. (The new SQL standard actually comes with an added Property Graph Query/PGQ syntax specifically to make these queries easier to express.)

Have you tried AGE https://age.apache.org/ -- "Graph Database for PostgreSQL" ?

Re: What Is a Knowledge Graph?

#56

Earlier quoted context omitted.

This doesn’t seem on topic, how is it a knowledge graph? Its a (nested) list of bookmarks…

E.g. I add the keywords "Permutations, Combinations" to the "Name" field of a bunch of Bookmarks. I have now crosslinked the Bookmarks. So while it may not be exactly what the linked OP article is talking about, it's a way of storing knowledge, linked via horizontal relationships. But whatever floats your boat.

There is a difference between "tagged data" and "linked data".

Re: What Is a Knowledge Graph?

#57
post #56

Earlier quoted context omitted.

E.g. I add the keywords "Permutations, Combinations" to the "Name" field of a bunch of Bookmarks. I have now crosslinked the Bookmarks. So while it may not be exactly what the linked OP article is talking about, it's a way of storing knowledge, linked via horizontal relationships. But whatever floats your boat.

There is a difference between "tagged data" and "linked data".

Whatever floats your boat.

Re: What Is a Knowledge Graph?

#58

I've been working on an implementation of graph RAG (GRAG) using Neo4j as the underlying store. The overall DX is quite nice. The apoc-extended set of plugins[0] make it very seamless to work with embeddings and and LLMs during local dev/testing. The Graph Data Science package comes preloaded with a series of community detection algorithms[1] like Louvain and Leiden. Performance has been very, very good as long as yo…

Thanks for the praise for APOC-ML, happy that it's useful.

Did you see the two blog posts that Tomaz Bratanic did on the topic?

For the ingestion: https://neo4j.com/developer-blog/global-graphrag-neo4j-langc... For the retrievers: https://neo4j.com/developer-blog/microsoft-graphrag-neo4j/

My general point on GraphRAG is that it extracts and compresses the horizontal topic-clustering across many documents and makes that available for retrieval.

And that by creating the semantic network of entities, you can use patterns in the graph structure to answer questions that rely on information coming together from different documents. Think the detectives board connecting facts with strings from many different sources.

Feel free to ping me for a deeper discussion: michael at neo4j

Re: What Is a Knowledge Graph?

#59
post #37
post #28

Earlier quoted context omitted.

While I'm all for standards-based options, I think the fetishization does a disservice to anyone dipping their toes into graph databases for the first time. For someone with no prior experience, Cypher is everywhere and implements a ton of common graph algorithms which are huge pain points. AuraDB provides an enterprise-level fully-managed offering which is table stakes for, say, relational databases. Obviously the a…

I can attest to that, or at least to the inverse situation. We have a giant data pile that would fit well onto a knowledge graph, and we have a lot of potential use cases for graph queries. But whenever I try to get started, I end up with a bunch of different technologies that seem so foreign to everything else we’re using, it’s really tough to get into. I can’t seem to wrap my head around SPARQL, Gremlin/TinkerPop h…

I think neo4j is a perfectly good starting point. Yeah, I feel like they definitely push their enterprise offering pretty hard, but having a fully managed offering is totally worth it IMO.

Re: What Is a Knowledge Graph?

#60
post #38

Earlier quoted context omitted.

GraphDB is the one I usually use. It has a web interface that eases the first steps. Virtuoso (especially Virtuoso 7, which is open source) is also an option. [a bit more command line based]. In case you want to have a look a the SPARQL client I maintain, Datao.net, you can go to the website and drop me a mail. [i really need to update the video there as the tool has evolved a lot since that time]

The new kid on the block is very much QLever. Still lacking some features, especially wrt. real time update that make it unsuitable for replacing the Wikidata SPARQL endpoint altogether just yet, but it's clearly getting there.

> The new kid

that kid is 7 years old already, and in my understanding currently has only one active contributor. But idea of the project is very strong.

Post reply on HN