--- id: cognee title: Cognee sidebar_label: Cognee --- ## Quick Summary Cognee is an open-source framework for anyone to easily implement graph RAG into their LLM application. You can learn more by visiting their [website here.](https://www.cognee.ai/) :::info With Cognee, you should see an increase in your [`ContextualRelevancyMetric`](/docs/metrics-contextual-relevancy), [`ContextualRecallMetric`](/docs/metrics-contextual-recall), and [`ContextualPrecisionMetric`](/docs/metrics-contextual-precision) scores. ::: Unlike traditional vector databases that relies on simple embedding retrieval and re-rankings to retrieve `retrieval_context`s, Cognee stores and creates a "semantic graph" out of your data, which allows for more accurate retrievals. ## Setup Cognee Simply add your LLM API key to the environment variables: ```bash import os os.environ["LLM_API_KEY"] = "YOUR_OPENAI_API_KEY" ``` For those on Networkx, you can also create an account on Graphistry to visualize results: ```python import cognee cognee.config.set_graphistry_config({ "username": "YOUR_USERNAME", "password": "YOUR_PASSWORD" }) ``` Finally, ingest your data into Cognee and run some retrievals: ```python from cognee.api.v1.search import SearchType ... text = "Cognee is the Graph RAG Framework" await cognee.add(text) # add a new piece of information await cognee.cognify() # create a semantic graph using cognee retrieval_context = await cognee.search(SearchType.INSIGHTS, query_text="What is Cognee?") for context in retrieval_context: print(context) ``` ## Evaluating Cognee RAG Pipelines Unit testing RAG pipelines powered by Cognee is as simple as defining an `EvaluationDataset` and generating `actual_output`s and `retrieval_context`s at evaluation time. Building upon the previous example, first generate all the necessarily parameters required to test RAG: ```python main.py ... input = "What is Cognee?" retrieval_context = await cognee.search(SearchType.INSIGHTS, query_text="What is Cognee?") prompt = """ Answer the user question based on the supporting context User Question: {input} Supporting Context: {retrieval_context} """ actual_output = generate(prompt) # hypothetical function, replace with your own LLM ``` Then, simply run `evaluate()`: ```python from deepeval.metrics import ( ContextualRecallMetric, ContextualPrecisionMetric, ContextualRelevancyMetric, ) from deepeval.test_case import LLMTestCase from deepeval import evaluate ... test_case = LLMTestCase( input=input, actual_output=actual_output, retrieval_context=retrieval_context, expected_output="Cognee is the Graph RAG Framework.", ) evaluate( [test_case], metrics=[ ContextualRecallMetric(), ContextualPrecisionMetric(), ContextualRelevancyMetric(), ], ) ``` That's it! Do you notice an increase in the contextual metric scores?