Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,24 @@

- (**breaking**) `AnthropicLLM.supports_structured_output` is now `True`. As a result, `SchemaFromTextExtractor` and `LLMEntityRelationExtractor` (and `SimpleKGPipeline`, which enables structured output automatically when the LLM supports it) now use structured output by default with `AnthropicLLM`. This requires a Claude 4.5+ model (e.g. `claude-sonnet-4-5`); using `AnthropicLLM` with an older Claude model in these components will now raise an error where it previously worked. To keep the previous behavior, use a Claude 4.5+ model, or construct `LLMEntityRelationExtractor` / `SchemaFromTextExtractor` directly with `use_structured_output=False`.

- Preparation for 2.0:
- All `Components` have been moved out of the `experimental` namespace
- Import `from neo4j_graphrag.experimental.components... ` still work but raises a deprecation warning
- Import from the experimental namespace will be removed in 2.0
- Update to use `from neo4j_graphrag.components... ` instead
- Improperly defined components now raise a `ComponentDefinitionError` instead of `PipelineDefinitionError`
- `TaskProgressNotifierProtocol` and `RunContext` have been moved to `neo4j_graphrag.components.base`
- The `Component` base class has been moved to `neo4j_graphrag.components.base`


## 1.18.0

### Changed

- Experimental: `GraphSchema` validation now rejects `KEY` and `EXISTENCE` constraints on the same node or relationship property (including composite KEY members), since KEY already implies mandatory presence. Legacy `PropertyType.required` migration no longer adds redundant EXISTENCE constraints for KEY-covered properties. The schema-from-text extraction prompt includes the same rule.
- Experimental: the schema-from-text extraction prompt now instructs the LLM to define each relationship type once and reuse it across patterns, using distinct type names only when patterns genuinely need different properties or constraints.
- Experimental: LLM-auto-generated schemas now reconcile duplicate `relationship_types` (entries sharing the same label) by merging them into a single type that carries the union of their properties, emitting a warning log. This reflects that Neo4j relationship types are global per name.
- Experimental (**breaking**): `GraphSchema` now raises `SchemaValidationError` when the same label appears more than once in `relationship_types`. Because Neo4j relationship types are global per name (every relationship of a given type shares the same properties and constraints regardless of its endpoints), a label cannot have two conflicting definitions.
- Experimental (**breaking**): `GraphSchema` now raises `SchemaValidationError` when the same label appears more than once in `relationship_types`. Because Neo4j relationship types are global per name (every relationship of a given type shares the same properties and constraints regardless of its endpoints), a label cannot have two conflicting definitions.

## 1.17.0

Expand Down
40 changes: 20 additions & 20 deletions docs/source/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,81 +12,81 @@ Components
Component
=========

.. autoclass:: neo4j_graphrag.experimental.pipeline.component.Component
.. autoclass:: neo4j_graphrag.components.base.Component
:members: run, run_with_context

DataLoader
==========

.. autoclass:: neo4j_graphrag.experimental.components.data_loader.DataLoader
.. autoclass:: neo4j_graphrag.components.data_loader.DataLoader
:members: run, get_document_metadata

PdfLoader
=========

.. autoclass:: neo4j_graphrag.experimental.components.data_loader.PdfLoader
.. autoclass:: neo4j_graphrag.components.data_loader.PdfLoader
:members: run, load_file

MarkdownLoader
==============

.. autoclass:: neo4j_graphrag.experimental.components.data_loader.MarkdownLoader
.. autoclass:: neo4j_graphrag.components.data_loader.MarkdownLoader
:members: run, load_file

TextSplitter
============

.. autoclass:: neo4j_graphrag.experimental.components.text_splitters.base.TextSplitter
.. autoclass:: neo4j_graphrag.components.text_splitters.base.TextSplitter
:members: run

FixedSizeSplitter
=================

.. autoclass:: neo4j_graphrag.experimental.components.text_splitters.fixed_size_splitter.FixedSizeSplitter
.. autoclass:: neo4j_graphrag.components.text_splitters.fixed_size_splitter.FixedSizeSplitter
:members: run

LangChainTextSplitterAdapter
============================

.. autoclass:: neo4j_graphrag.experimental.components.text_splitters.langchain.LangChainTextSplitterAdapter
.. autoclass:: neo4j_graphrag.components.text_splitters.langchain.LangChainTextSplitterAdapter
:members: run

LlamaIndexTextSplitterAdapter
=============================

.. autoclass:: neo4j_graphrag.experimental.components.text_splitters.llamaindex.LlamaIndexTextSplitterAdapter
.. autoclass:: neo4j_graphrag.components.text_splitters.llamaindex.LlamaIndexTextSplitterAdapter
:members: run

TextChunkEmbedder
=================

.. autoclass:: neo4j_graphrag.experimental.components.embedder.TextChunkEmbedder
.. autoclass:: neo4j_graphrag.components.embedder.TextChunkEmbedder
:members: run

LexicalGraphBuilder
===================

.. autoclass:: neo4j_graphrag.experimental.components.lexical_graph.LexicalGraphBuilder
.. autoclass:: neo4j_graphrag.components.lexical_graph.LexicalGraphBuilder
:members:
:exclude-members: component_inputs, component_outputs

Neo4jChunkReader
================

.. autoclass:: neo4j_graphrag.experimental.components.neo4j_reader.Neo4jChunkReader
.. autoclass:: neo4j_graphrag.components.neo4j_reader.Neo4jChunkReader
:members:
:exclude-members: component_inputs, component_outputs

SchemaBuilder
=============

.. autoclass:: neo4j_graphrag.experimental.components.schema.SchemaBuilder
.. autoclass:: neo4j_graphrag.components.schema.SchemaBuilder
:members: run

