Skip to content
Merged
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
174 changes: 37 additions & 137 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div style="text-align: center">
<div align="center">
<a href="https://github.com/topoteretes/cognee">
<img src="https://raw.githubusercontent.com/topoteretes/cognee/refs/heads/dev/assets/cognee-logo-transparent.png" alt="Cognee Logo" height="60">
</a>
Expand All @@ -7,6 +7,15 @@

cognee - memory layer for AI apps and Agents

<p align="center">
<a href="https://cognee.ai">Learn more</a>
·
<a href="https://discord.gg/NQPKmU5CCg">Join Discord</a>
·
<a href="https://www.youtube.com/watch?v=1bezuvLwJmw&t=2s">Demo</a>
</p>


[![GitHub forks](https://img.shields.io/github/forks/topoteretes/cognee.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/network/)
[![GitHub stars](https://img.shields.io/github/stars/topoteretes/cognee.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/stargazers/)
[![GitHub commits](https://badgen.net/github.amrom.workers.devmits/topoteretes/cognee)](https://GitHub.com/topoteretes/cognee/commit/)
Expand All @@ -15,25 +24,37 @@
[![License](https://img.shields.io/github/license/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/blob/main/LICENSE)
[![Contributors](https://img.shields.io/github/contributors/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/graphs/contributors)

We build for developers who need a reliable, production-ready data layer for AI applications
AI Agent responses you can rely on.



Build dynamic Agent memory using scalable, modular ECL (Extract, Cognify, Load) pipelines.

More on [use-cases](https://docs.cognee.ai/use_cases).

<div style="text-align: center">
<img src="https://raw.githubusercontent.com/topoteretes/cognee/refs/heads/dev/assets/cognee_benefits.png" alt="Why cognee?" width="80%" />
</div>

# What is cognee?
</div>

Cognee implements scalable, modular ECL (Extract, Cognify, Load) pipelines that allow you to interconnect and retrieve past conversations, documents, and audio transcriptions while reducing hallucinations, developer effort, and cost.

Cognee merges graph and vector databases to uncover hidden relationships and new patterns in your data. You can automatically model, load and retrieve entities and objects representing your business domain and analyze their relationships, uncovering insights that neither vector stores nor graph stores alone can provide. Learn more about use-cases [here](https://docs.cognee.ai/use_cases).


Try it in a Google Colab <a href="https://colab.research.google.com/drive/1g-Qnx6l_ecHZi0IOw23rg0qC4TYvEvWZ?usp=sharing">notebook</a> or have a look at our <a href="https://docs.cognee.ai">documentation</a>.
## Features

- Interconnect and retrieve your past conversations, documents, images and audio transcriptions
- Reduce hallucinations, developer effort, and cost.
- Load data to graph and vector databases using only Pydantic
- Manipulate your data while ingesting from 30+ data sources

## Get Started

Get started quickly with a Google Colab <a href="https://colab.research.google.com/drive/1g-Qnx6l_ecHZi0IOw23rg0qC4TYvEvWZ?usp=sharing">notebook</a> or <a href="https://github.com/topoteretes/cognee-starter">starter repo</a>


If you have questions, join our <a href="https://discord.gg/NQPKmU5CCg">Discord</a> community.

Have you seen cognee's <a href="https://github.com/topoteretes/cognee-starter">starter repo</a>? Check it out!

<div style="text-align: center">
<img src="https://raw.githubusercontent.com/topoteretes/cognee/refs/heads/dev/assets/cognee_benefits.png" alt="Why cognee?" width="80%" />
</div>


## 📦 Installation
Expand All @@ -46,17 +67,6 @@ You can install Cognee using either **pip**, **poetry**, **uv** or any other pyt
pip install cognee
```

### With poetry

```bash
poetry add cognee
```

### With uv
```bash
uv add cognee
```

## 💻 Basic Usage

### Setup
Expand All @@ -66,12 +76,8 @@ import os
os.environ["LLM_API_KEY"] = "YOUR OPENAI_API_KEY"

```
or
```
import cognee
cognee.config.set_llm_api_key("YOUR_OPENAI_API_KEY")
```
You can also set the variables by creating .env file, here is our <a href="https://github.com/topoteretes/cognee/blob/main/.env.template">template.</a>

You can also set the variables by creating .env file, using our <a href="https://github.com/topoteretes/cognee/blob/main/.env.template">template.</a>
To use different LLM providers, for more info check out our <a href="https://docs.cognee.ai">documentation</a>


Expand All @@ -92,11 +98,8 @@ from cognee.modules.search.types import SearchType

async def main():
# Create a clean slate for cognee -- reset data and system state
print("Resetting cognee data...")
await cognee.prune.prune_data()
await cognee.prune.prune_system(metadata=True)
print("Data reset complete.\n")

# cognee knowledge graph will be created based on this text
text = """
Natural language processing (NLP) is an interdisciplinary
Expand All @@ -107,17 +110,6 @@ async def main():
print(text.strip())
# Add the text, and make it available for cognify
await cognee.add(text)
print("Text added successfully.\n")


print("Running cognify to create knowledge graph...\n")
print("Cognify process steps:")
print("1. Classifying the document: Determining the type and category of the input text.")
print("2. Checking permissions: Ensuring the user has the necessary rights to process the text.")
print("3. Extracting text chunks: Breaking down the text into sentences or phrases for analysis.")
print("4. Adding data points: Storing the extracted chunks for processing.")
print("5. Generating knowledge graph: Extracting entities and relationships to form a knowledge graph.")
print("6. Summarizing text: Creating concise summaries of the content for quick insights.\n")

# Use LLMs and cognee to create knowledge graph
await cognee.cognify()
Expand Down Expand Up @@ -149,103 +141,25 @@ if __name__ == '__main__':
asyncio.run(main())

```
When you run this script, you will see step-by-step messages in the console that help you trace the execution flow and understand what the script is doing at each stage.
A version of this example is here: `examples/python/simple_example.py`
For more advanced usage, have a look at our <a href="https://docs.cognee.ai"> documentation</a>.


## Understand our architecture

Cognee consists of tasks that can be grouped into pipelines.
Each task can be an independent part of business logic, that can be tied to other tasks to form a pipeline.
These tasks persist data into your memory store enabling you to search for relevant context of past conversations, documents, or any other data you have stored.
<div style="text-align: center">
<img src="assets/cognee_diagram.png" alt="cognee concept diagram" width="80%" />
</div>


## Vector retrieval, Graphs and LLMs

Cognee supports a variety of tools and services for different operations:
- **Modular**: Cognee is modular by nature, using tasks grouped into pipelines

- **Local Setup**: By default, LanceDB runs locally with NetworkX and OpenAI.

- **Vector Stores**: Cognee supports LanceDB, Qdrant, PGVector and Weaviate for vector storage.
## Demos

- **Language Models (LLMs)**: You can use either Anyscale or Ollama as your LLM provider.

- **Graph Stores**: In addition to NetworkX, Neo4j is also supported for graph storage.

- **User management**: Create individual user graphs and manage permissions

## Demo

Check out our demo notebook [here](https://github.com/topoteretes/cognee/blob/main/notebooks/cognee_demo.ipynb) or watch the Youtube video below
What is AI memory:


[<img src="https://img.youtube.com/vi/fI4hDzguN5k/maxresdefault.jpg" width="100%">](https://www.youtube.com/watch?v=fI4hDzguN5k "Learn about cognee: 55")


## Install Cognee with specific database support
Support for various databases and vector stores is available through extras.
Please see the [Cognee Quickstart Guide](https://docs.cognee.ai/quickstart/) for important configuration information.

### With pip

To install Cognee with support for specific databases use the appropriate command below. Replace \<database> with the name of the database you need.
```bash
pip install 'cognee[<database>]'
```

Replace \<database> with any of the following databases:
- postgres
- weaviate
- qdrant
- neo4j
- milvus

Installing Cognee with PostgreSQL and Neo4j support example:
```bash
pip install 'cognee[postgres, neo4j]'
```

### With poetry

To install Cognee with support for specific databases use the appropriate command below. Replace \<database> with the name of the database you need.
```bash
poetry add cognee -E <database>
```
Replace \<database> with any of the following databases:
- postgres
- weaviate
- qdrant
- neo4j
- milvus

Installing Cognee with PostgreSQL and Neo4j support example:
```bash
poetry add cognee -E postgres -E neo4j
```

## Working with local Cognee

Install dependencies inside the cloned repository:

```bash
poetry config virtualenvs.in-project true
poetry self add poetry-plugin-shell
poetry install
poetry shell
```


## Run Cognee API server

Please see the [Cognee Quickstart Guide](https://docs.cognee.ai/quickstart/) for important configuration information.

```bash
docker compose up
```

## Contributing

Expand All @@ -267,17 +181,3 @@ We are committed to making open source an enjoyable and respectful experience fo
[![Star History Chart](https://api.star-history.com/svg?repos=topoteretes/cognee&type=Date)](https://star-history.com/#topoteretes/cognee&Date)


## Vector & Graph Databases Implementation State



| Name | Type | Current state (Mac/Linux) | Known Issues | Current state (Windows) | Known Issues |
|----------|--------------------|---------------------------|--------------|-------------------------|--------------|
| Qdrant | Vector | Stable &#x2705; | | Unstable &#x274C; | |
| Weaviate | Vector | Stable &#x2705; | | Unstable &#x274C; | |
| LanceDB | Vector | Stable &#x2705; | | Stable &#x2705; | |
| Neo4j | Graph | Stable &#x2705; | | Stable &#x2705; | |
| NetworkX | Graph | Stable &#x2705; | | Stable &#x2705; | |
| FalkorDB | Vector/Graph | Stable &#x2705; | | Unstable &#x274C; | |
| PGVector | Vector | Stable &#x2705; | | Unstable &#x274C; | |
| Milvus | Vector | Stable &#x2705; | | Unstable &#x274C; | |