From 06b782ccc2394e87cff9ebe1f939ee9787917b02 Mon Sep 17 00:00:00 2001 From: Vasilije <8619304+Vasilije1990@users.noreply.github.com> Date: Sun, 26 May 2024 21:42:54 +0200 Subject: [PATCH] Updates to the configs --- cognee/api/v1/config/config.py | 8 ++++ docs/api_reference.md | 79 +++++---------------------------- docs/conceptual_overview.md | 38 +++++++++------- docs/img/bad_architecture.png | Bin 0 -> 46458 bytes docs/img/good_architecture.png | Bin 0 -> 41256 bytes docs/index.md | 3 +- docs/local_models.md | 22 ++++----- docs/quickstart.md | 8 ++-- docs/why.md | 31 ++++++------- 9 files changed, 70 insertions(+), 119 deletions(-) create mode 100644 docs/img/bad_architecture.png create mode 100644 docs/img/good_architecture.png diff --git a/cognee/api/v1/config/config.py b/cognee/api/v1/config/config.py index 8d8e34996..83b725453 100644 --- a/cognee/api/v1/config/config.py +++ b/cognee/api/v1/config/config.py @@ -57,6 +57,14 @@ class config(): def llm_provider(llm_provider: str): graph_config.llm_provider = llm_provider + @staticmethod + def llm_endpoint(llm_endpoint: str): + graph_config.llm_endpoint = llm_endpoint + + @staticmethod + def llm_model(llm_model: str): + graph_config.llm_model = llm_model + @staticmethod def intra_layer_score_treshold(intra_layer_score_treshold: str): cognify_config.intra_layer_score_treshold =intra_layer_score_treshold diff --git a/docs/api_reference.md b/docs/api_reference.md index 532c5e3e8..4e29ea265 100644 --- a/docs/api_reference.md +++ b/docs/api_reference.md @@ -23,9 +23,6 @@ The config class in this module offers a series of static methods to configure t Import the module as follows: -```python -from cognee.config import config -``` ## Methods @@ -35,7 +32,7 @@ Sets the root directory of the system where essential system files and operation system_root_directory (str): The path to set as the system's root directory. Example: ```python -config.system_root_directory('/path/to/system/root') +cognee.config.system_root_directory('/path/to/system/root') ``` ### data_root_directory(data_root_directory: str) @@ -45,8 +42,8 @@ data_root_directory (str): The path to set as the data root directory. Example: ```python - -config.data_root_directory('/path/to/data/root') +import cognee +cognee.config.data_root_directory('/path/to/data/root') ``` ### set_classification_model(classification_model: object) @@ -56,7 +53,8 @@ classification_model (object): The Pydantic model to use for classification. Check cognee.shared.data_models for existing models. Example: ```python -config.set_classification_model(model) +import cognee +cognee.config.set_classification_model(model) ``` set_summarization_model(summarization_model: object) @@ -66,7 +64,8 @@ summarization_model (object): The model to use for summarization. Check cognee.shared.data_models for existing models. Example: ```python -config.set_summarization_model(my_summarization_model) +import cognee +cognee.config.set_summarization_model(my_summarization_model) ``` ### set_llm_model(llm_model: object) @@ -74,7 +73,8 @@ Determines the model to handle LLMs. Parameters: llm_model (object): The model to use for LLMs. Example: ```python -config.set_llm_model("OpenAI") +import cognee +cognee.config.set_llm_model("openai") ``` ### set_graph_engine(graph_engine: object) @@ -85,7 +85,7 @@ Example: ```python from cognee.shared.data_models import GraphDBType -config.set_graph_engine(GraphDBType.NEO4J) +cognee.config.set_graph_engine(GraphDBType.NEO4J) ``` @@ -122,62 +122,5 @@ For each API endpoint, provide the following details: "status": "OK" } ``` -### Endpoint 2: Add -- URL: /Add -- Method: POST -- Auth Required: Yes | No -- Description: This endpoint is responsible for adding data to the graph. -#### Parameters -| Name | Type | Required | Description | -| --- |--------------------------------------------------| --- | --- | -| data | Union[str, BinaryIO, List[Union[str, BinaryIO]]] | Yes | The data to be added| -| dataset_id | UUID | Yes | The ID of the dataset. | -| dataset_name | String | Yes | The name of the dataset.| - - - -#### Response -```json -{ - "response": "data" -} -``` - -### Endpoint 3: Cognify -- URL: /cognify -- Method: POST -- Auth Required: Yes | No -- Description: This endpoint is responsible for the cognitive processing of the content. - -#### Parameters -| Name | Type | Required | Description | -| --- |--------------------------------------------------| --- | --- | -| datasets | Union[str, List[str]] | Yes | The data to be added| - - -#### Response -```json -{ - "response": "data" -} -``` - - -### Endpoint 4: search -- URL: /search -- Method: POST -- Auth Required: No -- Description: This endpoint is responsible for searching for nodes in the graph. -#### Parameters -| Name | Type | Required | Description | -| --- | --- | --- | --- | -| query_params | Dict[str, Any] | Yes | Description of the parameter. | - - -#### Response -```json -{ - "response": "data" -} -``` \ No newline at end of file +More endpoints are available in the FastAPI server. Documentation is in progress diff --git a/docs/conceptual_overview.md b/docs/conceptual_overview.md index 1852ef683..3e4041626 100644 --- a/docs/conceptual_overview.md +++ b/docs/conceptual_overview.md @@ -3,33 +3,41 @@ ## Introduction !!! info "What is cognee?" - cognee is a framework for data processing that enables LLMs to produce for deterministic and traceable outputs. + cognee is a data processing framework that enables LLMs to produce deterministic and traceable outputs. -cognee focuses on creating tools that assist developers in introducing greater predictability and management into their Retrieval-Augmented Generation (RAG) workflows through the use of graph architectures, vector stores and auto-optimizing pipelines. +cognee assists developers in introducing greater predictability and management into their Retrieval-Augmented Generation (RAG) workflows through the use of graph architectures, vector stores, and auto-optimizing pipelines. - -Displaying this information as a graph is the clearest method to grasp the content of your documents. Crucially, using a graph allows for the systematic navigation and extraction of data from documents based on your grasp of a document's organization, an idea often termed 'document hierarchies'. +Displaying information as a graph is the clearest way to grasp the content of your documents. Crucially, graphs allow systematic navigation and extraction of data from documents based on their hierarchy. ## Core Concepts ### Concept 1: Data Pipelines -Most of the data we provide to a system can be understood as unstructured, semi-structured or structured. Rows from a database would belong to structured data, jsons to semi-structured data and logs could be unstructured. -To organize and process this data, we need to make sure to have custom loaders for all data types and also to unify and organize the data well together. +Most of the data we provide to a system can be categorized as unstructured, semi-structured, or structured. Rows from a database would belong to structured data, jsons to semi-structured data, and logs that we input into the system could be considered unstructured. +To organize and process this data, we need to ensure we have custom loaders for all data types, which can help us unify and organize it properly.
![Data Pipelines](img/pipelines.png)
Data Pipeline Example
-In the example above, we have a data pipeline that imports the data from various sources, normalizes it, and stores it in a database. It also creates relevant identifiers and relationships between the data. +In the example above, we have a pipeline in which data has been imported from various sources, normalized, and stored in a database. Relevant identifiers and relationships between the data are also created in this process. +To create an effective data pipeline for processing various types of data—structured, semi-structured, and unstructured—it’s crucial to understand each type's specific handling and processing needs. Let's expand on the concepts involved in setting up such a data pipeline. + +Data Types and Their Handling +- Structured Data: This includes data that adheres to a fixed schema, such as rows in a relational database or data in CSV files. The processing of structured data typically involves SQL queries for extraction, transformations through simple functions or procedures, and loading into destination tables or databases. + +- Semi-structured Data: JSON files, XML, or even some APIs' data fit this category. These data types don't have a rigid schema but have some organizational properties that can be exploited. Semi-structured data often requires parsers that can navigate its structure (like trees for XML or key-value pairs for JSON) to extract necessary information. Libraries such as json in Python or lxml for XML handling can be very useful here. + +- Unstructured Data: This category includes text files, logs, or even images and videos. + + ### Concept 2: Data Enrichment with LLMs -LLMs are adept at processing unstructured data. We can easily extract summaries, keywords, and other useful information from documents. +LLMs are adept at processing unstructured data. They can easily extract summaries, keywords, and other useful information from documents. We use function calling with Pydantic models to extract the data and dspy to train our functions.
![Data Enrichment](img/enrichment.png)
Data Enrichment Example
-We decompose content into graphs, allowing us to more precisely map out the relationships between entities and concepts. - +We decompose the loaded content into graphs, allowing us to more precisely map out the relationships between entities and concepts. ### Concept 3: Linguistic Analysis LLMs are probabilistic models, meaning they can make mistakes. To mitigate this, we can use a combination of NLP and LLMs to determine how to analyze the data and score each part of the text. @@ -61,7 +69,7 @@ This involves bombarding the RAG system with hundreds of synthetic questions, en This method paves the way for developing self-improving memory engines that can adapt to new data and user feedback. ## Architecture Overview -A high-level diagram of the cognee's architecture, illustrating the main components and their interactions. +A high-level diagram of cognee's architecture, illustrating the main components and their interactions.
![Architecture](img/architecture.png) @@ -80,11 +88,7 @@ Main components: ## How It Fits Into Your Projects !!! info "How cognee fits into your projects" - cognee is a self-contained library that simplifies the process of loading and structuring LLM context. It can be integrated into your data pipelines to enhance your AI applications. - -By integrating cognee into your data pipelines, you can leverage the power of LLMs, knowledge graphs, and vector retrieval to enhance your AI applications. + cognee is a self-contained library that simplifies the process of loading and structuring data in LLMs. +By integrating cognee into your data pipelines, you can leverage the power of LLMs, knowledge graphs, and vector retrieval to create accurate and explainable AI solutions. cognee provides a self-contained library that simplifies the process of loading and structuring LLM context, enabling you to create accurate and explainable AI solutions. - -Check out some [case studies](case_studies.md) to see how cognee has been used in real-world applications. - diff --git a/docs/img/bad_architecture.png b/docs/img/bad_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..66c350802d21da1f3bd74dae6a3ae84cf2b4994c GIT binary patch literal 46458 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 z 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

