--- sidebar_position: 7 --- # Entities Entities are the people, organizations, places, and concepts that Hindsight automatically tracks across your memory bank. import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; :::tip Prerequisites Make sure you've [installed Hindsight](./installation) and understand [how retain works](./retain). ::: ## What Are Entities? When you retain information, Hindsight automatically identifies and tracks entities: ```python client.retain( bank_id="my-bank", content="Alice works at Google in Mountain View. She specializes in TensorFlow." ) ``` **Entities extracted:** - **Alice** (person) - **Google** (organization) - **Mountain View** (location) - **TensorFlow** (product) ## Entity Resolution Multiple mentions are unified into a single entity: - "Alice" + "Alice Chen" + "Alice C." → one person - "Bob" + "Robert Chen" → one person (nickname) - Context-aware: "Apple (company)" vs "apple (fruit)" ## List Entities Get all entities tracked in a memory bank: ```python # List all entities entities = client.list_entities(bank_id="my-bank") for entity in entities: print(f"{entity['name']}: {entity['mention_count']} mentions") # List with filters entities = client.list_entities( bank_id="my-bank", limit=50, offset=0 ) ``` ```javascript // List all entities const entities = await client.listEntities({ bankId: 'my-bank' }); entities.forEach(e => { console.log(`${e.name}: ${e.mentionCount} mentions`); }); // List with filters const filtered = await client.listEntities({ bankId: 'my-bank', limit: 50, offset: 0 }); ``` ```bash # List all entities hindsight entities list my-bank # With limit hindsight entities list my-bank --limit 50 ``` ## Get Entity Details Retrieve detailed information about a specific entity: ```python # Get entity state (observations + related facts) entity = client.get_entity( bank_id="my-bank", entity_id="entity-uuid" ) print(f"Entity: {entity['name']}") print(f"First seen: {entity['first_seen']}") print(f"Mentions: {entity['mention_count']}") # Observations (synthesized summaries) for obs in entity['observations']: print(f" - {obs['text']}") # Include related facts entity = client.get_entity( bank_id="my-bank", entity_id="entity-uuid", include_facts=True, max_facts=20 ) for fact in entity['facts']: print(f" [{fact['occurred_at']}] {fact['text']}") ``` ```javascript // Get entity state const entity = await client.getEntity({ bankId: 'my-bank', entityId: 'entity-uuid' }); console.log(`Entity: ${entity.name}`); console.log(`First seen: ${entity.firstSeen}`); console.log(`Mentions: ${entity.mentionCount}`); // Observations entity.observations.forEach(obs => { console.log(` - ${obs.text}`); }); // Include related facts const withFacts = await client.getEntity({ bankId: 'my-bank', entityId: 'entity-uuid', includeFacts: true, maxFacts: 20 }); ``` ```bash # Get entity details hindsight entities get my-bank entity-uuid # With related facts hindsight entities get my-bank entity-uuid --include-facts ``` ## Entity Observations Observations are high-level summaries automatically synthesized from multiple facts: **Facts about Alice:** - "Alice works at Google" - "Alice is a software engineer" - "Alice specializes in ML" **Observation created:** - "Alice is a software engineer at Google specializing in ML" Observations are generated in the background after retaining information. ## Search Entities Find entities by name or related terms: ```python # Search by name entities = client.search_entities( bank_id="my-bank", query="Alice" ) # Fuzzy matching handles variations entities = client.search_entities( bank_id="my-bank", query="Alic" # Matches "Alice", "Alicia", etc. ) ``` ```javascript // Search by name const entities = await client.searchEntities({ bankId: 'my-bank', query: 'Alice' }); // Fuzzy matching const fuzzy = await client.searchEntities({ bankId: 'my-bank', query: 'Alic' }); ``` ```bash # Search entities hindsight entities search my-bank "Alice" ``` ## Entity Response Format ```json { "id": "entity-uuid", "name": "Alice Chen", "canonical_name": "Alice Chen", "first_seen": "2024-01-15T10:30:00Z", "last_seen": "2024-03-20T14:22:00Z", "mention_count": 47, "observations": [ { "text": "Alice is a software engineer at Google specializing in ML", "created_at": "2024-03-20T15:00:00Z" } ] } ``` ## Next Steps - [**Memory Banks**](./memory-banks) — Configure bank personality - [**Documents**](./documents) — Track document sources - [**Operations**](./operations) — Monitor background tasks