SchemaFromTextExtractor
-----------------------

.. autoclass:: neo4j_graphrag.experimental.components.schema.SchemaFromTextExtractor
.. autoclass:: neo4j_graphrag.components.schema.SchemaFromTextExtractor
:members: run

schema_visualization
Expand All @@ -98,44 +98,44 @@ schema_visualization
EntityRelationExtractor
=======================

.. autoclass:: neo4j_graphrag.experimental.components.entity_relation_extractor.EntityRelationExtractor
.. autoclass:: neo4j_graphrag.components.entity_relation_extractor.EntityRelationExtractor
:members:
:exclude-members: component_inputs, component_outputs

LLMEntityRelationExtractor
==========================

.. autoclass:: neo4j_graphrag.experimental.components.entity_relation_extractor.LLMEntityRelationExtractor
.. autoclass:: neo4j_graphrag.components.entity_relation_extractor.LLMEntityRelationExtractor
:members: run

KGWriter
========

.. autoclass:: neo4j_graphrag.experimental.components.kg_writer.KGWriter
.. autoclass:: neo4j_graphrag.components.kg_writer.KGWriter
:members: run

Neo4jWriter
===========

.. autoclass:: neo4j_graphrag.experimental.components.kg_writer.Neo4jWriter
.. autoclass:: neo4j_graphrag.components.kg_writer.Neo4jWriter
:members: run

SinglePropertyExactMatchResolver
================================

.. autoclass:: neo4j_graphrag.experimental.components.resolver.SinglePropertyExactMatchResolver
.. autoclass:: neo4j_graphrag.components.resolver.SinglePropertyExactMatchResolver
:members: run

SpaCySemanticMatchResolver
==========================

.. autoclass:: neo4j_graphrag.experimental.components.resolver.SpaCySemanticMatchResolver
.. autoclass:: neo4j_graphrag.components.resolver.SpaCySemanticMatchResolver
:members: run

FuzzyMatchResolver
==================

.. autoclass:: neo4j_graphrag.experimental.components.resolver.FuzzyMatchResolver
.. autoclass:: neo4j_graphrag.components.resolver.FuzzyMatchResolver
:members: run

.. _pipeline-section:
Expand Down
34 changes: 17 additions & 17 deletions docs/source/types.rst
Original file line number Diff line number Diff line change
Expand Up @@ -48,88 +48,88 @@ RagResultModel
DocumentInfo
============

.. autoclass:: neo4j_graphrag.experimental.components.types.DocumentInfo
.. autoclass:: neo4j_graphrag.components.types.DocumentInfo

LoadedDocument
==============

.. autoclass:: neo4j_graphrag.experimental.components.types.LoadedDocument
.. autoclass:: neo4j_graphrag.components.types.LoadedDocument


TextChunk
=========

.. autoclass:: neo4j_graphrag.experimental.components.types.TextChunk
.. autoclass:: neo4j_graphrag.components.types.TextChunk

TextChunks
==========

.. autoclass:: neo4j_graphrag.experimental.components.types.TextChunks
.. autoclass:: neo4j_graphrag.components.types.TextChunks

Neo4jNode
=========

.. autoclass:: neo4j_graphrag.experimental.components.types.Neo4jNode
.. autoclass:: neo4j_graphrag.components.types.Neo4jNode

Neo4jRelationship
=================

.. autoclass:: neo4j_graphrag.experimental.components.types.Neo4jRelationship
.. autoclass:: neo4j_graphrag.components.types.Neo4jRelationship

Neo4jGraph
==========

.. autoclass:: neo4j_graphrag.experimental.components.types.Neo4jGraph
.. autoclass:: neo4j_graphrag.components.types.Neo4jGraph

GeoPoint
========

.. autoclass:: neo4j_graphrag.experimental.components.types.GeoPoint
.. autoclass:: neo4j_graphrag.components.types.GeoPoint

KGWriterModel
=============

.. autoclass:: neo4j_graphrag.experimental.components.kg_writer.KGWriterModel
.. autoclass:: neo4j_graphrag.components.kg_writer.KGWriterModel

PropertyType
============

.. autoclass:: neo4j_graphrag.experimental.components.schema.PropertyType
.. autoclass:: neo4j_graphrag.components.schema.PropertyType

NodeType
========

.. autoclass:: neo4j_graphrag.experimental.components.schema.NodeType
.. autoclass:: neo4j_graphrag.components.schema.NodeType

RelationshipType
================

.. autoclass:: neo4j_graphrag.experimental.components.schema.RelationshipType
.. autoclass:: neo4j_graphrag.components.schema.RelationshipType

Pattern
=======

.. autoclass:: neo4j_graphrag.experimental.components.schema.Pattern
.. autoclass:: neo4j_graphrag.components.schema.Pattern

GraphConstraintType
=====================

.. autoclass:: neo4j_graphrag.experimental.components.schema.GraphConstraintType
.. autoclass:: neo4j_graphrag.components.schema.GraphConstraintType

ConstraintType
================

.. autoclass:: neo4j_graphrag.experimental.components.schema.ConstraintType
.. autoclass:: neo4j_graphrag.components.schema.ConstraintType

GraphSchema
===========

.. autoclass:: neo4j_graphrag.experimental.components.schema.GraphSchema
.. autoclass:: neo4j_graphrag.components.schema.GraphSchema

LexicalGraphConfig
===================

.. autoclass:: neo4j_graphrag.experimental.components.types.LexicalGraphConfig
.. autoclass:: neo4j_graphrag.components.types.LexicalGraphConfig


Neo4jDriverType
Expand Down
Loading
Loading