Metadata-Version: 2.1
Name: cognee
Version: 0.1.9
Summary: Cognee - is a library for enriching LLM context with a semantic layer for better understanding and reasoning.
Home-page: https://www.cognee.ai
License: Apache-2.0
Author: Vasilije Markovic
Requires-Python: >=3.9.0,<3.12
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Libraries
Provides-Extra: cli
Provides-Extra: duckdb
Provides-Extra: filesystem
Provides-Extra: motherduck
Provides-Extra: neo4j
Provides-Extra: notebook
Provides-Extra: parquet
Provides-Extra: qdrant
Provides-Extra: weaviate
Requires-Dist: aiofiles (>=23.2.1,<24.0.0)
Requires-Dist: aiosqlite (>=0.20.0,<0.21.0)
Requires-Dist: anthropic (>=0.26.1,<0.27.0)
Requires-Dist: boto3 (>=1.26.125,<2.0.0)
Requires-Dist: debugpy (>=1.8.0,<2.0.0)
Requires-Dist: dlt (==0.4.10)
Requires-Dist: dspy-ai (==2.4.3)
Requires-Dist: duckdb-engine (>=0.11.2,<0.12.0)
Requires-Dist: duckdb[dlt] (>=0.10.0,<0.11.0) ; extra == "duckdb" or extra == "motherduck"
Requires-Dist: falkordb (>=1.0.4,<2.0.0)
Requires-Dist: fastapi (>=0.109.2,<0.110.0)
Requires-Dist: fastembed (>=0.2.5,<0.3.0)
Requires-Dist: filetype (>=1.2.0,<2.0.0)
Requires-Dist: graphistry (>=0.33.5,<0.34.0)
Requires-Dist: greenlet (>=3.0.3,<4.0.0)
Requires-Dist: groq (>=0.5.0,<0.6.0)
Requires-Dist: gunicorn (>=20.1.0,<21.0.0)
Requires-Dist: importlib-metadata (==6.8.0)
Requires-Dist: instructor (==1.2.1)
Requires-Dist: jinja2 (>=3.1.3,<4.0.0)
Requires-Dist: lancedb (>=0.6.10,<0.7.0)
Requires-Dist: langchain-community (==0.0.38)
Requires-Dist: langfuse (>=2.32.0,<3.0.0)
Requires-Dist: litellm (>=1.37.3,<2.0.0)
Requires-Dist: matplotlib (>=3.8.3,<4.0.0)
Requires-Dist: neo4j (==5.20.0) ; extra == "neo4j"
Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
Requires-Dist: networkx (>=3.2.1,<4.0.0)
Requires-Dist: nltk (>=3.8.1,<4.0.0)
Requires-Dist: openai (==1.14.3)
Requires-Dist: overrides (>=7.7.0,<8.0.0) ; extra == "notebook"
Requires-Dist: pandas (>=2.2.0,<3.0.0)
Requires-Dist: posthog (>=3.5.0,<4.0.0)
Requires-Dist: protobuf (<5.0.0)
Requires-Dist: pyarrow (>=15.0.0,<16.0.0) ; extra == "parquet" or extra == "motherduck"
Requires-Dist: pydantic (>=2.5.0,<3.0.0)
Requires-Dist: pydantic-settings (>=2.2.1,<3.0.0)
Requires-Dist: pylint (>=3.0.3,<4.0.0)
Requires-Dist: pypdf (>=4.1.0,<5.0.0)
Requires-Dist: python-dotenv (==1.0.1)
Requires-Dist: python-multipart (>=0.0.9,<0.0.10)
Requires-Dist: qdrant-client (>=1.9.0,<2.0.0) ; extra == "qdrant"
Requires-Dist: ruff (>=0.2.2,<0.3.0)
Requires-Dist: scikit-learn (>=1.4.1.post1,<2.0.0)
Requires-Dist: spacy (>=3.7.4,<4.0.0)
Requires-Dist: sqlalchemy (>=2.0.21,<3.0.0)
Requires-Dist: structlog (>=24.1.0,<25.0.0)
Requires-Dist: tantivy (>=0.21.0,<0.22.0)
Requires-Dist: tenacity (>=8.2.3,<9.0.0)
Requires-Dist: tiktoken (>=0.6.0,<0.7.0)
Requires-Dist: uvicorn (==0.22.0)
Requires-Dist: weaviate-client (>=4.5.4,<5.0.0) ; extra == "weaviate"
Project-URL: Repository, https://github.com/topoteretes/cognee
Description-Content-Type: text/markdown

