Files
wehub-resource-sync c56bef871b
Sync docs with Docusaurus / sync (push) Waiting to run
Tests / Check if changed (push) Waiting to run
Tests / format (push) Blocked by required conditions
Tests / check-imports (push) Blocked by required conditions
Tests / Unit / macos-latest (push) Blocked by required conditions
Tests / Unit / ubuntu-latest (push) Blocked by required conditions
Tests / Unit / windows-latest (push) Blocked by required conditions
Tests / mypy (push) Blocked by required conditions
Tests / Integration / ubuntu-latest (push) Blocked by required conditions
Tests / Integration / macos-latest (push) Blocked by required conditions
Tests / Integration / windows-latest (push) Blocked by required conditions
Tests / notify-slack-on-failure (push) Blocked by required conditions
Tests / Mark tests as completed (push) Blocked by required conditions
Docker image release / Build base image (push) Waiting to run
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:22:28 +08:00

256 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Cognee"
id: integrations-cognee
description: "Cognee integration for Haystack"
slug: "/integrations-cognee"
---
## haystack_integrations.components.retrievers.cognee.memory_retriever
### CogneeRetriever
Retrieves memories from a `CogneeMemoryStore` as `ChatMessage` instances.
Configuration (`search_type`, `top_k`, `dataset_name`, `session_id`) lives on
the store; this retriever is a thin pipeline adapter over `search_memories`.
#### __init__
```python
__init__(*, memory_store: CogneeMemoryStore, top_k: int | None = None) -> None
```
Initialize the retriever.
**Parameters:**
- **memory_store** (<code>CogneeMemoryStore</code>) Backing `CogneeMemoryStore` to query.
- **top_k** (<code>int | None</code>) Default max results; falls back to the store's `top_k` when `None`.
#### run
```python
run(
query: str, top_k: int | None = None, user_id: str | None = None
) -> dict[str, list[ChatMessage]]
```
Search the attached store and return matching memories as ChatMessages.
**Parameters:**
- **query** (<code>str</code>) Natural-language query.
- **top_k** (<code>int | None</code>) Per-call override; falls back to init `top_k`, then the store's default.
- **user_id** (<code>str | None</code>) Cognee user UUID; scopes the search to that user.
#### to_dict
```python
to_dict() -> dict[str, Any]
```
Serialize this component to a dictionary.
#### from_dict
```python
from_dict(data: dict[str, Any]) -> CogneeRetriever
```
Deserialize a component from a dictionary.
## haystack_integrations.components.writers.cognee.memory_writer
### CogneeWriter
Persists `ChatMessage`s into a `CogneeMemoryStore`.
Use without `session_id` to write to the permanent graph; pass `session_id` to
target cognee's session cache for that writer's writes. The writer's
`session_id` overrides the store's own `session_id` per call, so one store can
back multiple writers writing to different tiers.
#### __init__
```python
__init__(
*, memory_store: CogneeMemoryStore, session_id: str | None = None
) -> None
```
Initialize the writer.
**Parameters:**
- **memory_store** (<code>CogneeMemoryStore</code>) Backing `CogneeMemoryStore` to write into.
- **session_id** (<code>str | None</code>) Overrides the store's `session_id` for this writer's writes.
#### run
```python
run(
messages: list[ChatMessage], user_id: str | None = None
) -> dict[str, list[ChatMessage]]
```
Store `messages` in Cognee memory and pass them through unchanged.
**Parameters:**
- **messages** (<code>list\[ChatMessage\]</code>) Messages to persist.
- **user_id** (<code>str | None</code>) Cognee user UUID; scopes the write to that user.
#### to_dict
```python
to_dict() -> dict[str, Any]
```
Serialize this component to a dictionary.
#### from_dict
```python
from_dict(data: dict[str, Any]) -> CogneeWriter
```
Deserialize a component from a dictionary.
## haystack_integrations.memory_stores.cognee.memory_store
### CogneeMemoryStore
Memory backend backed by Cognee, implementing the haystack-experimental `MemoryStore` protocol.
Wraps cognee's V2 memory API: `add_memories` -> `cognee.remember`,
`search_memories` -> `cognee.recall`, `improve` -> `cognee.improve`,
`delete_all_memories` -> `cognee.forget`.
`session_id` selects the tier — set it to use cognee's session cache (cheap,
no LLM extraction, session-aware recall); leave `None` for the permanent
graph.
`self_improvement` is forwarded to `cognee.remember` and defaults to `True`
(same as cognee). On the permanent tier it awaits `improve` inline; on the
session tier it schedules `improve` as a fire-and-forget background task.
Set to `False` when you want `improve()` to be the only improve trigger
— otherwise an explicit `improve()` runs improve twice and produces
near-duplicate graph nodes.
`timeout` (seconds) caps how long any single cognee call may run before
raising `concurrent.futures.TimeoutError`. The default of 300s covers
single-message agent-memory writes comfortably; bulk ingestion of long
documents may need a larger value.
#### __init__
```python
__init__(
*,
search_type: CogneeSearchType = "GRAPH_COMPLETION",
top_k: int = 5,
dataset_name: str = "haystack_memory",
session_id: str | None = None,
self_improvement: bool = True,
timeout: float = 300
) -> None
```
Initialize the store.
**Parameters:**
- **search_type** (<code>CogneeSearchType</code>) Cognee search strategy used by `search_memories`.
- **top_k** (<code>int</code>) Default max results for `search_memories`.
- **dataset_name** (<code>str</code>) Cognee dataset backing this store.
- **session_id** (<code>str | None</code>) When set, use the session-cache tier; otherwise the permanent graph.
- **self_improvement** (<code>bool</code>) Forwarded to `cognee.remember` (default `True`, matches cognee).
Set to `False` when `improve()` should be the only improve trigger.
- **timeout** (<code>float</code>) Per-call timeout in seconds for any cognee operation.
Raise this for bulk ingestion workloads that legitimately need >300s.
#### add_memories
```python
add_memories(
*,
messages: list[ChatMessage],
user_id: str | None = None,
session_id: str | None = None
) -> None
```
Persist messages via `cognee.remember`.
Permanent tier batches all texts into one call; session tier writes one
entry per message (matches cognee's session example). Empty messages
are skipped.
**Parameters:**
- **messages** (<code>list\[ChatMessage\]</code>) Messages to store.
- **user_id** (<code>str | None</code>) Cognee user UUID; `None` uses cognee's default user.
- **session_id** (<code>str | None</code>) Per-call override of the store's `session_id`.
#### search_memories
```python
search_memories(
*,
query: str | None = None,
top_k: int | None = None,
user_id: str | None = None
) -> list[ChatMessage]
```
Search via `cognee.recall` and wrap each hit in a system `ChatMessage`.
**Parameters:**
- **query** (<code>str | None</code>) Natural-language query. Empty/`None` returns `[]`.
- **top_k** (<code>int | None</code>) Per-call override of the store's default.
- **user_id** (<code>str | None</code>) Cognee user UUID; `None` uses cognee's default user.
#### improve
```python
improve(*, session_id: str | None = None, user_id: str | None = None) -> None
```
Promote session-cache content into the permanent graph via `cognee.improve`.
Without any session_id this is a plain graph-enrichment pass.
**Parameters:**
- **session_id** (<code>str | None</code>) Session to promote; defaults to the store's `session_id`.
- **user_id** (<code>str | None</code>) Cognee user UUID; `None` uses cognee's default user.
#### delete_all_memories
```python
delete_all_memories(*, user_id: str | None = None) -> None
```
Delete this dataset via `cognee.forget(dataset=...)`.
Session cache survives (sessions aren't dataset-scoped) — use
`cognee.forget(everything=True)` for a full wipe.
#### to_dict
```python
to_dict() -> dict[str, Any]
```
Serialize this store for pipeline persistence.
#### from_dict
```python
from_dict(data: dict[str, Any]) -> CogneeMemoryStore
```
Deserialize a store from a dict produced by `to_dict`.