*DGPhV-O#%J^hb zF!%oSN+$=tQsq3HFR4y%eaWPX(@wi(+ypJpuU^HyClWoFMAIb5u41}QP{t)^G- z%Vow5-FF?Y;)aj!)n4e`Mv_pW4?B7#*4G|p^|8NEMQ|{EC%r|!djvev_w16DVq^Zv ze*f=3z9=+i%sC(Q`KJg-Jol;2Hj2Y;zM|vxwdR1ZHeWKfHb^3ViT;z%2dfRAe-uN5&6qZ* z{o3Hk&?DG;&HwF${~~-wkaKE<({@_3wc?c6S9P-XH?Bt1!k*3dak#p7Npa2t$~zoN zW(C1jO$hHnd1SaQf@0l724xPhlH(1FDrnd+_-AP1=ss!EPkrB)^$u`XF#TUf5A%oAwJYS y^KmEjsFu&r2?V^^UW|{i+KmG%PCg#`x literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 0d560ba80..068b319d9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -18,8 +18,7 @@ _Open-source framework for loading and structuring LLM context to create accurat ### Let's learn about cogneeHub! -cogneeHub is a free and open-sourced learning platform for those interested in creating deterministic LLM outputs. -We help people with using graphs, LLMs and adding vector retrieval to their ML stack. +cogneeHub is a free, open-source learning platform for those interested in creating deterministic LLM outputs. We help developers by using graphs, LLMs, and adding vector retrieval to their Machine Learning stack. - **Get started** — [Get started with cognee quickly and try it out for yourself.](quickstart.md) - **Conceptual Overview** — Learn about the [core concepts](conceptual_overview.md) of cognee and how it fits into your projects. diff --git a/docs/local_models.md b/docs/local_models.md index 52064c755..f83f2f03b 100644 --- a/docs/local_models.md +++ b/docs/local_models.md @@ -10,7 +10,7 @@ You'll need to run the local model on your machine or use one of the providers h Set up Ollama by following instructions on [Ollama website](https://ollama.com/) -Set the environment variable to use the model +Set the environment variable in your .env to use the model ```bash LLM_PROVIDER = 'ollama' @@ -19,18 +19,15 @@ LLM_PROVIDER = 'ollama' Otherwise, you can set the configuration for the model: ```bash -from cognee.infrastructure import infrastructure_config -infrastructure_config.set_config({ - "llm_provider": 'ollama' -}) +cognee.config.llm_provider = 'ollama' ``` You can also set the HOST and model name: ```bash -CUSTOM_OLLAMA_ENDPOINT= "http://localhost:11434/v1" -CUSTOM_OLLAMA_MODEL = "mistral:instruct" +cognee.config.llm_endpoint = "http://localhost:11434/v1" +cognee.config.llm_model = "mistral:instruct" ``` @@ -43,17 +40,14 @@ LLM_PROVIDER = 'custom' Otherwise, you can set the configuration for the model: ```bash -from cognee.infrastructure import infrastructure_config -infrastructure_config.set_config({ - "llm_provider": 'custom' -}) +cognee.config.llm_provider = 'custom' ``` You can also set the HOST and model name: ```bash -CUSTOM_LLM_MODEL = "mistralai/Mixtral-8x7B-Instruct-v0.1" -CUSTOM_ENDPOINT = "https://api.endpoints.anyscale.com/v1" -CUSTOM_LLM_API_KEY = "your_api_key" +LLM_MODEL = "mistralai/Mixtral-8x7B-Instruct-v0.1" +LLM_ENDPOINT = "https://api.endpoints.anyscale.com/v1" +LLM_API_KEY = "your_api_key" ``` You can set the same way HOST and model name for any other provider that has an API endpoint. diff --git a/docs/quickstart.md b/docs/quickstart.md index affa97d0f..ae7ab68a5 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -13,10 +13,12 @@ You can also use Ollama or Anyscale as your LLM provider. For more info on local ``` import os -os.environ["WEAVIATE_URL"] = "YOUR_WEAVIATE_URL" -os.environ["WEAVIATE_API_KEY"] = "YOUR_WEAVIATE_API_KEY" +os.environ["LLM_API_KEY"] = "YOUR_OPENAI_API_KEY" +``` +or +``` +cognee.config.llm_api_key = "YOUR_OPENAI_API_KEY" -os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" ``` ## Run diff --git a/docs/why.md b/docs/why.md index 3ca396387..040cefb76 100644 --- a/docs/why.md +++ b/docs/why.md @@ -1,28 +1,29 @@ # Why use cognee? +cognee is one of the first OSS tools that enables easy, scalable and flexible use of LLMs to process large volumes of documents using GraphRAG approach. + LLMs don't have a semantic layer, and they don't have a way to understand the data they are processing. This is where cognee comes in. We let you define logical structures for your data and then use these structures to guide the LLMs to process the data in a way that makes sense to you. +cognee helps you avoid the overly complicated set of tools and processes to give you somewhat reliable output +***From*** + +![Bad Architecture](img/bad_architecture.png) + +***To*** + +![Good Architecture](img/good_architecture.png) + ??? note "Why use cognee?" - Its hard to answer the question of why use cognee without answering why you need thin LLM frameworks in the first place.: - - **Cost effective** — cognee extends the capabilities of your LLMs without the need for expensive data processing tools. - - **Self contained** — cognee runs as a library and is simple to use - - **Easy to use** — cognee is simple to use and can be used by anyone with a basic understanding of Python - - **Flexible** — cognee can be used to structure data in any way you want, and can be used to structure data in any way you want. We rely on the work done by Pydantic and are inspired by the Instructor library, which is a simple way to structure data for LLMs. + Its hard to answer the question of why use cognee without answering why you need thin LLM frameworks in the first place.:) + - **Cost-effective** — cognee extends the capabilities of your LLMs without the need for expensive data processing tools. + - **Self-contained** — cognee runs as a simple-to-use library meaning you can add it to your application easily + - **Easy to use** — Navigate graphs instead of embeddings to understand your data faster and better + - **Flexible** — cognee lets you control your input and provide your own Pydantic data models. -## Bring your own data model - -If you are building an AI vertical, most of the time you will have a specific data model that you want to use. Cognee lets you bring your own data model and use it to structure your data in a way that makes sense to you. - - -## Data processing - -With dlt you can avoid all the boilerplate code that comes with data processing. We let you define logical structures for your data and then use these structures, deduplicated, incremental and replayable - -