# cognee

Deterministic LLMs Outputs for AI Engineers using graphs, LLMs and vector retrieval


<p>
  <a href="https://cognee.ai" target="_blank">
    <img src="https://raw.githubusercontent.com/topoteretes/cognee/main/assets/cognee-logo.png" width="160px" alt="Cognee logo" />
  </a>
</p>


<p>
  <i>Open-source framework for creating self-improving deterministic outputs for LLMs.</i>
</p>

<p>
  <a href="https://github.com/topoteretes/cognee/fork">
    <img src="https://img.shields.io/github/forks/topoteretes/cognee?style=for-the-badge" alt="cognee forks"/>
  </a>
  <a href="https://github.com/topoteretes/cognee/stargazers">
    <img src="https://img.shields.io/github/stars/topoteretes/cognee?style=for-the-badge" alt="cognee stars"/>
  </a>
  <a href="https://github.com/topoteretes/cognee/pulls">
    <img src="https://img.shields.io/github/issues-pr/topoteretes/cognee?style=for-the-badge" alt="cognee pull-requests"/>
  </a>
  <a href="https://github.com/topoteretes/cognee/releases">
    <img src="https://img.shields.io/github/release/topoteretes/cognee?&label=Latest&style=for-the-badge" alt="cognee releases" />
  </a>
</p>

![Cognee Demo](assets/cognee_demo.gif)


Try it in a Google collab  <a href="https://colab.research.google.com/drive/184Kpe9XGjrt8nVss0WDiPsPRrPk5lZ6o?usp=sharing">notebook</a>  or have a look at our <a href="https://topoteretes.github.io/cognee">documentation</a>

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





## 📦 Installation

### With pip

```bash
pip install cognee
```


### With poetry

```bash
poetry add cognee
```


## 💻 Usage

### Setup

```
import os

os.environ["LLM_API_KEY"] = "YOUR OPENAI_API_KEY"

```
or 
```
import cognee
cognee.config.llm_api_key = "YOUR_OPENAI_API_KEY"
```

You can also use Ollama or Anyscale as your LLM provider. For more info on local models check our [docs](https://topoteretes.github.io/cognee)

### Run

```
import cognee

text = """Natural language processing (NLP) is an interdisciplinary
       subfield of computer science and information retrieval"""

cognee.add([text], "example_dataset") # Add a new piece of information

cognee.cognify() # Use LLMs and cognee to create knowledge

search_results = cognee.search("SIMILARITY", "computer science") # Query cognee for the knowledge

for result_text in search_results[0]:
    print(result_text)

```
Add alternative data types:
```
cognee.add("file://{absolute_path_to_file}", dataset_name)
```
Or
```
cognee.add("data://{absolute_path_to_directory}", dataset_name)

# This is useful if you have a directory with files organized in subdirectories.
# You can target which directory to add by providing dataset_name.
# Example:
#            root
#           /    \
#      reports  bills
#     /       \
#   2024     2023
#
# cognee.add("data://{absolute_path_to_root}", "reports.2024")
# This will add just directory 2024 under reports.
```

Read more [here](docs/index.md#run).

## Vector retrieval, Graphs and LLMs

Cognee supports a variety of tools and services for different operations:

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

- **Vector Stores**: Cognee supports Qdrant and Weaviate for vector storage.

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

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

## Demo

Check out our demo notebook [here](https://github.com/topoteretes/cognee/blob/main/notebooks/cognee%20-%20Get%20Started.ipynb)



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





## How it works





![Image](assets/architecture.png)


## Star History


[![Star History Chart](https://api.star-history.com/svg?repos=topoteretes/cognee&type=Date)](https://star-history.com/#topoteretes/cognee&Date)

