CogneeMemoryStore
CogneeMemoryStore
CogneeMemoryStore는 Cognee의 knowledge graph API로 구동되는 영구 메모리 저장소예요. CogneeRetriever와 CogneeWriter가 공유하는 데이터 계층입니다.
출처: 문서
본문
| 항목 | 내용 |
|---|---|
| 사용자 | CogneeRetriever, CogneeWriter |
| 선택적 init 변수 | search_type, top_k, dataset_name, session_id, self_improvement, timeout |
| API reference | Cognee |
| GitHub link | https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/cognee |
| Package name | cognee-haystack |
Overview
CogneeMemoryStore는 Cognee의 V2 메모리 API를 감쌉니다:
add_memories→cognee.remembersearch_memories→cognee.recallimprove→cognee.improvedelete_all_memories→cognee.forget
Cognee는 두 가지 메모리 계층을 지원해요. session_id를 설정하면 세션 캐시를 쓰는데, LLM 추출 없이 빠른 쓰기와 세션 인식 recall이 가능합니다. session_id를 None으로 두면 영구 knowledge graph에 쓰는데, 수집(ingestion) 시 LLM 추출을 사용하고 더 풍부한 그래프 완성 쿼리를 지원해요.
Cognee 설정(LLM 제공 업체, 데이터베이스, 벡터 저장소)은 환경 변수에서 읽어옵니다. 설정 방법은 Cognee 문서를 참고하세요.
Parameters
search_type— 선택적이며 기본값은"GRAPH_COMPLETION". 어떤 Cognee recall 전략을 쓸지 제어해요. 그 밖에 유용한 값으로 원시 검색용"CHUNKS", 요약된 그래프 노드용"SUMMARIES"가 있습니다.top_k— 선택적이며 기본값은5. 검색당 반환되는 최대 메모리 수의 기본값을 설정해요.dataset_name— 선택적이며 기본값은"haystack_memory". 이 스토어를 뒷받침하는 Cognee 데이터셋 이름을 지정해요.session_id— 선택적이며 기본값은None. 설정하면 읽기·쓰기가 세션-캐시 계층을 대상으로 하고,None이면 영구 knowledge graph를 사용합니다.self_improvement— 선택적이며 기본값은True.True면 Cognee가 매 쓰기 후 그래프 개선을 인라인으로 실행해요.improve()를 유일한 개선 트리거로 만들고 싶다면False로 설정하세요.timeout— 선택적이며 기본값은300. Cognee 연산 하나당 제한 시간(초)입니다.
Installation
Cognee 통합을 설치합니다:
pip install cognee-haystack
LLM API 키를 설정합니다(Cognee가 그래프 추출·쿼리에 사용):
export LLM_API_KEY="your-llm-api-key"
선택적으로 별도의 임베딩 API 키를 설정할 수 있어요(설정하지 않으면 LLM_API_KEY를 사용):
export EMBEDDING_API_KEY="your-embedding-api-key"
Usage
On its own
from haystack.dataclasses import ChatMessage
from haystack_integrations.memory_stores.cognee import CogneeMemoryStore
store = CogneeMemoryStore(search_type="GRAPH_COMPLETION", top_k=5)
store.add_memories(
messages=[ChatMessage.from_user("Alice enjoys hiking and outdoor activities.")],
user_id="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
)
memories = store.search_memories(
query="What does Alice like?",
user_id="a1b2c3d4-e5f6-7890-abcd-ef1234567890",
)
print([msg.text for msg in memories])
Session tier vs permanent graph
session_id로 어느 메모리 계층을 대상으로 할지 제어할 수 있어요. 하나의 스토어가 두 계층을 모두 처리할 수 있으며, writer의 session_id가 호출별로 스토어의 session_id를 덮어씁니다.
from haystack.dataclasses import ChatMessage
from haystack_integrations.memory_stores.cognee import CogneeMemoryStore
store = CogneeMemoryStore(dataset_name="my_agent_memory", self_improvement=False)
# Write long-lived facts to the permanent graph (no session_id).
store.add_memories(
messages=[ChatMessage.from_user("Alice is a senior data scientist at Acme Corp.")],
)
# Write transient session context to the session cache.
store.add_memories(
messages=[
ChatMessage.from_user("Alice is currently debugging a vector store issue.")
],
session_id="alice_session_1",
)
# Promote the session cache into the permanent graph.
store.improve(session_id="alice_session_1")
Delete all memories
# Delete only this store's dataset (session cache is unaffected).
store.delete_all_memories()
# To wipe everything including the session cache, call cognee directly:
import asyncio
import cognee
asyncio.run(cognee.forget(everything=True))
더 알아보기 (Learn more)
- CogneeMemoryStore — Haystack 공식 문서