Add merge entities
This commit is contained in:
70
README.md
70
README.md
@@ -849,6 +849,76 @@ All operations are available in both synchronous and asynchronous versions. The
|
||||
|
||||
These operations maintain data consistency across both the graph database and vector database components, ensuring your knowledge graph remains coherent.
|
||||
|
||||
## Entity Merging
|
||||
|
||||
<details>
|
||||
<summary> <b>Merge Entities and Their Relationships</b> </summary>
|
||||
|
||||
LightRAG now supports merging multiple entities into a single entity, automatically handling all relationships:
|
||||
|
||||
```python
|
||||
# Basic entity merging
|
||||
rag.merge_entities(
|
||||
source_entities=["Artificial Intelligence", "AI", "Machine Intelligence"],
|
||||
target_entity="AI Technology"
|
||||
)
|
||||
```
|
||||
|
||||
With custom merge strategy:
|
||||
|
||||
```python
|
||||
# Define custom merge strategy for different fields
|
||||
rag.merge_entities(
|
||||
source_entities=["John Smith", "Dr. Smith", "J. Smith"],
|
||||
target_entity="John Smith",
|
||||
merge_strategy={
|
||||
"description": "concatenate", # Combine all descriptions
|
||||
"entity_type": "keep_first", # Keep the entity type from the first entity
|
||||
"source_id": "join_unique" # Combine all unique source IDs
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
With custom target entity data:
|
||||
|
||||
```python
|
||||
# Specify exact values for the merged entity
|
||||
rag.merge_entities(
|
||||
source_entities=["New York", "NYC", "Big Apple"],
|
||||
target_entity="New York City",
|
||||
target_entity_data={
|
||||
"entity_type": "LOCATION",
|
||||
"description": "New York City is the most populous city in the United States.",
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
Advanced usage combining both approaches:
|
||||
|
||||
```python
|
||||
# Merge company entities with both strategy and custom data
|
||||
rag.merge_entities(
|
||||
source_entities=["Microsoft Corp", "Microsoft Corporation", "MSFT"],
|
||||
target_entity="Microsoft",
|
||||
merge_strategy={
|
||||
"description": "concatenate", # Combine all descriptions
|
||||
"source_id": "join_unique" # Combine source IDs
|
||||
},
|
||||
target_entity_data={
|
||||
"entity_type": "ORGANIZATION",
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
When merging entities:
|
||||
* All relationships from source entities are redirected to the target entity
|
||||
* Duplicate relationships are intelligently merged
|
||||
* Self-relationships (loops) are prevented
|
||||
* Source entities are removed after merging
|
||||
* Relationship weights and attributes are preserved
|
||||
|
||||
</details>
|
||||
|
||||
## Cache
|
||||
|
||||
<details>
|
||||
|
Reference in New Issue
Block a user