2178 lines
801 KiB
Text
2178 lines
801 KiB
Text
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d35ac8ce-0f92-46f5-9ba4-a46970f0ce19",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Cognee - Get Started"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bd981778-0c84-4542-8e6f-1a7712184873",
|
||
"metadata": {
|
||
"editable": true,
|
||
"slideshow": {
|
||
"slide_type": ""
|
||
},
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"## Let's talk about the problem first\n",
|
||
"\n",
|
||
"### Large Language Models (LLMs) have become powerful tools for generating text and answering questions, but they still have several limitations and challenges. Below is an overview of some of the biggest problems with the results they produce:\n",
|
||
"\n",
|
||
"### 1. Hallucinations and Misinformation\n",
|
||
"- Hallucinations: LLMs sometimes produce outputs that are factually incorrect or entirely fabricated. This phenomenon is known as \"hallucination.\" Even if an LLM seems confident, the information it provides might not be reliable.\n",
|
||
"- Misinformation: Misinformation can be subtle or glaring, ranging from minor inaccuracies to entirely fictitious events, sources, or data.\n",
|
||
"\n",
|
||
"### 2. Lack of Contextual Understanding\n",
|
||
"- LLMs can recognize and replicate patterns in language but don’t have true comprehension. This can lead to responses that are coherent but miss nuanced context or deeper meaning.\n",
|
||
"- They can misinterpret multi-turn conversations, leading to confusion in maintaining context over a long dialogue.\n",
|
||
"\n",
|
||
"### 3. Inconsistent Reliability\n",
|
||
"- Depending on the prompt, LLMs might produce inconsistent responses to similar questions or tasks. For example, the same query might result in conflicting answers when asked in slightly different ways.\n",
|
||
"- This inconsistency can undermine trust in the model's outputs, especially in professional or academic settings.\n",
|
||
"\n",
|
||
"### 4. Inability to Access Real-Time Information\n",
|
||
"- Most LLMs are trained on data up to a specific point and cannot access or generate information on current events or emerging trends unless updated. This can make them unsuitable for inquiries requiring up-to-date information.\n",
|
||
"- Real-time browsing capabilities can help, but they are not universally available.\n",
|
||
"\n",
|
||
"### 5. Lack of Personalization and Adaptability\n",
|
||
"- LLMs do not naturally adapt to individual preferences or learning styles unless explicitly programmed to do so. This limits their usefulness in providing personalized recommendations or support.\n",
|
||
"\n",
|
||
"### 6. Difficulty with Highly Technical or Niche Domains\n",
|
||
"- LLMs may struggle with highly specialized or technical topics where domain-specific knowledge is required.\n",
|
||
"- They can produce technically plausible but inaccurate or incomplete information, which can be misleading in areas like law, medicine, or scientific research.\n",
|
||
"\n",
|
||
"### 7. Ambiguity in Response Generation\n",
|
||
"- LLMs might not always specify their level of certainty, making it hard to gauge when they are speculating or providing less confident answers.\n",
|
||
"- They lack a mechanism to say “I don’t know,” which can lead to responses that are less useful or potentially misleading."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d8e606b1-94d3-43ce-bb4b-dbadff7f4ca6",
|
||
"metadata": {},
|
||
"source": [
|
||
"## The next solution was RAGs \n",
|
||
"\n",
|
||
"#### RAGs (Retrieval Augmented Generation) are systems that connect to a vector store and search for similar data so they can enrich LLM response."
|
||
]
|
||
},
|
||
{
|
||
"attachments": {
|
||
"df72c97a-cb3b-4e3c-bd68-d7bc986353c6.png": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABGcAAAISCAYAAABh6KIgAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAeGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAAqACAAQAAAABAAAEZ6ADAAQAAAABAAACEgAAAADwIQMWAAAgAElEQVR4nOzdd5wV1dnA8d+ZuXc7uwtLh4VdEKQIrAVQqQZQE1RAjf21J7HGEmNiYowmeVPeJGqM0RQLYOyFbkwURMWCgAIiIG0XEFjKwvZ675z3jyl35t5dJCbCLveZz4d7Z+aU73nOXLacPXNGaa01zWwaUHEntIqd0xqU8uf1lXB3NaA0GhWsK7F28cUXX3zxxRdffPHFF1988cUXX/yk9I3YgQ4kqvgxGxVXndL+pCDmpim7EV6KW0SruBPiiy+++OKLL7744osvvvjiiy+++MnpK21pHVTtIl5xrVHOEJH/fPyWkBZ3ormyOtZ+8cUXX3zxxRdffPHFF1988cUXX/yk9I3EGv15Yw2DhDEcN3tCGcAZHNJeniDjc8QXX3zxxRdffPHFF1988cUXX3zxk9hX2t4CjQhUp8Ed3olLIXY2eCZh086LaiYNEF988cUXX3zxxRdffPHFF1988cVPVl9prXV8A1R8Kw5hCxT5gvIJyeKLL7744osvvvjiiy+++OKLL774Seob2sulnALa3vUUHajRrTgI2VN+AkGpYCb/gjcKd4qQc1Z88cUXX3zxxRdffPHFF1988cUXP0l9pbWlnVPu4E3C1sLpQ94C5f0B+FLFF1988cUXX3zxxRdffPHFF1988ZPRN9yjlhpmp2mvHt18lkNomG+UKOCIL7744osvvvjiiy+++OKLL7744ievryytdbNt0trJ3HyLDxJLMILmK7cTNGjVUhbxxRdffPHFF1988cUXX3zxxRdf/KPfN5S/pkClCgikxjK47Q4m+sraGdxRn4RsboKKE8QXX3zxxRdffPHFF1988cUXX3zxk8yPzZzRdmbv/SCb9prdfMbElPgzsWNvT3zxxRdffPHFF1988cUXX3zxxRc/CX3DK+LueEsOa+efs+/bVU4B91Qsv/2e2GQVl0s5O7684osvvvjiiy+++OKLL7744osvvvhJ6BtupsSKVGBfq7jkQPN0XDnnrI6la3+qxqkv1kjxxRdffPHFF1988cUXX3zxxRdf/GT0ldZ2FV6V2leDvyUH2dycWoNSsfeEDF9QXnzxxRdffPHFF1988cUXX3zxxRc/2XyDuHK6mYZp3yveaFBsc3O6DQo0DO1l0M5LfA3iiy+++OKLL7744osvvvjiiy+++MnqK639mq9R3m5iQ90jb6QIDvqc8Pg6Wt7EF1988cUXX3zxxRdffPHFF1988ZPLjxucicMPWqWd+u+xsdwtBSS++OKLL7744osvvvjiiy+++OKLn0y+4T9JXF63Gh3I4e4qoLmViePyBupSXppCBzDxxRdffPHFF1988cUXX3zxxRdf/GT0jVjm+Hpj2VV8MeXm8FelfU1Sce3T3rFOWPZYfPHFF1988cUXX3zxxRdffPHFFz95fSM+UwxuDg1uKpCggjX52q1RXnuVUygQiPjiiy+++OKLL7744osvvvjiiy9+kvoG4CxArALNUC2M8Gh/zco5cJetCdbvpMWOVcKrk0t88cUXX3zxxRdffPHFF1988cUXP0l9+1Hayi3sLxLbVPy+0r5GKn8F4Ce0igXga2/gWHzxxRdffPHFF1988cUXX3zxxRc/iX0jtqt9rzakA0nBgsp98WEa0H7Cm/ejvLq0VzB+E1988cUXX3zxxRdffPHFF1988cVPPt+InbBb4y+m3Ok6B2uoCpZVLeRTThDK34TAm/jiiy+++OKLL7744osvvvjiiy9+UvpOC7TGm1/j27RDuO/NbbG0lnNpt4Eq4Sziiy+++OKLL7744osvvvjiiy+++MnqxwZnWihzcDMx4WBB+DNpFZgAJL744osvvvjiiy+++OKLL7744ouflL6RUAhf7b5pPc1XEkvQzmsgq/a/ayC2WI4idh+W+OKLL7744osvvvjiiy+++OKLL36y+vbMGZ3YgOAp31Ezeb/05tYlvvjiiy+++OKLL7744osvvvjii5+kvj1zJgGLGwFC2bmby6u9F99x8JxOOOPsu3WJL7744osvvvjiiy+++OKLL7744iepb4D2Zu/EKlBxWYPtC4AqLr+K39G+NujEbOKLL7744osvvvjiiy+++OKLL774Sez7FgTWsRYElhX2n/cdf8nNX41WwUaKL7744osvvvjiiy+++OKLL7744ieb71sQWPneWhrjiR0njvYknHDetT/FLQ0qPkTxxRdffPHFF1988cUXX3zxxRdf/OTzvcGZYBWg4p+wHV+Zim++SkxzRoC8FK/RKu6E+OKLL7744osvvvjiiy+++OKLL35y+kpbOn71G7SP0lqjlEo4H78lpMWdaK6sjrVffPHFF1988cUXX3zxxRdffPHFFz8pfSOxRn/eWMMgYQzHzZ5QBnAGh7SXJ8j4HPHFF1988cUXX3zxxRdffPHFF1/8JPaVtrdAIwLVaXCHd+JSiJ0NnknYtPOimkkDxBdffPHFF1988cUXX3zxxRdffPGT1bef1hTXABXfikPYAkW+oHxCsvjiiy+++OKLL7744osvvvjiiy9+kvqG9nIpp4C2dz1FB2p0Kw5C9pSfQFAqmMm/4I3CnSLknBVffPHFF1988cUXX3zxxRdffPHFT1JfaW1p55Q7eJOwtXD6kLdAeX8AvlTxxRdffPHFF1988cUXX3zxxRdf/GT0DfeopYbZadqrRzef5RAa5hslCjjiiy+++OKLL7744osvvvjiiy+++MnrK0tr3WybtHYyN9/ig8QSjKD5yu0EDVq1lEV88cUXX3zxxRdffPHFF1988cUX/+j3DeWvKVCpAgKpsQxuu4OJvrJ2BnfUJyGbm6DiBPHFF1988cUXX3zxxRdffPHFF1/8JPNjM2e0ndl7P8imvWY3nzExJf5M7NjbE1988cUXX3zxxRdffPHFF1988cVPQt/wirg73pLD2vnn7Pt2lVPAPRXLb78nNlnF5VLOji+v+OKLL7744osvvvjiiy+++OKLL34S+oabKbEiFdjXKi450DwdV845q2Pp2p+qceqLNVJ88cUXX3zxxRdffPHFF1988cUXPxl9pbVdhVel9tXgb8lBNjen1qBU7D0hwxeUF1988cUXX3zxxRdffPHFF1988cVPNt8grpxupmHa94o3GhTb3JxugwINQ3sZtPMSX4P44osvvvjiiy+++OKLL7744osvfrL6Smu/5muUt5vYUPfIGymCgz4nPL6OljfxxRdffPHFF1988cUXX3zxxRdf/OTy4wZn4vCDVmmn/ntsLHdLAYkvvvjiiy+++OKLL7744osvvvjiJ5Nv+E8Sl9etRgdyuLsKaG5l4ri8gbqUl6bQAUx88cUXX3zxxRdffPHFF1988cUXPxl9I5Y5vt5YdhVfTLk5/FVpX5NUXPu0d6wTlj0WX3zxxRdffPHFF1988cUXX3zxxU9e34jPFIObQ4ObCiSoYE2+dmuU117lFAoEIr744osvvvjiiy+++OKLL7744oufpL4BOAsQq0AzVAsjPNpfs3IO3GVrgvU7abFjlfDq5BJffPHFF1988cUXX3zxxRdffPHFT1LffpS2cgv7i8Q2Fb+vtK+Ryl8B+AmtYgH42hs4Fl988cUXX3zxxRdffPHFF1988cVPYt+I7Wrfqw3pQFKwoHJffJgGtJ/w5v0ory7tFYzfxBdffPHFF1988cUXX3zxxRdffPGTzzdiJ+zW+Ispd7rOwRqqgmVVC/mUE4TyNyHwJr744osvvvjiiy+++OKLL7744ouflL7TAq3x5tf4Nu0Q7ntzWyyt5VzabaBKOIv44osvvvjiiy+++OKLL7744osvfrL6scGZFsoc3ExMOFgQ/kxaBSYAiS+++OKLL7744osvvvjiiy+++OInpW8kFMJXu29aT/OVxBK08xrIqv3vGogtlqOI3Yclvvjiiy+++OKLL7744osvvvjii5+svj1zRic2IHjKd9RM3i+9uXWJL7744osvvvjiiy+++OKLL7744iepb8+cScDiRoBQdu7m8mrvxXccPKcTzjj7bl3iiy+++OKLL7744osvvvjiiy+++EnqG6C92TuxClRc1mD7AqCKy6/id7SvDToxm/jiiy+++OKLL7744osvvvjiiy9+Evu+BYF1rAWBZYX9533HX3LzV6NVsJHiiy+++OKLL7744osvvvjiiy+++Mnm+xYEVr63lsZ4YseJoz0JJ5x37U9xS4OKD1F88cUXX3zxxRdffPHFF1988cUXP/l8b3AmWAWo+Cdsx1em4puvEtOcESAvxWu0ijshvvjiiy+++OKLL7744osvvvjii5+cvtKWjl/9Bu2jtNYopRLOx28JaXEnmiurY+0XX3zxxRdffPHFF1988cUXX3zxxU9K37fmTHNVBJp58CjiTnqvwRurnCwaVHNhii+++OKLL7744osvvvjii38wf9u2bXz66afktc/jpBEnYhhmUsUvvvhHo6+0vXmjQ3YGYpk0uMM7cSmBZhyktU6VLTUIxBdffPHFF1988cUXX3zxxf9if86sV7jl1tuc85pjBwzk9/f/nuMGH3dY/CMdv/jiH62+PXMmrgEq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"
|
||
}
|
||
},
|
||
"cell_type": "markdown",
|
||
"id": "23e74f22-f43c-4f03-afe0-b423cbaa412a",
|
||
"metadata": {},
|
||
"source": [
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1bf1fa3631dc03ed",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### The problem lies in the nature of the search. If you just find some keywords, and return one or many documents from vectorstore this way, you will have an issue with the the way you would use to organise and prioritise documents. \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5029110f",
|
||
"metadata": {},
|
||
"source": [
|
||
""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "390e0d0805096f80",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Semantic similarity search is not magic\n",
|
||
"#### The most similar result isn't the most relevant one. \n",
|
||
"#### If you search for documents in which the sentiment expressed is \"I like apples.\", one of the closest results you get are documents in which the sentiment expressed is \"I don't like apples.\"\n",
|
||
"#### Wouldn't it be nice to have a semantic model LLMs could use?\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b900f830-8e9e-4272-b198-594606da4457",
|
||
"metadata": {},
|
||
"source": [
|
||
"# That is where Cognee comes in"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d3ae099a-1bbb-4f13-9bcb-c0f778d50e91",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### 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 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.\n",
|
||
"\n",
|
||
"#### Cognee lets you create tasks and contextual pipelines of tasks that enable composable GraphRAG, where you have full control of all the elements of the pipeline from ingestion until graph creation. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "785383b0-87b5-4a0a-be3f-e809aa284e30",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Core Concepts"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "3540ce30-2b22-4ece-8516-8d5ff2a405fe",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Concept 1: Data Pipelines"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "7e47bae4-d27d-4430-a134-e1b381378f5c",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 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."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "2f9c9376-8c68-4397-9081-d260cddcbd25",
|
||
"metadata": {},
|
||
"source": [
|
||
""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "7c87c5cf",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### In the example above, we have a pipeline in which data has been imported from various sources, normalized, and stored in a database. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bd435d1d",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Concept 2: Data Enrichment with LLMs"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "836d35ef",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### 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 information from the unstructured data. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5bc1681c",
|
||
"metadata": {},
|
||
"source": [
|
||
""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c6f428a8",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### We decompose the loaded content into graphs, allowing us to more precisely map out the relationships between entities and concepts."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "34c2227f",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Concept 3: Graphs"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "7ec176f5",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Knowledge graphs simply map out knowledge, linking specific facts and their connections. When Large Language Models (LLMs) process text, they infer these links, leading to occasional inaccuracies due to their probabilistic nature. Clearly defined relationships enhance their accuracy. This structured approach can extend beyond concepts to document layouts, pages, or other organizational schemas."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "ff454731",
|
||
"metadata": {},
|
||
"source": [
|
||
""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5b3b58d3",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Concept 4: Vector and Graph Retrieval"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "3555db8b",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Cognee lets you use multiple vector and graph retrieval methods to find the most relevant information."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d2d5e844",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Concept 5: Auto-Optimizing Pipelines"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6979a010",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Integrating knowledge graphs into Retrieval-Augmented Generation (RAG) pipelines leads to an intriguing outcome: the system's adeptness at contextual understanding allows it to be evaluated in a way Machine Learning (ML) engineers are accustomed to. This involves bombarding the RAG system with hundreds of synthetic questions, enabling the knowledge graph to evolve and refine its context autonomously over time. This method paves the way for developing self-improving memory engines that can adapt to new data and user feedback."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "074f0ea8-c659-4736-be26-be4b0e5ac665",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Demo time"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0587d91d",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### First let's define some data that we will cognify and perform a search on"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "df16431d0f48b006",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:53:59.351640Z",
|
||
"start_time": "2024-12-24T11:53:59.347420Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"job_position = \"\"\"Senior Data Scientist (Machine Learning)\n",
|
||
"\n",
|
||
"Company: TechNova Solutions\n",
|
||
"Location: San Francisco, CA\n",
|
||
"\n",
|
||
"Job Description:\n",
|
||
"\n",
|
||
"TechNova Solutions is seeking a Senior Data Scientist specializing in Machine Learning to join our dynamic analytics team. The ideal candidate will have a strong background in developing and deploying machine learning models, working with large datasets, and translating complex data into actionable insights.\n",
|
||
"\n",
|
||
"Responsibilities:\n",
|
||
"\n",
|
||
"Develop and implement advanced machine learning algorithms and models.\n",
|
||
"Analyze large, complex datasets to extract meaningful patterns and insights.\n",
|
||
"Collaborate with cross-functional teams to integrate predictive models into products.\n",
|
||
"Stay updated with the latest advancements in machine learning and data science.\n",
|
||
"Mentor junior data scientists and provide technical guidance.\n",
|
||
"Qualifications:\n",
|
||
"\n",
|
||
"Master’s or Ph.D. in Data Science, Computer Science, Statistics, or a related field.\n",
|
||
"5+ years of experience in data science and machine learning.\n",
|
||
"Proficient in Python, R, and SQL.\n",
|
||
"Experience with deep learning frameworks (e.g., TensorFlow, PyTorch).\n",
|
||
"Strong problem-solving skills and attention to detail.\n",
|
||
"Candidate CVs\n",
|
||
"\"\"\"\n"
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 1
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "9086abf3af077ab4",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:53:59.365410Z",
|
||
"start_time": "2024-12-24T11:53:59.363662Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"job_1 = \"\"\"\n",
|
||
"CV 1: Relevant\n",
|
||
"Name: Dr. Emily Carter\n",
|
||
"Contact Information:\n",
|
||
"\n",
|
||
"Email: emily.carter@example.com\n",
|
||
"Phone: (555) 123-4567\n",
|
||
"Summary:\n",
|
||
"\n",
|
||
"Senior Data Scientist with over 8 years of experience in machine learning and predictive analytics. Expertise in developing advanced algorithms and deploying scalable models in production environments.\n",
|
||
"\n",
|
||
"Education:\n",
|
||
"\n",
|
||
"Ph.D. in Computer Science, Stanford University (2014)\n",
|
||
"B.S. in Mathematics, University of California, Berkeley (2010)\n",
|
||
"Experience:\n",
|
||
"\n",
|
||
"Senior Data Scientist, InnovateAI Labs (2016 – Present)\n",
|
||
"Led a team in developing machine learning models for natural language processing applications.\n",
|
||
"Implemented deep learning algorithms that improved prediction accuracy by 25%.\n",
|
||
"Collaborated with cross-functional teams to integrate models into cloud-based platforms.\n",
|
||
"Data Scientist, DataWave Analytics (2014 – 2016)\n",
|
||
"Developed predictive models for customer segmentation and churn analysis.\n",
|
||
"Analyzed large datasets using Hadoop and Spark frameworks.\n",
|
||
"Skills:\n",
|
||
"\n",
|
||
"Programming Languages: Python, R, SQL\n",
|
||
"Machine Learning: TensorFlow, Keras, Scikit-Learn\n",
|
||
"Big Data Technologies: Hadoop, Spark\n",
|
||
"Data Visualization: Tableau, Matplotlib\n",
|
||
"\"\"\""
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 2
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "a9de0cc07f798b7f",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:53:59.372957Z",
|
||
"start_time": "2024-12-24T11:53:59.371152Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"job_2 = \"\"\"\n",
|
||
"CV 2: Relevant\n",
|
||
"Name: Michael Rodriguez\n",
|
||
"Contact Information:\n",
|
||
"\n",
|
||
"Email: michael.rodriguez@example.com\n",
|
||
"Phone: (555) 234-5678\n",
|
||
"Summary:\n",
|
||
"\n",
|
||
"Data Scientist with a strong background in machine learning and statistical modeling. Skilled in handling large datasets and translating data into actionable business insights.\n",
|
||
"\n",
|
||
"Education:\n",
|
||
"\n",
|
||
"M.S. in Data Science, Carnegie Mellon University (2013)\n",
|
||
"B.S. in Computer Science, University of Michigan (2011)\n",
|
||
"Experience:\n",
|
||
"\n",
|
||
"Senior Data Scientist, Alpha Analytics (2017 – Present)\n",
|
||
"Developed machine learning models to optimize marketing strategies.\n",
|
||
"Reduced customer acquisition cost by 15% through predictive modeling.\n",
|
||
"Data Scientist, TechInsights (2013 – 2017)\n",
|
||
"Analyzed user behavior data to improve product features.\n",
|
||
"Implemented A/B testing frameworks to evaluate product changes.\n",
|
||
"Skills:\n",
|
||
"\n",
|
||
"Programming Languages: Python, Java, SQL\n",
|
||
"Machine Learning: Scikit-Learn, XGBoost\n",
|
||
"Data Visualization: Seaborn, Plotly\n",
|
||
"Databases: MySQL, MongoDB\n",
|
||
"\"\"\""
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 3
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "185ff1c102d06111",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:53:59.961140Z",
|
||
"start_time": "2024-12-24T11:53:59.959103Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"job_3 = \"\"\"\n",
|
||
"CV 3: Relevant\n",
|
||
"Name: Sarah Nguyen\n",
|
||
"Contact Information:\n",
|
||
"\n",
|
||
"Email: sarah.nguyen@example.com\n",
|
||
"Phone: (555) 345-6789\n",
|
||
"Summary:\n",
|
||
"\n",
|
||
"Data Scientist specializing in machine learning with 6 years of experience. Passionate about leveraging data to drive business solutions and improve product performance.\n",
|
||
"\n",
|
||
"Education:\n",
|
||
"\n",
|
||
"M.S. in Statistics, University of Washington (2014)\n",
|
||
"B.S. in Applied Mathematics, University of Texas at Austin (2012)\n",
|
||
"Experience:\n",
|
||
"\n",
|
||
"Data Scientist, QuantumTech (2016 – Present)\n",
|
||
"Designed and implemented machine learning algorithms for financial forecasting.\n",
|
||
"Improved model efficiency by 20% through algorithm optimization.\n",
|
||
"Junior Data Scientist, DataCore Solutions (2014 – 2016)\n",
|
||
"Assisted in developing predictive models for supply chain optimization.\n",
|
||
"Conducted data cleaning and preprocessing on large datasets.\n",
|
||
"Skills:\n",
|
||
"\n",
|
||
"Programming Languages: Python, R\n",
|
||
"Machine Learning Frameworks: PyTorch, Scikit-Learn\n",
|
||
"Statistical Analysis: SAS, SPSS\n",
|
||
"Cloud Platforms: AWS, Azure\n",
|
||
"\"\"\""
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 4
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "d55ce4c58f8efb67",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:54:00.656495Z",
|
||
"start_time": "2024-12-24T11:54:00.654716Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"job_4 = \"\"\"\n",
|
||
"CV 4: Not Relevant\n",
|
||
"Name: David Thompson\n",
|
||
"Contact Information:\n",
|
||
"\n",
|
||
"Email: david.thompson@example.com\n",
|
||
"Phone: (555) 456-7890\n",
|
||
"Summary:\n",
|
||
"\n",
|
||
"Creative Graphic Designer with over 8 years of experience in visual design and branding. Proficient in Adobe Creative Suite and passionate about creating compelling visuals.\n",
|
||
"\n",
|
||
"Education:\n",
|
||
"\n",
|
||
"B.F.A. in Graphic Design, Rhode Island School of Design (2012)\n",
|
||
"Experience:\n",
|
||
"\n",
|
||
"Senior Graphic Designer, CreativeWorks Agency (2015 – Present)\n",
|
||
"Led design projects for clients in various industries.\n",
|
||
"Created branding materials that increased client engagement by 30%.\n",
|
||
"Graphic Designer, Visual Innovations (2012 – 2015)\n",
|
||
"Designed marketing collateral, including brochures, logos, and websites.\n",
|
||
"Collaborated with the marketing team to develop cohesive brand strategies.\n",
|
||
"Skills:\n",
|
||
"\n",
|
||
"Design Software: Adobe Photoshop, Illustrator, InDesign\n",
|
||
"Web Design: HTML, CSS\n",
|
||
"Specialties: Branding and Identity, Typography\n",
|
||
"\"\"\""
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 5
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "ca4ecc32721ad332",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:54:01.184899Z",
|
||
"start_time": "2024-12-24T11:54:01.183028Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"job_5 = \"\"\"\n",
|
||
"CV 5: Not Relevant\n",
|
||
"Name: Jessica Miller\n",
|
||
"Contact Information:\n",
|
||
"\n",
|
||
"Email: jessica.miller@example.com\n",
|
||
"Phone: (555) 567-8901\n",
|
||
"Summary:\n",
|
||
"\n",
|
||
"Experienced Sales Manager with a strong track record in driving sales growth and building high-performing teams. Excellent communication and leadership skills.\n",
|
||
"\n",
|
||
"Education:\n",
|
||
"\n",
|
||
"B.A. in Business Administration, University of Southern California (2010)\n",
|
||
"Experience:\n",
|
||
"\n",
|
||
"Sales Manager, Global Enterprises (2015 – Present)\n",
|
||
"Managed a sales team of 15 members, achieving a 20% increase in annual revenue.\n",
|
||
"Developed sales strategies that expanded customer base by 25%.\n",
|
||
"Sales Representative, Market Leaders Inc. (2010 – 2015)\n",
|
||
"Consistently exceeded sales targets and received the 'Top Salesperson' award in 2013.\n",
|
||
"Skills:\n",
|
||
"\n",
|
||
"Sales Strategy and Planning\n",
|
||
"Team Leadership and Development\n",
|
||
"CRM Software: Salesforce, Zoho\n",
|
||
"Negotiation and Relationship Building\n",
|
||
"\"\"\""
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 6
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "4415446a",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Please add the necessary environment information bellow:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "bce39dc6",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:54:04.417315Z",
|
||
"start_time": "2024-12-24T11:54:04.414132Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"import os\n",
|
||
"\n",
|
||
"# Setting environment variables\n",
|
||
"if \"GRAPHISTRY_USERNAME\" not in os.environ: \n",
|
||
" os.environ[\"GRAPHISTRY_USERNAME\"] = \"\"\n",
|
||
"\n",
|
||
"if \"GRAPHISTRY_PASSWORD\" not in os.environ: \n",
|
||
" os.environ[\"GRAPHISTRY_PASSWORD\"] = \"\"\n",
|
||
"\n",
|
||
"if \"LLM_API_KEY\" not in os.environ:\n",
|
||
" os.environ[\"LLM_API_KEY\"] = \"\"\n",
|
||
"\n",
|
||
"# \"neo4j\" or \"networkx\"\n",
|
||
"os.environ[\"GRAPH_DATABASE_PROVIDER\"]=\"networkx\" \n",
|
||
"# Not needed if using networkx\n",
|
||
"#os.environ[\"GRAPH_DATABASE_URL\"]=\"\"\n",
|
||
"#os.environ[\"GRAPH_DATABASE_USERNAME\"]=\"\"\n",
|
||
"#os.environ[\"GRAPH_DATABASE_PASSWORD\"]=\"\"\n",
|
||
"\n",
|
||
"# \"pgvector\", \"qdrant\", \"weaviate\" or \"lancedb\"\n",
|
||
"os.environ[\"VECTOR_DB_PROVIDER\"]=\"lancedb\" \n",
|
||
"# Not needed if using \"lancedb\" or \"pgvector\"\n",
|
||
"# os.environ[\"VECTOR_DB_URL\"]=\"\"\n",
|
||
"# os.environ[\"VECTOR_DB_KEY\"]=\"\"\n",
|
||
"\n",
|
||
"# Relational Database provider \"sqlite\" or \"postgres\"\n",
|
||
"os.environ[\"DB_PROVIDER\"]=\"sqlite\"\n",
|
||
"\n",
|
||
"# Database name\n",
|
||
"os.environ[\"DB_NAME\"]=\"cognee_db\"\n",
|
||
"\n",
|
||
"# Postgres specific parameters (Only if Postgres or PGVector is used)\n",
|
||
"# os.environ[\"DB_HOST\"]=\"127.0.0.1\"\n",
|
||
"# os.environ[\"DB_PORT\"]=\"5432\"\n",
|
||
"# os.environ[\"DB_USERNAME\"]=\"cognee\"\n",
|
||
"# os.environ[\"DB_PASSWORD\"]=\"cognee\""
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 7
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "9f1a1dbd",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:54:16.672999Z",
|
||
"start_time": "2024-12-24T11:54:07.425202Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"# Reset the cognee system with the following command:\n",
|
||
"\n",
|
||
"import cognee\n",
|
||
"\n",
|
||
"await cognee.prune.prune_data()\n",
|
||
"await cognee.prune.prune_system(metadata=True)"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"File /Users/vasilije/cognee/cognee/.cognee_system/databases/cognee_graph.pkl not found. Initializing an empty graph."
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Database deleted successfully.\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/Users/vasilije/cognee/.venv/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
|
||
" from .autonotebook import tqdm as notebook_tqdm\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 8
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "383d6971",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### After we have defined and gathered our data let's add it to cognee "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "904df61ba484a8e5",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:54:28.313862Z",
|
||
"start_time": "2024-12-24T11:54:23.756587Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"import cognee\n",
|
||
"\n",
|
||
"await cognee.add([job_1, job_2, job_3, job_4, job_5, job_position], \"example\")"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"User df77f15b-a077-4c86-a3e4-c059bf4cacb9 has registered.\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"/Users/vasilije/cognee/.venv/lib/python3.11/site-packages/dlt/destinations/impl/sqlalchemy/merge_job.py:194: SAWarning: Table 'file_metadata' already exists within the given MetaData - not copying.\n",
|
||
" staging_table_obj = table_obj.to_metadata(\n",
|
||
"/Users/vasilije/cognee/.venv/lib/python3.11/site-packages/dlt/destinations/impl/sqlalchemy/merge_job.py:229: SAWarning: implicitly coercing SELECT object to scalar subquery; please use the .scalar_subquery() method to produce a scalar subquery.\n",
|
||
" order_by=order_dir_func(order_by_col),\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Pipeline file_load_from_filesystem load step completed in 0.03 seconds\n",
|
||
"1 load package(s) were loaded to destination sqlalchemy and into dataset main\n",
|
||
"The sqlalchemy destination used sqlite:////Users/vasilije/cognee/cognee/.cognee_system/databases/cognee_db location to store data\n",
|
||
"Load package 1735041267.4777632 is LOADED and contains no failed jobs\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 9
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0f15c5b1",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### All good, let's cognify it."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "7c431fdef4921ae0",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:54:44.728010Z",
|
||
"start_time": "2024-12-24T11:54:44.723877Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"from cognee.shared.data_models import KnowledgeGraph\n",
|
||
"from cognee.modules.data.models import Dataset, Data\n",
|
||
"from cognee.modules.data.methods.get_dataset_data import get_dataset_data\n",
|
||
"from cognee.modules.cognify.config import get_cognify_config\n",
|
||
"from cognee.modules.pipelines.tasks.Task import Task\n",
|
||
"from cognee.modules.pipelines import run_tasks\n",
|
||
"from cognee.modules.users.models import User\n",
|
||
"from cognee.tasks.documents import check_permissions_on_documents, classify_documents, extract_chunks_from_documents\n",
|
||
"from cognee.tasks.graph import extract_graph_from_data\n",
|
||
"from cognee.tasks.storage import add_data_points\n",
|
||
"from cognee.tasks.summarization import summarize_text\n",
|
||
"\n",
|
||
"async def run_cognify_pipeline(dataset: Dataset, user: User = None):\n",
|
||
" data_documents: list[Data] = await get_dataset_data(dataset_id = dataset.id)\n",
|
||
"\n",
|
||
" try:\n",
|
||
" cognee_config = get_cognify_config()\n",
|
||
"\n",
|
||
" tasks = [\n",
|
||
" Task(classify_documents),\n",
|
||
" Task(check_permissions_on_documents, user = user, permissions = [\"write\"]),\n",
|
||
" Task(extract_chunks_from_documents), # Extract text chunks based on the document type.\n",
|
||
" Task(extract_graph_from_data, graph_model = KnowledgeGraph, task_config = { \"batch_size\": 10 }), # Generate knowledge graphs from the document chunks.\n",
|
||
" Task(\n",
|
||
" summarize_text,\n",
|
||
" summarization_model = cognee_config.summarization_model,\n",
|
||
" task_config = { \"batch_size\": 10 }\n",
|
||
" ),\n",
|
||
" Task(add_data_points, task_config = { \"batch_size\": 10 }),\n",
|
||
" ]\n",
|
||
"\n",
|
||
" pipeline = run_tasks(tasks, data_documents)\n",
|
||
"\n",
|
||
" async for result in pipeline:\n",
|
||
" print(result)\n",
|
||
" except Exception as error:\n",
|
||
" raise error\n"
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 10
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "f0a91b99c6215e09",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T11:55:26.027386Z",
|
||
"start_time": "2024-12-24T11:54:47.384342Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"from cognee.modules.users.methods import get_default_user\n",
|
||
"from cognee.modules.data.methods import get_datasets_by_name\n",
|
||
"\n",
|
||
"user = await get_default_user()\n",
|
||
"\n",
|
||
"datasets = await get_datasets_by_name([\"example\"], user.id)\n",
|
||
"\n",
|
||
"await run_cognify_pipeline(datasets[0], user)"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"File /Users/vasilije/cognee/cognee/.cognee_system/databases/cognee_graph.pkl not found. Initializing an empty graph./Users/vasilije/cognee/.venv/lib/python3.11/site-packages/pydantic/main.py:1522: RuntimeWarning: fields may not start with an underscore, ignoring \"_metadata\"\n",
|
||
" warnings.warn(f'fields may not start with an underscore, ignoring \"{f_name}\"', RuntimeWarning)\n",
|
||
"/Users/vasilije/cognee/.venv/lib/python3.11/site-packages/pydantic/main.py:1522: RuntimeWarning: fields may not start with an underscore, ignoring \"__tablename__\"\n",
|
||
" warnings.warn(f'fields may not start with an underscore, ignoring \"{f_name}\"', RuntimeWarning)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[TextSummary(id=UUID('92b5d0a7-f980-529d-bb5b-48e72825a01a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='Experienced Senior Data Scientist with expertise in machine learning and predictive modeling, demonstrating over 8 years in the field.', made_from=DocumentChunk(id=UUID('70b823e2-5b12-57b5-ad8d-798e1d721f8e'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='\\nCV 1: Relevant\\nName: Dr. Emily Carter\\nContact Information:\\n\\nEmail: emily.carter@example.com\\nPhone: (555) 123-4567\\nSummary:\\n\\nSenior Data Scientist with over 8 years of experience in machine learning and predictive analytics. Expertise in developing advanced algorithms and deploying scalable models in production environments.\\n\\nEducation:\\n\\nPh.D. in Computer Science, Stanford University (2014)\\nB.S. in Mathematics, University of California, Berkeley (2010)\\nExperience:\\n\\nSenior Data Scientist, InnovateAI Labs (2016 – Present)\\nLed a team in developing machine learning models for natural language processing applications.\\nImplemented deep learning algorithms that improved prediction accuracy by 25%.\\nCollaborated with cross-functional teams to integrate models into cloud-based platforms.\\nData Scientist, DataWave Analytics (2014 – 2016)\\nDeveloped predictive models for customer segmentation and churn analysis.\\nAnalyzed large datasets using Hadoop and Spark frameworks.\\nSkills:\\n\\nProgramming Languages: Python, R, SQL\\nMachin e Learning: TensorFlow, Keras, Scikit-Learn\\nBig Data Technologies: Hadoop, Spark\\nData Visualization: Tableau, Matplotlib\\n', word_count=133, chunk_index=0, cut_type='sentence_cut', is_part_of=TextDocument(id=UUID('11a2b08a-c160-5961-80b7-b3498eafa973'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='text_85410f4ad1197f5974aef9aed6f103c8', raw_data_location='/Users/vasilije/cognee/cognee/.data_storage/data/text_85410f4ad1197f5974aef9aed6f103c8.txt', metadata_id=UUID('11a2b08a-c160-5961-80b7-b3498eafa973'), mime_type='text/plain', type='text'), contains=[Entity(id=UUID('29e771c8-4c3f-52de-9511-6b705878e130'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='dr. emily carter', is_a=EntityType(id=UUID('d072ba0f-e1a9-58bf-9974-e1802adc8134'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='person', description='person'), description='Senior Data Scientist with over 8 years of experience in machine learning and predictive analytics.'), Entity(id=UUID('ce8b394a-b30e-52fc-b80a-6352edc60e5b'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='stanford university', is_a=EntityType(id=UUID('d3d7b6b4-9b0d-52e8-9e09-a9e9cf4b5a4d'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='organization', description='organization'), description='Prestigious university located in Stanford, California.'), Entity(id=UUID('2c02c93c-9cd1-56b8-9cc0-55ff0b290e57'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='university of california, berkeley', is_a=EntityType(id=UUID('d3d7b6b4-9b0d-52e8-9e09-a9e9cf4b5a4d'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='organization', description='organization'), description='Public research university located in Berkeley, California.'), Entity(id=UUID('9780afb1-dccc-53eb-9a30-c0d4ce033711'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='innovateai labs', is_a=EntityType(id=UUID('d3d7b6b4-9b0d-52e8-9e09-a9e9cf4b5a4d'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='organization', description='organization'), description='A lab focused on artificial intelligence projects.'), Entity(id=UUID('50d0a685-5300-544f-b081-edca4b625886'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='datawave analytics', is_a=EntityType(id=UUID('d3d7b6b4-9b0d-52e8-9e09-a9e9cf4b5a4d'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='organization', description='organization'), description='Analytics firm specialized in data-driven insights.'), Entity(id=UUID('c95db510-e2ee-5a00-bded-20bbcb50c492'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='python', is_a=EntityType(id=UUID('80d409bb-e431-5939-a1ad-3acd96267128'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='programming language', description='programming language'), description='A high-level programming language used for general-purpose programming.'), Entity(id=UUID('39bd9707-8098-52ed-9cbf-bbdd26b963fb'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='r', is_a=EntityType(id=UUID('80d409bb-e431-5939-a1ad-3acd96267128'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='programming language', description='programming language'), description='A programming language and environment for statistical computing and graphics.'), Entity(id=UUID('1ff6821a-b207-5050-83e9-37ff67a27d03'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='sql', is_a=EntityType(id=UUID('80d409bb-e431-5939-a1ad-3acd96267128'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='programming language', description='programming language'), description='A domain-specific language used in programming and managing relational databases.'), Entity(id=UUID('6e72f6f5-0452-5d42-a4e8-4aba6a614cb1'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='tensorflow', is_a=EntityType(id=UUID('9ffe9ce7-8938-5a5c-8d03-5f1a4c5210a1'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='machine learning framework', description='machine learning framework'), description='An open-source software library for dataflow and differentiable programming across a range of tasks.'), Entity(id=UUID('ab85cdff-2a98-5c6d-99a3-df1f40f4ec16'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='keras', is_a=EntityType(id=UUID('9ffe9ce7-8938-5a5c-8d03-5f1a4c5210a1'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='machine learning framework', description='machine learning framework'), description='An open-source neural network library written in Python that runs on top of TensorFlow.'), Entity(id=UUID('37eecdcc-fb56-519c-bc18-d0d3afea0c0d'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='scikit-learn', is_a=EntityType(id=UUID('9ffe9ce7-8938-5a5c-8d03-5f1a4c5210a1'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='machine learning framework', description='machine learning framework'), description='A free software machine learning library for the Python programming language.'), Entity(id=UUID('f9a0eeca-c9ff-53b3-90eb-347254d7d7eb'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='hadoop', is_a=EntityType(id=UUID('7c2287d0-16fc-53dc-86ce-8d8e61c8642c'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='big data technology', description='big data technology'), description='An open-source framework for storing and processing large datasets in a distributed computing environment.'), Entity(id=UUID('46a235af-5ed5-5023-a4ec-c253e3f93031'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='spark', is_a=EntityType(id=UUID('7c2287d0-16fc-53dc-86ce-8d8e61c8642c'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='big data technology', description='big data technology'), description='An open-source unified analytics engine for large-scale data processing.'), Entity(id=UUID('c55004f3-8a6d-5130-b8bd-ed8278daa9a4'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='tableau', is_a=EntityType(id=UUID('674cc5fa-7849-575a-917f-90b7b77f52b3'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='data visualization software', description='data visualization software'), description='A visual analytics platform transforming the way we use data to solve problems.'), Entity(id=UUID('3c7adf8f-ef23-5330-a3fe-6a0b791cee2b'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='matplotlib', is_a=EntityType(id=UUID('3f3619fc-ebd1-50ed-adde-cf94e8bb3c1b'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='data visualization library', description='data visualization library'), description='A plotting library for the Python programming language and its numerical mathematics extension NumPy.')])), TextSummary(id=UUID('2f680bef-2edd-566e-b98c-78d549799e77'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='Senior Data Scientist specializing in Machine Learning at TechNova Solutions', made_from=DocumentChunk(id=UUID('eb6617b8-c78c-519b-b765-1eefc2e3a0d7'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='Senior Data Scientist (Machine Learning)\\n\\nCompany: TechNova Solutions\\nLocation: San Francisco, CA\\n\\nJob Description:\\n\\nTechNova Solutions is seeking a Senior Data Scientist specializing in Machine Learning to join our dynamic analytics team. The ideal candidate will have a strong background in developing and deploying machine learning models, working with large datasets, and translating complex data into actionable insights.\\n\\nResponsibilities:\\n\\nDevelop and implement advanced machine learning algorithms and models.\\nAnalyze large, complex datasets to extract meaningful patterns and insights.\\nCollaborate with cross-functional teams to integrate predictive models into products.\\nStay updated with the latest advancements in machine learning and data science.\\nMentor junior data scientists and provide technical guidance.\\nQualifications:\\n\\nMaster’s or Ph.D. in Data Science, Computer Science, Statistics, or a related field.\\n5+ years of experience in data science and machine learning.\\nProficient in Python, R, and SQL.\\nExpe rience with deep learning frameworks (e.g., TensorFlow, PyTorch).\\nStrong problem-solving skills and attention to detail.\\nCandidate CVs\\n', word_count=153, chunk_index=0, cut_type='sentence_cut', is_part_of=TextDocument(id=UUID('171f3035-4c37-5f7b-97c8-6b222404cc9a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='text_81a5a96a9a7325d40521ea453778ebe0', raw_data_location='/Users/vasilije/cognee/cognee/.data_storage/data/text_81a5a96a9a7325d40521ea453778ebe0.txt', metadata_id=UUID('171f3035-4c37-5f7b-97c8-6b222404cc9a'), mime_type='text/plain', type='text'), contains=[Entity(id=UUID('453a45c9-14e7-5b73-adb8-55991096fef0'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='technova solutions', is_a=EntityType(id=UUID('a6ed6bf1-fe31-5dfe-8ab4-484691fdf219'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='company', description='company'), description='A technology company specializing in data analytics and machine learning.'), Entity(id=UUID('435dbd37-ab20-503c-9e99-ab8b8a3484e5'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='senior data scientist', is_a=EntityType(id=UUID('524c6bbb-1534-5a51-8068-18dd4ae171eb'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='profession', description='profession'), description='A role focused on advanced data analysis and machine learning.'), Entity(id=UUID('198e2ab8-75e9-5931-97ab-da9a5a8e188c'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='san francisco, ca', is_a=EntityType(id=UUID('19dd7d4d-a966-5ed5-82a0-6ae377761a29'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='location', description='location'), description='A city in California, USA.'), Entity(id=UUID('5187986a-7305-5a63-b057-8f2c097419eb'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='machine learning', is_a=EntityType(id=UUID('0198571b-3e94-50ea-8b9f-19e3a31080c0'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='field', description='field'), description='A subset of artificial intelligence focused on the development of algorithms that enable computers to learn from data.'), Entity(id=UUID('d6545b21-153c-58ba-be47-46e5216521a3'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='data science', is_a=EntityType(id=UUID('0198571b-3e94-50ea-8b9f-19e3a31080c0'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='field', description='field'), description='A multidisciplinary field that uses scientific methods to extract knowledge and insights from data.'), Entity(id=UUID('c0d95499-de6b-5fcf-b0f5-9cbf427ad5c6'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='pytorch', is_a=EntityType(id=UUID('36a32bd3-8880-547a-949b-8447477d1ef5'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='framework', description='framework'), description='An open-source machine learning framework for deep learning.'), Entity(id=UUID('62b4dda1-de4a-5098-a56e-d3fe81f84dbc'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='masters or ph.d. in data science', is_a=EntityType(id=UUID('a49b283a-ce92-50e0-b7fa-ca7c628eb01a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='degree', description='degree'), description='Advanced academic degree in data science or related fields.')])), TextSummary(id=UUID('5c988618-db52-5979-9cf8-db80c0098285'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='Data Scientist with expertise in machine learning and statistical analysis, adept at managing extensive datasets and converting data into practical business solutions.', made_from=DocumentChunk(id=UUID('a6e82ac7-e791-5d6b-b4a9-f5e41cbe95bf'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='\\nCV 2: Relevant\\nName: Michael Rodriguez\\nContact Information:\\n\\nEmail: michael.rodriguez@example.com\\nPhone: (555) 234-5678\\nSummary:\\n\\nData Scientist with a strong background in machine learning and statistical modeling. Skilled in handling large datasets and translating data into actionable business insights.\\n\\nEducation:\\n\\nM.S. in Data Science, Carnegie Mellon University (2013)\\nB.S. in Computer Science, University of Michigan (2011)\\nExperience:\\n\\nSenior Data Scientist, Alpha Analytics (2017 – Present)\\nDeveloped machine learning models to optimize marketing strategies.\\nReduced customer acquisition cost by 15% through predictive modeling.\\nData Scientist, TechInsights (2013 – 2017)\\nAnalyzed user behavior data to improve product features.\\nImplemented A/B testing frameworks to evaluate product changes.\\nSkills:\\n\\nProgramming Languages: Python, Java, SQL\\nMachine Learning: Scikit-Learn, XGBoost\\nData Visualization: Seaborn, Plotly\\nDatabases: MySQL, MongoDB\\n', word_count=108, chunk_index=0, cut_type='sentence_cut', is_part_of=TextDocument(id=UUID('1f078b0a-3cc1-57a9-9802-f78565d49f29'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='text_f0f63a5c88dbbeef1eca23d32848220c', raw_data_location='/Users/vasilije/cognee/cognee/.data_storage/data/text_f0f63a5c88dbbeef1eca23d32848220c.txt', metadata_id=UUID('1f078b0a-3cc1-57a9-9802-f78565d49f29'), mime_type='text/plain', type='text'), contains=[Entity(id=UUID('73ae630f-7b09-5dce-8c18-45d0a57b30f9'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='michael rodriguez', is_a=EntityType(id=UUID('d072ba0f-e1a9-58bf-9974-e1802adc8134'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='person', description='person'), description='Data Scientist with a strong background in machine learning and statistical modeling.'), Entity(id=UUID('5534e0b0-d0c4-5ab9-82e9-91bed36f70bd'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='carnegie mellon university', is_a=EntityType(id=UUID('912b273c-683d-53ea-8ffe-aadef0b84237'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='educational institution', description='educational institution'), description='University known for its data science program.'), Entity(id=UUID('0af613e0-c11b-550d-ada2-2c2aa6550884'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='university of michigan', is_a=EntityType(id=UUID('912b273c-683d-53ea-8ffe-aadef0b84237'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='educational institution', description='educational institution'), description='University known for its computer science program.'), Entity(id=UUID('04a91fef-8a07-5d50-8f1b-46f3afeec497'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='alpha analytics', is_a=EntityType(id=UUID('a6ed6bf1-fe31-5dfe-8ab4-484691fdf219'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='company', description='company'), description='Company where Michael Rodriguez works as a Senior Data Scientist.'), Entity(id=UUID('3f848ed6-902f-5a8e-9577-cb67f8c17acd'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='techinsights', is_a=EntityType(id=UUID('a6ed6bf1-fe31-5dfe-8ab4-484691fdf219'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='company', description='company'), description='Company where Michael Rodriguez worked as a Data Scientist.')])), TextSummary(id=UUID('ee6cb607-27eb-5b87-bf2a-305721534263'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='Sales Manager with proven ability to enhance revenue and cultivate effective teams. Strong communicator and leader.', made_from=DocumentChunk(id=UUID('7e35407f-7c59-5429-8824-23f1d17118c0'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text=\"\\nCV 5: Not Relevant\\nName: Jessica Miller\\nContact Information:\\n\\nEmail: jessica.miller@example.com\\nPhone: (555) 567-8901\\nSummary:\\n\\nExperienced Sales Manager with a strong track record in driving sales growth and building high-performing teams. Excellent communication and leadership skills.\\n\\nEducation:\\n\\nB.A. in Business Administration, University of Southern California (2010)\\nExperience:\\n\\nSales Manager, Global Enterprises (2015 – Present)\\nManaged a sales team of 15 members, achieving a 20% increase in annual revenue.\\nDeveloped sales strategies that expanded customer base by 25%.\\nSales Representative, Market Leaders Inc. (2010 – 2015)\\nConsistently exceeded sales targets and received the 'Top Salesperson' award in 2013.\\nSkills:\\n\\nSales Strategy and Planning\\nTeam Leadership and Development\\nCRM Software: Salesforce, Zoho\\nNegotiation and Relationship Building\\n\", word_count=102, chunk_index=0, cut_type='sentence_cut', is_part_of=TextDocument(id=UUID('3c323fc9-9165-52da-a079-2627a9556b08'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='text_9b35c7df1f5d4dc84e78270c0bf9cac6', raw_data_location='/Users/vasilije/cognee/cognee/.data_storage/data/text_9b35c7df1f5d4dc84e78270c0bf9cac6.txt', metadata_id=UUID('3c323fc9-9165-52da-a079-2627a9556b08'), mime_type='text/plain', type='text'), contains=[Entity(id=UUID('36a5e3c8-c5f5-5ab5-8d59-ea69d8b36932'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='jessica miller', is_a=EntityType(id=UUID('d072ba0f-e1a9-58bf-9974-e1802adc8134'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='person', description='person'), description='An experienced sales manager with a strong track record in driving sales growth and building high-performing teams.'), Entity(id=UUID('5c32691d-c0e4-5378-9aab-dda8b0fa3931'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='global enterprises', is_a=EntityType(id=UUID('a6ed6bf1-fe31-5dfe-8ab4-484691fdf219'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='company', description='company'), description='A company where Jessica Miller worked as a Sales Manager.'), Entity(id=UUID('67544857-983a-5152-801d-4fc9d35d14e4'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='market leaders inc.', is_a=EntityType(id=UUID('a6ed6bf1-fe31-5dfe-8ab4-484691fdf219'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='company', description='company'), description='A company where Jessica Miller worked as a Sales Representative.'), Entity(id=UUID('f39d6c00-689b-5fd2-9021-893b28ac6ff2'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='university of southern california', is_a=EntityType(id=UUID('912b273c-683d-53ea-8ffe-aadef0b84237'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='educational institution', description='educational institution'), description='University where Jessica Miller obtained her degree in Business Administration.'), Entity(id=UUID('0abc801d-38ca-5003-b974-b60f1956c94a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='2010', is_a=EntityType(id=UUID('d61d99ac-b291-5666-9748-3e80e1c8b56a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='date', description='date'), description='Year Jessica Miller graduated from University of Southern California.'), Entity(id=UUID('7c8b43c1-e133-52e6-99aa-239534f1ed45'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='2015', is_a=EntityType(id=UUID('d61d99ac-b291-5666-9748-3e80e1c8b56a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='date', description='date'), description='Year Jessica Miller started working as Sales Manager at Global Enterprises.'), Entity(id=UUID('2f4749e9-e1e4-5af0-be80-2a10d07557ff'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='present', is_a=EntityType(id=UUID('d61d99ac-b291-5666-9748-3e80e1c8b56a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='date', description='date'), description=\"Current time indicative of Jessica Miller's ongoing role.\")])), TextSummary(id=UUID('d8a8668e-b122-5713-b289-932407bb294e'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='Creative Graphic Designer with 8+ years of expertise in visual design and branding, skilled in Adobe Creative Suite, dedicated to crafting engaging visuals.', made_from=DocumentChunk(id=UUID('c401b5b1-21d8-5830-8c7b-48e7d94c5b95'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='\\nCV 4: Not Relevant\\nName: David Thompson\\nContact Information:\\n\\nEmail: david.thompson@example.com\\nPhone: (555) 456-7890\\nSummary:\\n\\nCreative Graphic Designer with over 8 years of experience in visual design and branding. Proficient in Adobe Creative Suite and passionate about creating compelling visuals.\\n\\nEducation:\\n\\nB.F.A. in Graphic Design, Rhode Island School of Design (2012)\\nExperience:\\n\\nSenior Graphic Designer, CreativeWorks Agency (2015 – Present)\\nLed design projects for clients in various industries.\\nCreated branding materials that increased client engagement by 30%.\\nGraphic Designer, Visual Innovations (2012 – 2015)\\nDesigned marketing collateral, including brochures, logos, and websites.\\nCollaborated with the marketing team to develop cohesive brand strategies.\\nSkills:\\n\\nDesign Software: Adobe Photoshop, Illustrator, InDesign\\nWeb Design: HTML, CSS\\nSpecialties: Branding and Identity, Typography\\n', word_count=108, chunk_index=0, cut_type='sentence_cut', is_part_of=TextDocument(id=UUID('e71daf63-15a0-50fe-a909-766bc8fd311b'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='text_9abf20fa7defd7e49296c51b4e38edf2', raw_data_location='/Users/vasilije/cognee/cognee/.data_storage/data/text_9abf20fa7defd7e49296c51b4e38edf2.txt', metadata_id=UUID('e71daf63-15a0-50fe-a909-766bc8fd311b'), mime_type='text/plain', type='text'), contains=[Entity(id=UUID('a4777597-06c7-562c-bc44-56f74571a01a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='david thompson', is_a=EntityType(id=UUID('d072ba0f-e1a9-58bf-9974-e1802adc8134'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='person', description='person'), description='Creative Graphic Designer with over 8 years of experience in visual design and branding.'), Entity(id=UUID('ca20272a-3e88-552f-92fe-491e23f117f8'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='creativeworks agency', is_a=EntityType(id=UUID('d3d7b6b4-9b0d-52e8-9e09-a9e9cf4b5a4d'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='organization', description='organization'), description='An agency where David Thompson is a Senior Graphic Designer.'), Entity(id=UUID('1e97bb97-4d29-5fb8-863a-15ab51f1dd46'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='visual innovations', is_a=EntityType(id=UUID('d3d7b6b4-9b0d-52e8-9e09-a9e9cf4b5a4d'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='organization', description='organization'), description='An organization where David Thompson worked as a Graphic Designer.'), Entity(id=UUID('60b027fe-7bb4-535d-8a47-19f1a491591b'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='rhode island school of design', is_a=EntityType(id=UUID('b5866225-05ad-5cfc-908e-c22916c6a1c6'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='institution', description='institution'), description='Educational institution where David Thompson earned his B.F.A. in Graphic Design.'), Entity(id=UUID('7e3df89c-2691-580b-84dc-378cb1df3db6'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='adobe creative suite', is_a=EntityType(id=UUID('2d66edc2-1e14-55ab-8304-680b514a597a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='software', description='software'), description='A suite of graphic design, video editing, and web development applications.'), Entity(id=UUID('2a0f9b58-c695-5bad-baa2-fd2da02da013'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='html', is_a=EntityType(id=UUID('c90c7d6b-3532-5dcf-91e1-4a0e1f179794'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='language', description='language'), description='A markup language for creating web pages and applications.'), Entity(id=UUID('9b062f3c-fe02-5427-9b44-b287a1cac367'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='css', is_a=EntityType(id=UUID('c90c7d6b-3532-5dcf-91e1-4a0e1f179794'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='language', description='language'), description='A stylesheet language used for describing the presentation of a document written in HTML.')])), TextSummary(id=UUID('8aedca6b-fa78-5987-a79b-3b0bebff8eb1'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='Data Scientist with 6 years of expertise in machine learning, focused on utilizing data for business improvement and product enhancement.', made_from=DocumentChunk(id=UUID('00692e43-9f02-54d0-b695-44bf47342d36'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, text='\\nCV 3: Relevant\\nName: Sarah Nguyen\\nContact Information:\\n\\nEmail: sarah.nguyen@example.com\\nPhone: (555) 345-6789\\nSummary:\\n\\nData Scientist specializing in machine learning with 6 years of experience. Passionate about leveraging data to drive business solutions and improve product performance.\\n\\nEducation:\\n\\nM.S. in Statistics, University of Washington (2014)\\nB.S. in Applied Mathematics, University of Texas at Austin (2012)\\nExperience:\\n\\nData Scientist, QuantumTech (2016 – Present)\\nDesigned and implemented machine learning algorithms for financial forecasting.\\nImproved model efficiency by 20% through algorithm optimization.\\nJunior Data Scientist, DataCore Solutions (2014 – 2016)\\nAssisted in developing predictive models for supply chain optimization.\\nConducted data cleaning and preprocessing on large datasets.\\nSkills:\\n\\nProgramming Languages: Python, R\\nMachine Learning Frameworks: PyTorch, Scikit-Learn\\nStatistical Analysis: SAS, SPSS\\nCloud Platforms: AWS, Azure\\n', word_count=110, chunk_index=0, cut_type='sentence_cut', is_part_of=TextDocument(id=UUID('e7d6246b-e414-5b9d-8daa-6d4434b7fa47'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='text_f8c7482e727f228001b0046ed68d656f', raw_data_location='/Users/vasilije/cognee/cognee/.data_storage/data/text_f8c7482e727f228001b0046ed68d656f.txt', metadata_id=UUID('e7d6246b-e414-5b9d-8daa-6d4434b7fa47'), mime_type='text/plain', type='text'), contains=[Entity(id=UUID('4d8dda57-2681-5264-a2bd-e2ddfe66a785'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='sarah nguyen', is_a=EntityType(id=UUID('d072ba0f-e1a9-58bf-9974-e1802adc8134'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='person', description='person'), description='Data Scientist specializing in machine learning with 6 years of experience.'), Entity(id=UUID('ae74a35b-d5f1-5622-ade1-6703d5e069fb'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='university of washington', is_a=EntityType(id=UUID('912b273c-683d-53ea-8ffe-aadef0b84237'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='educational institution', description='educational institution'), description='University located in Seattle, Washington.'), Entity(id=UUID('301b3cf8-5a5c-585e-80bd-f79901e4368c'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='university of texas at austin', is_a=EntityType(id=UUID('912b273c-683d-53ea-8ffe-aadef0b84237'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='educational institution', description='educational institution'), description='Public research university located in Austin, Texas.'), Entity(id=UUID('0d980f2a-09dd-581e-acc3-cc2d87c1bab4'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='quantumtech', is_a=EntityType(id=UUID('a6ed6bf1-fe31-5dfe-8ab4-484691fdf219'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='company', description='company'), description='Company where Sarah Nguyen works as a Data Scientist from 2016 to present.'), Entity(id=UUID('95ac0551-38fc-5187-a422-533aeb7e8db0'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='datacore solutions', is_a=EntityType(id=UUID('a6ed6bf1-fe31-5dfe-8ab4-484691fdf219'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='company', description='company'), description='Company where Sarah Nguyen worked as a Junior Data Scientist from 2014 to 2016.'), Entity(id=UUID('3edcdf3f-25af-57a3-8878-8008bd7ea05a'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='aws', is_a=EntityType(id=UUID('d84d991a-dab3-5c36-8806-df076ccb731b'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='cloud platform', description='cloud platform'), description='Amazon Web Services, a cloud computing platform.'), Entity(id=UUID('8b431923-4aa2-5886-a661-b8de0f888a9b'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='azure', is_a=EntityType(id=UUID('d84d991a-dab3-5c36-8806-df076ccb731b'), updated_at=datetime.datetime(2024, 12, 24, 11, 54, 13, 481297, tzinfo=datetime.timezone.utc), topological_rank=0, name='cloud platform', description='cloud platform'), description='Microsoft Azure, a cloud computing service created by Microsoft.')]))]\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 11
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "219a6d41",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### We get the url to the graph on graphistry in the notebook cell bellow, showing nodes and connections made by the cognify process."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "080389e5",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-29T16:55:51.378129Z",
|
||
"start_time": "2024-12-29T16:55:46.922951Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"import os\n",
|
||
"from cognee.shared.utils import render_graph\n",
|
||
"from cognee.infrastructure.databases.graph import get_graph_engine\n",
|
||
"import graphistry\n",
|
||
"from dotenv import load_dotenv \n",
|
||
"\n",
|
||
"load_dotenv()\n",
|
||
"os.environ[\"GRAPHISTRY_USERNAME\"] = \"vasilije\"\n",
|
||
"os.environ[\"GRAPHISTRY_PASSWORD\"] = \"wV!4yzNGjDLCpwV\"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"graphistry.login(username=os.getenv(\"GRAPHISTRY_USERNAME\"), password=os.getenv(\"GRAPHISTRY_PASSWORD\"))\n",
|
||
"\n",
|
||
"graph_engine = await get_graph_engine()\n",
|
||
"\n",
|
||
"graph_url = await render_graph(graph_engine.graph)\n",
|
||
"print(graph_url)"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Graph is visualized at: https://hub.graphistry.com/graph/graph.html?dataset=cc21b1d2d6074323aa37af53e693b1a4&type=arrow&viztoken=db05565e-79e9-4fe3-99b2-b7a2e6d48eff&usertag=5f822e63-pygraphistry-0.33.9&splashAfter=1735491366&info=true\n",
|
||
"https://hub.graphistry.com/graph/graph.html?dataset=cc21b1d2d6074323aa37af53e693b1a4&type=arrow&viztoken=db05565e-79e9-4fe3-99b2-b7a2e6d48eff&usertag=5f822e63-pygraphistry-0.33.9&splashAfter=1735491366&info=true\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 12
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-29T17:27:20.635684Z",
|
||
"start_time": "2024-12-29T17:27:18.253572Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "!pip install cairosvg",
|
||
"id": "1995cab3f32a393b",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Collecting cairosvg\r\n",
|
||
" Obtaining dependency information for cairosvg from https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl.metadata\r\n",
|
||
" Downloading CairoSVG-2.7.1-py3-none-any.whl.metadata (2.7 kB)\r\n",
|
||
"Collecting cairocffi (from cairosvg)\r\n",
|
||
" Obtaining dependency information for cairocffi from https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl.metadata\r\n",
|
||
" Downloading cairocffi-1.7.1-py3-none-any.whl.metadata (3.3 kB)\r\n",
|
||
"Collecting cssselect2 (from cairosvg)\r\n",
|
||
" Obtaining dependency information for cssselect2 from https://files.pythonhosted.org/packages/9d/3a/e39436efe51894243ff145a37c4f9a030839b97779ebcc4f13b3ba21c54e/cssselect2-0.7.0-py3-none-any.whl.metadata\r\n",
|
||
" Downloading cssselect2-0.7.0-py3-none-any.whl.metadata (2.9 kB)\r\n",
|
||
"Requirement already satisfied: defusedxml in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from cairosvg) (0.7.1)\r\n",
|
||
"Requirement already satisfied: pillow in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from cairosvg) (11.0.0)\r\n",
|
||
"Requirement already satisfied: tinycss2 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from cairosvg) (1.4.0)\r\n",
|
||
"Requirement already satisfied: cffi>=1.1.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from cairocffi->cairosvg) (1.17.1)\r\n",
|
||
"Requirement already satisfied: webencodings in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from cssselect2->cairosvg) (0.5.1)\r\n",
|
||
"Requirement already satisfied: pycparser in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from cffi>=1.1.0->cairocffi->cairosvg) (2.22)\r\n",
|
||
"Downloading CairoSVG-2.7.1-py3-none-any.whl (43 kB)\r\n",
|
||
"\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m43.2/43.2 kB\u001B[0m \u001B[31m1.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\r\n",
|
||
"\u001B[?25hDownloading cairocffi-1.7.1-py3-none-any.whl (75 kB)\r\n",
|
||
"\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m75.6/75.6 kB\u001B[0m \u001B[31m4.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\r\n",
|
||
"\u001B[?25hDownloading cssselect2-0.7.0-py3-none-any.whl (15 kB)\r\n",
|
||
"Installing collected packages: cssselect2, cairocffi, cairosvg\r\n",
|
||
"Successfully installed cairocffi-1.7.1 cairosvg-2.7.1 cssselect2-0.7.0\r\n",
|
||
"\r\n",
|
||
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\r\n",
|
||
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 25
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-29T22:05:06.689621Z",
|
||
"start_time": "2024-12-29T22:05:06.688268Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "\n",
|
||
"id": "7014c8acf720b50",
|
||
"outputs": [],
|
||
"execution_count": 70
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-29T22:27:10.842044Z",
|
||
"start_time": "2024-12-29T22:27:10.826453Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"from PIL import Image\n",
|
||
"import potrace\n",
|
||
"\n",
|
||
"def png_to_svg(png_path, threshold=128):\n",
|
||
" \"\"\"\n",
|
||
" Converts a PNG image to an SVG string using potrace and prints the output.\n",
|
||
"\n",
|
||
" :param png_path: Path to the input PNG file.\n",
|
||
" :param threshold: Grayscale threshold for converting to black-and-white (default: 128).\n",
|
||
" :return: The SVG content as a string.\n",
|
||
" \"\"\"\n",
|
||
" # Load the PNG image and convert to grayscale\n",
|
||
" img = Image.open(png_path).convert(\"L\")\n",
|
||
"\n",
|
||
" # Convert image to black-and-white\n",
|
||
" img = img.point(lambda p: p > threshold and 255)\n",
|
||
"\n",
|
||
" # Convert the image to a bitmap for potrace\n",
|
||
" bitmap = potrace.Bitmap(img)\n",
|
||
"\n",
|
||
" # Trace the bitmap into a path\n",
|
||
" path = bitmap.trace()\n",
|
||
"\n",
|
||
" # Generate SVG output\n",
|
||
" svg_content = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\\n'\n",
|
||
" svg_content += '<svg xmlns=\"http://www.w3.org/2000/svg\">\\n'\n",
|
||
" for curve in path:\n",
|
||
" svg_content += f' <path d=\"{curve.tosvg()}\" fill=\"black\"/>\\n'\n",
|
||
" svg_content += '</svg>\\n'\n",
|
||
"\n",
|
||
" # Print the SVG content\n",
|
||
" print(svg_content)\n",
|
||
"\n",
|
||
" # Return the SVG content as a string\n",
|
||
" return svg_content\n"
|
||
],
|
||
"id": "494ff0eafc9892db",
|
||
"outputs": [
|
||
{
|
||
"ename": "ModuleNotFoundError",
|
||
"evalue": "No module named 'potrace'",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
|
||
"\u001B[0;31mModuleNotFoundError\u001B[0m Traceback (most recent call last)",
|
||
"Cell \u001B[0;32mIn[87], line 2\u001B[0m\n\u001B[1;32m 1\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mPIL\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m Image\n\u001B[0;32m----> 2\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mpotrace\u001B[39;00m\n\u001B[1;32m 4\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mpng_to_svg\u001B[39m(png_path, threshold\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m128\u001B[39m):\n\u001B[1;32m 5\u001B[0m \u001B[38;5;250m \u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[1;32m 6\u001B[0m \u001B[38;5;124;03m Converts a PNG image to an SVG string using potrace and prints the output.\u001B[39;00m\n\u001B[1;32m 7\u001B[0m \n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 10\u001B[0m \u001B[38;5;124;03m :return: The SVG content as a string.\u001B[39;00m\n\u001B[1;32m 11\u001B[0m \u001B[38;5;124;03m \"\"\"\u001B[39;00m\n",
|
||
"\u001B[0;31mModuleNotFoundError\u001B[0m: No module named 'potrace'"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 87
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-29T22:27:11.546173Z",
|
||
"start_time": "2024-12-29T22:27:11.533929Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import os\n",
|
||
"from typing import BinaryIO, Union\n",
|
||
"\n",
|
||
"import requests\n",
|
||
"import hashlib\n",
|
||
"from datetime import datetime, timezone\n",
|
||
"import graphistry\n",
|
||
"import networkx as nx\n",
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import tiktoken\n",
|
||
"import nltk\n",
|
||
"import base64\n",
|
||
"import networkx as nx\n",
|
||
"from bokeh.io import output_file, save\n",
|
||
"from bokeh.plotting import figure, from_networkx\n",
|
||
"from bokeh.models import Circle, MultiLine, HoverTool, ColumnDataSource, Range1d\n",
|
||
"\n",
|
||
"\n",
|
||
"from cognee.base_config import get_base_config\n",
|
||
"from cognee.infrastructure.databases.graph import get_graph_engine\n",
|
||
"\n",
|
||
"from uuid import uuid4\n",
|
||
"import pathlib\n",
|
||
"\n",
|
||
"from cognee.shared.exceptions import IngestionError\n",
|
||
"\n",
|
||
"\n",
|
||
"async def create_cognee_style_network_with_logo(\n",
|
||
" G,\n",
|
||
" output_filename: str = \"cognee_network_with_logo.html\",\n",
|
||
" title: str = \"Cognee-Style Network\",\n",
|
||
" node_attribute: str = \"group\",\n",
|
||
" layout_func=nx.spring_layout,\n",
|
||
" layout_scale: float = 3.0,\n",
|
||
" logo_alpha: float = 0.1, # Transparency of the logo\n",
|
||
"):\n",
|
||
" \"\"\"\n",
|
||
" Create a Cognee-inspired network visualization with an embedded logo as a watermark.\n",
|
||
"\n",
|
||
" :param G: Graph data.\n",
|
||
" :param output_filename: The HTML file where the visualization will be saved.\n",
|
||
" :param title: Title of the visualization.\n",
|
||
" :param node_attribute: Node attribute used to color the nodes.\n",
|
||
" :param layout_func: Layout function from NetworkX (e.g., nx.spring_layout).\n",
|
||
" :param layout_scale: Scale of the layout.\n",
|
||
" :param logo_alpha: Transparency of the logo (0 = fully transparent, 1 = fully opaque).\n",
|
||
" \"\"\"\n",
|
||
"\n",
|
||
" # Ensure every node has the specified attribute; otherwise \"Unknown\"\n",
|
||
" \n",
|
||
" (nodes, edges) = G\n",
|
||
" networkx_graph = nx.MultiDiGraph()\n",
|
||
"\n",
|
||
" networkx_graph.add_nodes_from(nodes)\n",
|
||
" networkx_graph.add_edges_from(edges)\n",
|
||
"\n",
|
||
" G = networkx_graph\n",
|
||
" new_G = nx.MultiDiGraph() if isinstance(G, nx.MultiDiGraph) else nx.Graph()\n",
|
||
" \n",
|
||
" # Convert nodes and their attributes\n",
|
||
" for node, data in G.nodes(data=True):\n",
|
||
" print(data.items())\n",
|
||
" import uuid\n",
|
||
" serializable_data = {k: str(v) if isinstance(v, uuid.UUID) else v for k, v in data.items()}\n",
|
||
" new_G.add_node(str(node), **serializable_data)\n",
|
||
" \n",
|
||
" # Convert edges and their attributes\n",
|
||
" for u, v, data in G.edges(data=True):\n",
|
||
" import uuid\n",
|
||
" serializable_data = {k: str(v) if isinstance(v, uuid.UUID) else v for k, v in data.items()}\n",
|
||
" new_G.add_edge(str(u), str(v), **serializable_data)\n",
|
||
" \n",
|
||
" G = new_G # Use the new graph\n",
|
||
"\n",
|
||
" # Prepare Bokeh output\n",
|
||
" output_file(output_filename)\n",
|
||
"\n",
|
||
" # Create a figure with light gray background\n",
|
||
" p = figure(\n",
|
||
" title=title,\n",
|
||
" tools=\"pan,wheel_zoom,save,reset,hover\",\n",
|
||
" active_scroll=\"wheel_zoom\",\n",
|
||
" width=1200,\n",
|
||
" height=900,\n",
|
||
" background_fill_color=\"#F4F4F4\", # Light Gray\n",
|
||
" toolbar_location=\"below\",\n",
|
||
" x_range=Range1d(-layout_scale, layout_scale),\n",
|
||
" y_range=Range1d(-layout_scale, layout_scale),\n",
|
||
" )\n",
|
||
" p.toolbar.logo = None\n",
|
||
" p.axis.visible = False\n",
|
||
" p.grid.visible = False\n",
|
||
" p.outline_line_color = None\n",
|
||
"\n",
|
||
" import cairosvg\n",
|
||
" \n",
|
||
" svg_logo =\"\"\"<svg width=\"1294\" height=\"324\" viewBox=\"0 0 1294 324\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n",
|
||
" <mask id=\"mask0_103_2579\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1294\" height=\"324\">\n",
|
||
" <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M380.648 131.09C365.133 131.09 353.428 142.843 353.428 156.285V170.258C353.428 183.7 365.133 195.452 380.648 195.452C388.268 195.452 393.57 193.212 401.288 187.611C405.57 184.506 411.579 185.449 414.682 189.714C417.805 193.978 416.842 199.953 412.561 203.038C402.938 209.995 393.727 214.515 380.628 214.515C355.49 214.555 334.241 195.197 334.241 170.258V156.285C334.241 131.366 355.49 112.008 380.648 112.008C393.747 112.008 402.958 116.528 412.581 123.485C416.862 126.59 417.805 132.545 414.702 136.809C411.579 141.074 405.589 142.017 401.308 138.912C393.59 133.331 388.268 131.071 380.667 131.071L380.648 131.09ZM474.875 131.09C459.792 131.09 447.557 143.255 447.557 158.289V168.509C447.557 183.543 459.792 195.708 474.875 195.708C489.958 195.708 501.977 183.602 501.977 168.509V158.289C501.977 143.196 489.879 131.09 474.875 131.09ZM428.37 158.289C428.37 132.741 449.188 112.008 474.875 112.008C500.563 112.008 521.164 132.8 521.164 158.289V168.509C521.164 193.998 500.622 214.79 474.875 214.79C449.129 214.79 428.37 194.057 428.37 168.509V158.289ZM584.774 131.601C569.652 131.601 557.457 143.747 557.457 158.683C557.457 173.618 569.672 185.764 584.774 185.764C599.877 185.764 611.876 173.697 611.876 158.683C611.876 143.668 599.818 131.601 584.774 131.601ZM538.269 158.683C538.269 133.154 559.126 112.519 584.774 112.519C595.693 112.519 605.67 116.253 613.545 122.483L620.733 115.329C624.484 111.595 630.552 111.595 634.303 115.329C638.054 119.063 638.054 125.096 634.303 128.83L625.819 137.281C629.178 143.688 631.063 150.979 631.063 158.702C631.063 184.152 610.501 204.866 584.774 204.866C584.519 204.866 584.264 204.866 584.008 204.866H563.643C560.226 204.866 557.457 207.617 557.457 211.017C557.457 214.417 560.226 217.168 563.643 217.168H589.939H598.345C605.258 217.168 612.426 219.075 618.18 223.614C624.131 228.292 627.901 235.229 628.569 243.739C629.747 258.812 619.123 269.11 610.482 272.431L586.444 283.004C581.593 285.127 575.937 282.945 573.796 278.131C571.655 273.316 573.855 267.675 578.686 265.553L602.96 254.882C603.137 254.803 603.333 254.724 603.51 254.665C604.531 254.292 606.259 253.191 607.614 251.364C608.871 249.674 609.598 247.649 609.421 245.252C609.146 241.754 607.811 239.808 606.259 238.609C604.551 237.253 601.84 236.271 598.325 236.271H564.036C563.937 236.271 563.839 236.271 563.721 236.271H563.604C549.601 236.271 538.23 224.97 538.23 211.037C538.23 201.997 543.002 194.077 550.171 189.616C542.747 181.44 538.23 170.612 538.23 158.722L538.269 158.683ZM694.045 131.601C679.021 131.601 666.825 143.727 666.825 158.683V205.239C666.825 210.506 662.525 214.79 657.242 214.79C651.959 214.79 647.658 210.526 647.658 205.239V158.683C647.658 133.193 668.436 112.519 694.065 112.519C719.693 112.519 740.471 133.193 740.471 158.683V205.239C740.471 210.506 736.17 214.79 730.887 214.79C725.605 214.79 721.304 210.526 721.304 205.239V158.683C721.304 143.727 709.128 131.601 694.084 131.601H694.045ZM807.204 131.621C791.748 131.621 779.356 143.963 779.356 159.017V168.843C779.356 183.897 791.748 196.238 807.204 196.238C812.565 196.238 817.514 194.745 821.698 192.19C826.214 189.439 832.126 190.834 834.895 195.334C837.664 199.835 836.25 205.711 831.733 208.462C824.604 212.825 816.179 215.321 807.204 215.321C781.3 215.321 760.169 194.588 760.169 168.843V159.017C760.169 133.272 781.3 112.538 807.204 112.538C829.357 112.538 847.778 127.671 852.707 148.07L854.632 156.049L813.744 172.597C808.834 174.581 803.237 172.243 801.234 167.349C799.231 162.475 801.587 156.894 806.497 154.909L830.947 145.004C826.156 136.986 817.338 131.601 807.165 131.601L807.204 131.621ZM912.37 131.621C896.914 131.621 884.522 143.963 884.522 159.017V168.843C884.522 183.897 896.914 196.238 912.37 196.238C917.732 196.238 922.681 194.745 926.864 192.19C928.965 190.913 930.89 189.36 932.559 187.572C936.192 183.72 942.261 183.543 946.11 187.139C949.979 190.736 950.175 196.789 946.542 200.621C943.694 203.628 940.454 206.281 936.879 208.462C929.731 212.825 921.326 215.321 912.331 215.321C886.427 215.321 865.296 194.588 865.296 168.843V159.017C865.296 133.272 886.427 112.538 912.331 112.538C934.484 112.538 952.905 127.671 957.834 148.07L959.759 156.049L918.871 172.597C913.961 174.581 908.364 172.243 906.361 167.349C904.358 162.475 906.714 156.894 911.624 154.909L936.074 145.004C931.282 136.986 922.465 131.601 912.292 131.601L912.37 131.621Z\" fill=\"#6510F4\"/>\n",
|
||
" </mask>\n",
|
||
" <g mask=\"url(#mask0_103_2579)\">\n",
|
||
" <rect x=\"86\" y=\"-119\" width=\"1120\" height=\"561\" fill=\"#6510F4\"/>\n",
|
||
" </g>\n",
|
||
" </svg>\"\"\"\n",
|
||
"\n",
|
||
"\n",
|
||
" png_data = cairosvg.svg2png(bytestring=svg_logo.encode(\"utf-8\"))\n",
|
||
" logo_base64 = base64.b64encode(png_data).decode(\"utf-8\")\n",
|
||
" logo_url = f\"data:image/png;base64,{logo_base64}\"\n",
|
||
"\n",
|
||
" # Add the logo as an image at the center of the graph\n",
|
||
" # Position the logo behind the graph using CSS layering\n",
|
||
" p.image_url(\n",
|
||
" url=[logo_url],\n",
|
||
" x=-layout_scale * 0.5, # Adjusted position to center\n",
|
||
" y=layout_scale * 0.5, # Adjusted position to center\n",
|
||
" w=layout_scale * 1.2, # Width of the logo\n",
|
||
" h=layout_scale * 1.2, # Height of the logo\n",
|
||
" anchor=\"center\",\n",
|
||
" global_alpha=logo_alpha, # Transparency for watermark effect\n",
|
||
" )\n",
|
||
" p.image_url(\n",
|
||
" url=[logo_url],\n",
|
||
" x=-layout_scale * -0.5, # Adjusted position to center\n",
|
||
" y=layout_scale * -0.5, # Adjusted position to center\n",
|
||
" w=layout_scale * 1.2, # Width of the logo\n",
|
||
" h=layout_scale * 1.2, # Height of the logo\n",
|
||
" anchor=\"center\",\n",
|
||
" global_alpha=logo_alpha, # Transparency for watermark effect\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Generate graph layout\n",
|
||
" layout_positions = {str(node): position for node, position in layout_func(G).items()}\n",
|
||
"\n",
|
||
" graph_renderer = from_networkx(\n",
|
||
" G,\n",
|
||
" layout_positions,\n",
|
||
" scale=layout_scale,\n",
|
||
" center=(0, 0),\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Compute node sizes based on centrality\n",
|
||
" centrality = nx.degree_centrality(G)\n",
|
||
" node_radii = [0.02 + 0.1 * centrality[node] for node in G.nodes()]\n",
|
||
" graph_renderer.node_renderer.data_source.data[\"radius\"] = node_radii\n",
|
||
"\n",
|
||
" # Apply Cognee-inspired colors for nodes\n",
|
||
" cognee_colors = [\"#6510F4\", \"#0DFF00\", \"#FFFFFF\"] # Violet, Green, White\n",
|
||
" unique_attrs = list({\n",
|
||
" G.nodes[node].get(node_attribute, G.nodes[node].get('id', 'Unknown')) \n",
|
||
" for node in G.nodes()\n",
|
||
" })\n",
|
||
" color_map = {attr: cognee_colors[i % len(cognee_colors)] for i, attr in enumerate(unique_attrs)}\n",
|
||
" node_colors = [\n",
|
||
" color_map[G.nodes[node].get(node_attribute, G.nodes[node].get('id', 'Unknown'))] \n",
|
||
" for node in G.nodes()\n",
|
||
"]\n",
|
||
"\n",
|
||
" graph_renderer.node_renderer.data_source.data[\"fill_color\"] = node_colors\n",
|
||
"\n",
|
||
" # Style nodes\n",
|
||
" graph_renderer.node_renderer.glyph = Circle(\n",
|
||
" radius=\"radius\",\n",
|
||
" fill_color=\"fill_color\",\n",
|
||
" fill_alpha=0.9,\n",
|
||
" line_color=\"#000000\", # Abyss Black outline\n",
|
||
" line_width=1.5,\n",
|
||
" )\n",
|
||
" graph_renderer.node_renderer.hover_glyph = Circle(\n",
|
||
" radius=\"radius\",\n",
|
||
" fill_color=\"#FFFFFF\", # White fill on hover\n",
|
||
" fill_alpha=1.0,\n",
|
||
" line_color=\"#6510F4\", # Violet outline on hover\n",
|
||
" line_width=2.5,\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Style edges\n",
|
||
" graph_renderer.edge_renderer.glyph = MultiLine(\n",
|
||
" line_color=\"#000000\", # Abyss Black edges\n",
|
||
" line_alpha=0.3,\n",
|
||
" line_width=1.5,\n",
|
||
" )\n",
|
||
" graph_renderer.edge_renderer.hover_glyph = MultiLine(\n",
|
||
" line_color=\"#0DFF00\", # Green on hover\n",
|
||
" line_alpha=0.8,\n",
|
||
" line_width=2.0,\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Hover tool for node tooltips\n",
|
||
" graph_renderer.node_renderer.data_source.data[node_attribute] = [\n",
|
||
" G.nodes[node].get(node_attribute, G.nodes[node].get('id', 'Unknown')) \n",
|
||
" for node in G.nodes()\n",
|
||
" ]\n",
|
||
" hover_tool = HoverTool(\n",
|
||
" tooltips=[\n",
|
||
" (\"Node\", \"@index\"),\n",
|
||
" (node_attribute.capitalize(), f\"@{node_attribute}\"),\n",
|
||
" (\"Centrality\", \"@radius{0.00}\"),\n",
|
||
" ],\n",
|
||
" renderers=[graph_renderer],\n",
|
||
" )\n",
|
||
" p.add_tools(hover_tool)\n",
|
||
"\n",
|
||
" # Add the graph to the plot\n",
|
||
" p.renderers.append(graph_renderer)\n",
|
||
" from bokeh.io import output_notebook, show\n",
|
||
"\n",
|
||
" # Save the result\n",
|
||
" output_notebook()\n",
|
||
"\n",
|
||
" # Display the plot in the notebook\n",
|
||
" show(p)\n",
|
||
" print(f\"Cognee-style network with logo saved to '{output_filename}'\")\n",
|
||
" from bokeh.embed import file_html\n",
|
||
" from bokeh.resources import CDN\n",
|
||
" \n",
|
||
" html_content = file_html(p, CDN, title=\"Cognee-style Network\")\n",
|
||
"\n",
|
||
" # Save HTML to file if needed\n",
|
||
" with open(output_filename, \"w\") as f:\n",
|
||
" f.write(html_content)\n",
|
||
" print(f\"HTML plot saved to '{output_filename}'\")\n",
|
||
"\n",
|
||
" # Return the HTML content as a string\n",
|
||
" return html_content\n"
|
||
],
|
||
"id": "296c8298f25d53d8",
|
||
"outputs": [],
|
||
"execution_count": 88
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-30T09:50:38.625634Z",
|
||
"start_time": "2024-12-30T09:50:38.614895Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import networkx as nx\n",
|
||
"from bokeh.plotting import figure, output_file, show\n",
|
||
"from bokeh.models import Circle, MultiLine, HoverTool, Range1d\n",
|
||
"from bokeh.io import output_notebook\n",
|
||
"from bokeh.embed import file_html\n",
|
||
"from bokeh.resources import CDN\n",
|
||
"from bokeh.plotting import figure, from_networkx\n",
|
||
"import base64\n",
|
||
"import cairosvg\n",
|
||
"import logging\n",
|
||
"\n",
|
||
"logging.basicConfig(level=logging.INFO)\n",
|
||
"\n",
|
||
"def convert_to_serializable_graph(G):\n",
|
||
" \"\"\"\n",
|
||
" Convert a graph into a serializable format with stringified node and edge attributes.\n",
|
||
" \"\"\"\n",
|
||
" (nodes, edges) = G\n",
|
||
" networkx_graph = nx.MultiDiGraph()\n",
|
||
"\n",
|
||
" networkx_graph.add_nodes_from(nodes)\n",
|
||
" networkx_graph.add_edges_from(edges)\n",
|
||
" G = networkx_graph\n",
|
||
" new_G = nx.MultiDiGraph() if isinstance(G, nx.MultiDiGraph) else nx.Graph()\n",
|
||
" for node, data in G.nodes(data=True):\n",
|
||
" serializable_data = {k: str(v) for k, v in data.items()}\n",
|
||
" new_G.add_node(str(node), **serializable_data)\n",
|
||
" for u, v, data in G.edges(data=True):\n",
|
||
" serializable_data = {k: str(v) for k, v in data.items()}\n",
|
||
" new_G.add_edge(str(u), str(v), **serializable_data)\n",
|
||
" return new_G\n",
|
||
"\n",
|
||
"def generate_layout_positions(G, layout_func, layout_scale):\n",
|
||
" \"\"\"\n",
|
||
" Generate layout positions for the graph using the specified layout function.\n",
|
||
" \"\"\"\n",
|
||
" positions = layout_func(G)\n",
|
||
" return {str(node): (x * layout_scale, y * layout_scale) for node, (x, y) in positions.items()}\n",
|
||
"\n",
|
||
"def assign_node_colors(G, node_attribute, palette):\n",
|
||
" \"\"\"\n",
|
||
" Assign colors to nodes based on a specified attribute and a given palette.\n",
|
||
" \"\"\"\n",
|
||
" unique_attrs = set(G.nodes[node].get(node_attribute, \"Unknown\") for node in G.nodes)\n",
|
||
" color_map = {attr: palette[i % len(palette)] for i, attr in enumerate(unique_attrs)}\n",
|
||
" return [color_map[G.nodes[node].get(node_attribute, \"Unknown\")] for node in G.nodes], color_map\n",
|
||
"\n",
|
||
"def embed_logo(p, layout_scale, logo_alpha):\n",
|
||
" \"\"\"\n",
|
||
" Embed a logo into the graph visualization as a watermark.\n",
|
||
" \"\"\"\n",
|
||
" svg_logo=\"\"\"<svg width=\"1294\" height=\"324\" viewBox=\"0 0 1294 324\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n",
|
||
" <mask id=\"mask0_103_2579\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"1294\" height=\"324\">\n",
|
||
" <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M380.648 131.09C365.133 131.09 353.428 142.843 353.428 156.285V170.258C353.428 183.7 365.133 195.452 380.648 195.452C388.268 195.452 393.57 193.212 401.288 187.611C405.57 184.506 411.579 185.449 414.682 189.714C417.805 193.978 416.842 199.953 412.561 203.038C402.938 209.995 393.727 214.515 380.628 214.515C355.49 214.555 334.241 195.197 334.241 170.258V156.285C334.241 131.366 355.49 112.008 380.648 112.008C393.747 112.008 402.958 116.528 412.581 123.485C416.862 126.59 417.805 132.545 414.702 136.809C411.579 141.074 405.589 142.017 401.308 138.912C393.59 133.331 388.268 131.071 380.667 131.071L380.648 131.09ZM474.875 131.09C459.792 131.09 447.557 143.255 447.557 158.289V168.509C447.557 183.543 459.792 195.708 474.875 195.708C489.958 195.708 501.977 183.602 501.977 168.509V158.289C501.977 143.196 489.879 131.09 474.875 131.09ZM428.37 158.289C428.37 132.741 449.188 112.008 474.875 112.008C500.563 112.008 521.164 132.8 521.164 158.289V168.509C521.164 193.998 500.622 214.79 474.875 214.79C449.129 214.79 428.37 194.057 428.37 168.509V158.289ZM584.774 131.601C569.652 131.601 557.457 143.747 557.457 158.683C557.457 173.618 569.672 185.764 584.774 185.764C599.877 185.764 611.876 173.697 611.876 158.683C611.876 143.668 599.818 131.601 584.774 131.601ZM538.269 158.683C538.269 133.154 559.126 112.519 584.774 112.519C595.693 112.519 605.67 116.253 613.545 122.483L620.733 115.329C624.484 111.595 630.552 111.595 634.303 115.329C638.054 119.063 638.054 125.096 634.303 128.83L625.819 137.281C629.178 143.688 631.063 150.979 631.063 158.702C631.063 184.152 610.501 204.866 584.774 204.866C584.519 204.866 584.264 204.866 584.008 204.866H563.643C560.226 204.866 557.457 207.617 557.457 211.017C557.457 214.417 560.226 217.168 563.643 217.168H589.939H598.345C605.258 217.168 612.426 219.075 618.18 223.614C624.131 228.292 627.901 235.229 628.569 243.739C629.747 258.812 619.123 269.11 610.482 272.431L586.444 283.004C581.593 285.127 575.937 282.945 573.796 278.131C571.655 273.316 573.855 267.675 578.686 265.553L602.96 254.882C603.137 254.803 603.333 254.724 603.51 254.665C604.531 254.292 606.259 253.191 607.614 251.364C608.871 249.674 609.598 247.649 609.421 245.252C609.146 241.754 607.811 239.808 606.259 238.609C604.551 237.253 601.84 236.271 598.325 236.271H564.036C563.937 236.271 563.839 236.271 563.721 236.271H563.604C549.601 236.271 538.23 224.97 538.23 211.037C538.23 201.997 543.002 194.077 550.171 189.616C542.747 181.44 538.23 170.612 538.23 158.722L538.269 158.683ZM694.045 131.601C679.021 131.601 666.825 143.727 666.825 158.683V205.239C666.825 210.506 662.525 214.79 657.242 214.79C651.959 214.79 647.658 210.526 647.658 205.239V158.683C647.658 133.193 668.436 112.519 694.065 112.519C719.693 112.519 740.471 133.193 740.471 158.683V205.239C740.471 210.506 736.17 214.79 730.887 214.79C725.605 214.79 721.304 210.526 721.304 205.239V158.683C721.304 143.727 709.128 131.601 694.084 131.601H694.045ZM807.204 131.621C791.748 131.621 779.356 143.963 779.356 159.017V168.843C779.356 183.897 791.748 196.238 807.204 196.238C812.565 196.238 817.514 194.745 821.698 192.19C826.214 189.439 832.126 190.834 834.895 195.334C837.664 199.835 836.25 205.711 831.733 208.462C824.604 212.825 816.179 215.321 807.204 215.321C781.3 215.321 760.169 194.588 760.169 168.843V159.017C760.169 133.272 781.3 112.538 807.204 112.538C829.357 112.538 847.778 127.671 852.707 148.07L854.632 156.049L813.744 172.597C808.834 174.581 803.237 172.243 801.234 167.349C799.231 162.475 801.587 156.894 806.497 154.909L830.947 145.004C826.156 136.986 817.338 131.601 807.165 131.601L807.204 131.621ZM912.37 131.621C896.914 131.621 884.522 143.963 884.522 159.017V168.843C884.522 183.897 896.914 196.238 912.37 196.238C917.732 196.238 922.681 194.745 926.864 192.19C928.965 190.913 930.89 189.36 932.559 187.572C936.192 183.72 942.261 183.543 946.11 187.139C949.979 190.736 950.175 196.789 946.542 200.621C943.694 203.628 940.454 206.281 936.879 208.462C929.731 212.825 921.326 215.321 912.331 215.321C886.427 215.321 865.296 194.588 865.296 168.843V159.017C865.296 133.272 886.427 112.538 912.331 112.538C934.484 112.538 952.905 127.671 957.834 148.07L959.759 156.049L918.871 172.597C913.961 174.581 908.364 172.243 906.361 167.349C904.358 162.475 906.714 156.894 911.624 154.909L936.074 145.004C931.282 136.986 922.465 131.601 912.292 131.601L912.37 131.621Z\" fill=\"#6510F4\"/>\n",
|
||
" </mask>\n",
|
||
" <g mask=\"url(#mask0_103_2579)\">\n",
|
||
" <rect x=\"86\" y=\"-119\" width=\"1120\" height=\"561\" fill=\"#6510F4\"/>\n",
|
||
" </g>\n",
|
||
" </svg>\"\"\" # Add your SVG content here\n",
|
||
" png_data = cairosvg.svg2png(bytestring=svg_logo.encode(\"utf-8\"))\n",
|
||
" logo_base64 = base64.b64encode(png_data).decode(\"utf-8\")\n",
|
||
" logo_url = f\"data:image/png;base64,{logo_base64}\"\n",
|
||
" p.image_url(\n",
|
||
" url=[logo_url],\n",
|
||
" x=-layout_scale * 0.5,\n",
|
||
" y=layout_scale * 0.5,\n",
|
||
" w=layout_scale,\n",
|
||
" h=layout_scale,\n",
|
||
" anchor=\"center\",\n",
|
||
" global_alpha=logo_alpha,\n",
|
||
" )\n",
|
||
"\n",
|
||
"def style_and_render_graph(p, G, layout_positions, node_attribute, node_colors, centrality):\n",
|
||
" \"\"\"\n",
|
||
" Apply styling and render the graph into the plot.\n",
|
||
" \"\"\"\n",
|
||
" graph_renderer = from_networkx(G, layout_positions)\n",
|
||
" node_radii = [0.02 + 0.1 * centrality[node] for node in G.nodes()]\n",
|
||
" graph_renderer.node_renderer.data_source.data[\"radius\"] = node_radii\n",
|
||
" graph_renderer.node_renderer.data_source.data[\"fill_color\"] = node_colors\n",
|
||
" graph_renderer.node_renderer.glyph = Circle(\n",
|
||
" radius=\"radius\",\n",
|
||
" fill_color=\"fill_color\",\n",
|
||
" fill_alpha=0.9,\n",
|
||
" line_color=\"#000000\",\n",
|
||
" line_width=1.5,\n",
|
||
" )\n",
|
||
" graph_renderer.edge_renderer.glyph = MultiLine(\n",
|
||
" line_color=\"#000000\",\n",
|
||
" line_alpha=0.3,\n",
|
||
" line_width=1.5,\n",
|
||
" )\n",
|
||
" p.renderers.append(graph_renderer)\n",
|
||
" return graph_renderer\n",
|
||
"\n",
|
||
"def create_cognee_style_network_with_logo(\n",
|
||
" G,\n",
|
||
" output_filename=\"cognee_netwdzsfsdfsdgo.html\",\n",
|
||
" title=\"Cognee-Style Network\",\n",
|
||
" node_attribute=\"group\",\n",
|
||
" layout_func=nx.spring_layout,\n",
|
||
" layout_scale=3.0,\n",
|
||
" logo_alpha=0.1,\n",
|
||
"):\n",
|
||
" \"\"\"\n",
|
||
" Create a Cognee-inspired network visualization with an embedded logo.\n",
|
||
" \"\"\"\n",
|
||
" logging.info(\"Converting graph to serializable format...\")\n",
|
||
" G = convert_to_serializable_graph(G)\n",
|
||
"\n",
|
||
" logging.info(\"Generating layout positions...\")\n",
|
||
" layout_positions = generate_layout_positions(G, layout_func, layout_scale)\n",
|
||
"\n",
|
||
" logging.info(\"Assigning node colors...\")\n",
|
||
" palette = [\"#6510F4\", \"#0DFF00\", \"#FFFFFF\"]\n",
|
||
" node_colors, color_map = assign_node_colors(G, node_attribute, palette)\n",
|
||
"\n",
|
||
" logging.info(\"Calculating centrality...\")\n",
|
||
" centrality = nx.degree_centrality(G)\n",
|
||
"\n",
|
||
" logging.info(\"Preparing Bokeh output...\")\n",
|
||
" output_file(output_filename)\n",
|
||
" p = figure(\n",
|
||
" title=title,\n",
|
||
" tools=\"pan,wheel_zoom,save,reset,hover\",\n",
|
||
" active_scroll=\"wheel_zoom\",\n",
|
||
" width=1200,\n",
|
||
" height=900,\n",
|
||
" background_fill_color=\"#F4F4F4\",\n",
|
||
" x_range=Range1d(-layout_scale, layout_scale),\n",
|
||
" y_range=Range1d(-layout_scale, layout_scale),\n",
|
||
" )\n",
|
||
" p.toolbar.logo = None\n",
|
||
" p.axis.visible = False\n",
|
||
" p.grid.visible = False\n",
|
||
"\n",
|
||
" logging.info(\"Embedding logo into visualization...\")\n",
|
||
" embed_logo(p, layout_scale, logo_alpha)\n",
|
||
"\n",
|
||
" logging.info(\"Styling and rendering graph...\")\n",
|
||
" style_and_render_graph(p, G, layout_positions, node_attribute, node_colors, centrality)\n",
|
||
"\n",
|
||
" logging.info(\"Adding hover tool...\")\n",
|
||
" hover_tool = HoverTool(\n",
|
||
" tooltips=[\n",
|
||
" (\"Node\", \"@index\"),\n",
|
||
" (node_attribute.capitalize(), f\"@{node_attribute}\"),\n",
|
||
" (\"Centrality\", \"@radius{0.00}\"),\n",
|
||
" ],\n",
|
||
" )\n",
|
||
" p.add_tools(hover_tool)\n",
|
||
" # from bokeh.io import output_notebook, show\n",
|
||
" # \n",
|
||
" # # Save the result\n",
|
||
" # output_notebook()\n",
|
||
" # \n",
|
||
" # # Display the plot in the notebook\n",
|
||
" # show(p)\n",
|
||
"\n",
|
||
" logging.info(f\"Saving visualization to {output_filename}...\")\n",
|
||
" html_content = file_html(p, CDN, title)\n",
|
||
" with open(output_filename, \"w\") as f:\n",
|
||
" f.write(html_content)\n",
|
||
" # \n",
|
||
" # logging.info(\"Visualization complete.\")\n",
|
||
" print(html_content)\n",
|
||
"\n",
|
||
" # return html_content\n",
|
||
"\n",
|
||
"\n",
|
||
"def graph_to_tuple(graph):\n",
|
||
" \"\"\"\n",
|
||
" Converts a networkx graph to a tuple of (nodes, edges).\n",
|
||
"\n",
|
||
" :param graph: A networkx graph.\n",
|
||
" :return: A tuple (nodes, edges).\n",
|
||
" \"\"\"\n",
|
||
" nodes = list(graph.nodes(data=True)) # Get nodes with attributes\n",
|
||
" edges = list(graph.edges(data=True)) # Get edges with attributes\n",
|
||
" return (nodes, edges)"
|
||
],
|
||
"id": "bf001eeda0f4f450",
|
||
"outputs": [],
|
||
"execution_count": 110
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-30T09:50:39.237084Z",
|
||
"start_time": "2024-12-30T09:50:39.184107Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"\n",
|
||
"import networkx as nx\n",
|
||
"\n",
|
||
"# graph_data = await graph_engine.get_graph_data()\n",
|
||
"# \n",
|
||
"# print(graph_data)\n",
|
||
"G = nx.random_geometric_graph(50, 0.3)\n",
|
||
"# Assign random group attributes for coloring\n",
|
||
"for i, node in enumerate(G.nodes()):\n",
|
||
" G.nodes[node][\"group\"] = f\"Group {i % 3 + 1}\"\n",
|
||
"def graph_to_tuple(graph):\n",
|
||
" \"\"\"\n",
|
||
" Converts a networkx graph to a tuple of (nodes, edges).\n",
|
||
" \n",
|
||
" :param graph: A networkx graph.\n",
|
||
" :return: A tuple (nodes, edges).\n",
|
||
" \"\"\"\n",
|
||
" nodes = list(graph.nodes(data=True)) # Get nodes with attributes\n",
|
||
" edges = list(graph.edges(data=True)) # Get edges with attributes\n",
|
||
" return (nodes, edges)\n",
|
||
"\n",
|
||
"G= graph_to_tuple(G)\n",
|
||
" \n",
|
||
"print(G)\n",
|
||
"\n",
|
||
"create_cognee_style_network_with_logo(\n",
|
||
" G,\n",
|
||
" output_filename=\"cognee_style_network_with_logo.html\",\n",
|
||
" title=\"Cognee-Graph Network\",\n",
|
||
" node_attribute=\"group\",\n",
|
||
" layout_func=nx.spring_layout,\n",
|
||
" layout_scale=3.0, \n",
|
||
")"
|
||
],
|
||
"id": "75ff7ff88fd5894e",
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:root:Converting graph to serializable format...INFO:root:Generating layout positions...INFO:root:Assigning node colors...INFO:root:Calculating centrality...INFO:root:Preparing Bokeh output...INFO:bokeh.io.state:Session output file 'cognee_style_network_with_logo.html' already exists, will be overwritten.INFO:root:Embedding logo into visualization...INFO:root:Styling and rendering graph...INFO:root:Adding hover tool...INFO:root:Saving visualization to cognee_style_network_with_logo.html..."
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"([(0, {'pos': [0.6391927561230611, 0.9577081939968699], 'group': 'Group 1'}), (1, {'pos': [0.7742314200503037, 0.8238027878749569], 'group': 'Group 2'}), (2, {'pos': [0.5512540135677992, 0.9153577565777516], 'group': 'Group 3'}), (3, {'pos': [0.25732444952662925, 0.1490908794049587], 'group': 'Group 1'}), (4, {'pos': [0.6279736736286188, 0.10785263935795697], 'group': 'Group 2'}), (5, {'pos': [0.914880874135223, 0.74802072749348], 'group': 'Group 3'}), (6, {'pos': [0.26667034242888454, 0.35251088926605467], 'group': 'Group 1'}), (7, {'pos': [0.5120452199291847, 0.03985698500510293], 'group': 'Group 2'}), (8, {'pos': [0.6328184134196475, 0.7746435028883368], 'group': 'Group 3'}), (9, {'pos': [0.9987954567088807, 0.14034841131467046], 'group': 'Group 1'}), (10, {'pos': [0.12058819726432679, 0.13241169932006103], 'group': 'Group 2'}), (11, {'pos': [0.22508864454761268, 0.6079455800309562], 'group': 'Group 3'}), (12, {'pos': [0.11725977735714843, 0.1411642545174081], 'group': 'Group 1'}), (13, {'pos': [0.919394680890905, 0.42166241371429103], 'group': 'Group 2'}), (14, {'pos': [0.25836207293422575, 0.7258827350068001], 'group': 'Group 3'}), (15, {'pos': [0.5172530162885245, 0.3000006396486069], 'group': 'Group 1'}), (16, {'pos': [0.15298901445139557, 0.6194415824148096], 'group': 'Group 2'}), (17, {'pos': [0.5503858383395439, 0.2963881895674162], 'group': 'Group 3'}), (18, {'pos': [0.3129369332017773, 0.9521497094216804], 'group': 'Group 1'}), (19, {'pos': [0.06277239466252482, 0.38715809100060106], 'group': 'Group 2'}), (20, {'pos': [0.5823930417754898, 0.5818352592143017], 'group': 'Group 3'}), (21, {'pos': [0.11925372303762072, 0.23308929448109605], 'group': 'Group 1'}), (22, {'pos': [0.9639456495249757, 0.5916791753212867], 'group': 'Group 2'}), (23, {'pos': [0.3588059198785577, 0.04938679848326155], 'group': 'Group 3'}), (24, {'pos': [0.5490274008918267, 0.06720020630140588], 'group': 'Group 1'}), (25, {'pos': [0.602429225429183, 0.4562231010090445], 'group': 'Group 2'}), (26, {'pos': [0.09188236933925253, 0.047929414091373634], 'group': 'Group 3'}), (27, {'pos': [0.06377074952137485, 0.2797118663108954], 'group': 'Group 1'}), (28, {'pos': [0.4906626665413346, 0.4663320694792623], 'group': 'Group 2'}), (29, {'pos': [0.6172692666513304, 0.6263884205262166], 'group': 'Group 3'}), (30, {'pos': [0.49741178043085055, 0.01644316714237193], 'group': 'Group 1'}), (31, {'pos': [0.7988288141788339, 0.059965469974182284], 'group': 'Group 2'}), (32, {'pos': [0.7217970607301775, 0.2708413010090548], 'group': 'Group 3'}), (33, {'pos': [0.011511237425662069, 0.028343774982744208], 'group': 'Group 1'}), (34, {'pos': [0.38128826432700813, 0.2895041685619608], 'group': 'Group 2'}), (35, {'pos': [0.07417032576014304, 0.636863466707599], 'group': 'Group 3'}), (36, {'pos': [0.13676493570949355, 0.376877180606942], 'group': 'Group 1'}), (37, {'pos': [0.9323413821739948, 0.8826597647832115], 'group': 'Group 2'}), (38, {'pos': [0.3894337987935055, 0.26448206953319053], 'group': 'Group 3'}), (39, {'pos': [0.8254125197486137, 0.05070075106309235], 'group': 'Group 1'}), (40, {'pos': [0.2743690977404899, 0.29681368611004266], 'group': 'Group 2'}), (41, {'pos': [0.941395039956768, 0.6449589631657039], 'group': 'Group 3'}), (42, {'pos': [0.611788621954416, 0.4739744957109453], 'group': 'Group 1'}), (43, {'pos': [0.2942512190192522, 0.0937049487795869], 'group': 'Group 2'}), (44, {'pos': [0.23196649324366891, 0.16136392127068122], 'group': 'Group 3'}), (45, {'pos': [0.08688565032870654, 0.75331756935591], 'group': 'Group 1'}), (46, {'pos': [0.1510509171930553, 0.9969999993249501], 'group': 'Group 2'}), (47, {'pos': [0.5439996268152169, 0.07151361555903424], 'group': 'Group 3'}), (48, {'pos': [0.17916289804000352, 0.41119976642291267], 'group': 'Group 1'}), (49, {'pos': [0.8746527854119696, 0.5086303883085483], 'group': 'Group 2'})], [(0, 1, {}), (0, 2, {}), (0, 8, {}), (1, 2, {}), (1, 5, {}), (1, 8, {}), (1, 22, {}), (1, 29, {}), (1, 37, {}), (1, 41, {}), (2, 8, {}), (2, 18, {}), (2, 29, {}), (3, 6, {}), (3, 7, {}), (3, 10, {}), (3, 12, {}), (3, 21, {}), (3, 23, {}), (3, 26, {}), (3, 27, {}), (3, 30, {}), (3, 33, {}), (3, 34, {}), (3, 36, {}), (3, 38, {}), (3, 40, {}), (3, 43, {}), (3, 44, {}), (3, 47, {}), (3, 48, {}), (4, 7, {}), (4, 15, {}), (4, 17, {}), (4, 23, {}), (4, 24, {}), (4, 30, {}), (4, 31, {}), (4, 32, {}), (4, 38, {}), (4, 39, {}), (4, 47, {}), (5, 8, {}), (5, 22, {}), (5, 37, {}), (5, 41, {}), (5, 49, {}), (6, 10, {}), (6, 11, {}), (6, 12, {}), (6, 15, {}), (6, 16, {}), (6, 17, {}), (6, 19, {}), (6, 21, {}), (6, 27, {}), (6, 28, {}), (6, 34, {}), (6, 36, {}), (6, 38, {}), (6, 40, {}), (6, 43, {}), (6, 44, {}), (6, 48, {}), (7, 15, {}), (7, 17, {}), (7, 23, {}), (7, 24, {}), (7, 30, {}), (7, 31, {}), (7, 34, {}), (7, 38, {}), (7, 43, {}), (7, 47, {}), (8, 20, {}), (8, 29, {}), (9, 13, {}), (9, 31, {}), (9, 39, {}), (10, 12, {}), (10, 19, {}), (10, 21, {}), (10, 23, {}), (10, 26, {}), (10, 27, {}), (10, 33, {}), (10, 36, {}), (10, 38, {}), (10, 40, {}), (10, 43, {}), (10, 44, {}), (10, 48, {}), (11, 14, {}), (11, 16, {}), (11, 19, {}), (11, 35, {}), (11, 36, {}), (11, 45, {}), (11, 48, {}), (12, 19, {}), (12, 21, {}), (12, 23, {}), (12, 26, {}), (12, 27, {}), (12, 33, {}), (12, 36, {}), (12, 38, {}), (12, 40, {}), (12, 43, {}), (12, 44, {}), (12, 48, {}), (13, 22, {}), (13, 32, {}), (13, 41, {}), (13, 49, {}), (14, 16, {}), (14, 18, {}), (14, 35, {}), (14, 45, {}), (14, 46, {}), (15, 17, {}), (15, 20, {}), (15, 23, {}), (15, 24, {}), (15, 25, {}), (15, 28, {}), (15, 30, {}), (15, 32, {}), (15, 34, {}), (15, 38, {}), (15, 40, {}), (15, 42, {}), (15, 47, {}), (16, 19, {}), (16, 35, {}), (16, 36, {}), (16, 45, {}), (16, 48, {}), (17, 20, {}), (17, 24, {}), (17, 25, {}), (17, 28, {}), (17, 30, {}), (17, 32, {}), (17, 34, {}), (17, 38, {}), (17, 40, {}), (17, 42, {}), (17, 47, {}), (18, 46, {}), (19, 21, {}), (19, 27, {}), (19, 35, {}), (19, 36, {}), (19, 40, {}), (19, 44, {}), (19, 48, {}), (20, 25, {}), (20, 28, {}), (20, 29, {}), (20, 42, {}), (21, 26, {}), (21, 27, {}), (21, 33, {}), (21, 34, {}), (21, 36, {}), (21, 38, {}), (21, 40, {}), (21, 43, {}), (21, 44, {}), (21, 48, {}), (22, 37, {}), (22, 41, {}), (22, 49, {}), (23, 24, {}), (23, 26, {}), (23, 30, {}), (23, 34, {}), (23, 38, {}), (23, 40, {}), (23, 43, {}), (23, 44, {}), (23, 47, {}), (24, 30, {}), (24, 31, {}), (24, 32, {}), (24, 34, {}), (24, 38, {}), (24, 39, {}), (24, 43, {}), (24, 47, {}), (25, 28, {}), (25, 29, {}), (25, 32, {}), (25, 34, {}), (25, 38, {}), (25, 42, {}), (25, 49, {}), (26, 27, {}), (26, 33, {}), (26, 43, {}), (26, 44, {}), (27, 33, {}), (27, 36, {}), (27, 40, {}), (27, 43, {}), (27, 44, {}), (27, 48, {}), (28, 29, {}), (28, 34, {}), (28, 38, {}), (28, 40, {}), (28, 42, {}), (29, 42, {}), (29, 49, {}), (30, 34, {}), (30, 38, {}), (30, 43, {}), (30, 47, {}), (31, 32, {}), (31, 39, {}), (31, 47, {}), (32, 39, {}), (32, 42, {}), (32, 47, {}), (32, 49, {}), (33, 43, {}), (33, 44, {}), (34, 36, {}), (34, 38, {}), (34, 40, {}), (34, 42, {}), (34, 43, {}), (34, 44, {}), (34, 47, {}), (34, 48, {}), (35, 36, {}), (35, 45, {}), (35, 48, {}), (36, 38, {}), (36, 40, {}), (36, 44, {}), (36, 48, {}), (37, 41, {}), (38, 40, {}), (38, 43, {}), (38, 44, {}), (38, 47, {}), (38, 48, {}), (39, 47, {}), (40, 43, {}), (40, 44, {}), (40, 48, {}), (41, 49, {}), (42, 49, {}), (43, 44, {}), (43, 47, {}), (44, 48, {}), (45, 46, {})])\n",
|
||
"<!DOCTYPE html>\n",
|
||
"<html lang=\"en\">\n",
|
||
" <head>\n",
|
||
" <meta charset=\"utf-8\">\n",
|
||
" <title>Cognee-Graph Network</title>\n",
|
||
" <style>\n",
|
||
" html, body {\n",
|
||
" box-sizing: border-box;\n",
|
||
" display: flow-root;\n",
|
||
" height: 100%;\n",
|
||
" margin: 0;\n",
|
||
" padding: 0;\n",
|
||
" }\n",
|
||
" </style>\n",
|
||
" <script type=\"text/javascript\" src=\"https://cdn.bokeh.org/bokeh/release/bokeh-3.6.2.min.js\"></script>\n",
|
||
" <script type=\"text/javascript\">\n",
|
||
" Bokeh.set_log_level(\"info\");\n",
|
||
" </script>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <div id=\"d64c1a7a-b66d-4c81-acec-907537260e4a\" data-root-id=\"p7816\" style=\"display: contents;\"></div>\n",
|
||
" \n",
|
||
" <script type=\"application/json\" id=\"c389e08f-4d74-4d25-a3d1-a7ad2850e518\">\n",
|
||
" {\"4e8e9336-b495-4592-ae17-d9ab2bc2ac1d\":{\"version\":\"3.6.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p7816\",\"attributes\":{\"width\":1200,\"height\":900,\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p7814\",\"attributes\":{\"start\":-3.0,\"end\":3.0}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p7815\",\"attributes\":{\"start\":-3.0,\"end\":3.0}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p7826\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p7827\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p7819\",\"attributes\":{\"text\":\"Cognee-Graph Network\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p7849\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p7843\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p7844\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p7845\"},\"data\":{\"type\":\"map\",\"entries\":[[\"url\",[\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQ4AAAFECAYAAABmq6MtAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdeZhk5XXn+e95b0Tue1XWkmRVUQVC7AjEvmi1QGixFkjJGzaSUFlGxjYz0+OZac90dj+2PE93T+MWbSyXQEKSbalVsiQjFqEdJLELEJidoopakqrKyj0jt4j7nvnjZonFIKDyRi5Vv8/z5CP0SLz3jXjj3oh77nnPAREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREcmZLfQERERkLtw2QoEuirVTg4VKmiRTaVKor7dkyi2EaCEFK7pZ6lhieNncE/CC4dE8xkmPtSFWSkmaNhTLlYnGzkppG+XNWLrQr24x68GTxsMpNpT6CxPlYqEmTQoxhiTWW1LjZhXH9r/3AC9938NUTBPztFyoVCZr2itte6gsg3IvFhf6tR0a3Hoh2XY4hXSSpK08mEy72Yyb1c/+J0CNuU+ae425V5I0FmqWp7V9pLuhshkimC/E3K+AmrSzvzhRLhaSGEIaYmwolitJf2f5aphZmHlVm1sPhFVQmO4iqczsSwppEl5tzcrJ8ti2h8rCrpns14uHR6DQ3kWhUO4PSZqE/edeEkOAl1/DpJ60ZhtpF6S6TlbX/jXq7iaZnu5P9q9REkN4ufOs1tyHix2p1khE5OCkwKGIyBJ2yUpvbJgc7YpJ4UiLHIax2p1VGCscbzes3vEag1rDG91t2owphzIwDYwCA2bswdkTjT4sbE1n0i3j402DCh6+vB48aV8+scJjut49rAtOl0MXsBKnA6MJqANqcWosYO5Mu3vJzCaBSaAf5zkL3hedvuBhW+qVbdeNtgwpsFFtbhu7qI+lqZVJ4qtiZJW5L8NiQ3SrNbNa91iHEY0w4+7TZj6F2SAp+2KwvV5gT2xqGLx+m03N9+yv7Pb6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\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p7850\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p7851\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"ImageURL\",\"id\":\"p7846\",\"attributes\":{\"url\":{\"type\":\"field\",\"field\":\"url\"},\"x\":{\"type\":\"value\",\"value\":-1.5},\"y\":{\"type\":\"value\",\"value\":1.5},\"w\":{\"type\":\"value\",\"value\":3.0},\"h\":{\"type\":\"value\",\"value\":3.0},\"global_alpha\":{\"type\":\"value\",\"value\":0.1},\"anchor\":\"center\"}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"ImageURL\",\"id\":\"p7847\",\"attributes\":{\"url\":{\"type\":\"field\",\"field\":\"url\"},\"x\":{\"type\":\"value\",\"value\":-1.5},\"y\":{\"type\":\"value\",\"value\":1.5},\"w\":{\"type\":\"value\",\"value\":3.0},\"h\":{\"type\":\"value\",\"value\":3.0},\"global_alpha\":{\"type\":\"value\",\"value\":0.1},\"anchor\":\"center\"}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"ImageURL\",\"id\":\"p7848\",\"attributes\":{\"url\":{\"type\":\"field\",\"field\":\"url\"},\"x\":{\"type\":\"value\",\"value\":-1.5},\"y\":{\"type\":\"value\",\"value\":1.5},\"w\":{\"type\":\"value\",\"value\":3.0},\"h\":{\"type\":\"value\",\"value\":3.0},\"global_alpha\":{\"type\":\"value\",\"value\":0.2},\"anchor\":\"center\"}}}},{\"type\":\"object\",\"name\":\"GraphRenderer\",\"id\":\"p7852\",\"attributes\":{\"layout_provider\":{\"type\":\"object\",\"name\":\"StaticLayoutProvider\",\"id\":\"p7869\",\"attributes\":{\"graph_layout\":{\"type\":\"map\",\"entries\":[[\"0\",[-0.30878409006941265,-0.9284358034378248]],[\"1\",[-0.36187718360731014,-1.402961560761843]],[\"2\",[-0.8347947421248498,-0.6692243823283017]],[\"3\",[0.42185037002185644,0.8501761337483956]],[\"4\",[0.970988442674195,-0.7383612841753642]],[\"5\",[-0.16684081724754224,-1.6602614828962428]],[\"6\",[-0.03461307511165935,1.143507735316856]],[\"7\",[0.9080846919865031,-0.4157506289828908]],[\"8\",[-0.047695128878838935,-1.261610649968805]],[\"9\",[0.8904816429602009,-1.498611119922551]],[\"10\",[0.10172497521553676,1.4957099695062672]],[\"11\",[-0.8184268799297008,1.7085568307568684]],[\"12\",[0.12417071246756561,1.5041749411547414]],[\"13\",[0.08827442521681117,-1.3334628653990515]],[\"14\",[-1.2798581887556006,1.0503537991390093]],[\"15\",[0.4694879783995627,-0.41644461280048606]],[\"16\",[-0.7599756538270568,1.7918012663679563]],[\"17\",[0.45557432873000453,-0.4511610497998102]],[\"18\",[-1.8061712084636898,0.5358339597221011]],[\"19\",[-0.2988333676073902,2.065349381543105]],[\"20\",[-0.26379624164406423,-1.0996397290777302]],[\"21\",[0.06341189530192765,1.5017634297474483]],[\"22\",[-0.18259026871474598,-1.6202642237791665]],[\"23\",[0.6489745799973031,0.37409898048562873]],[\"24\",[0.9610980307807464,-0.6713627884701636]],[\"25\",[-0.0010092846185522685,-0.8109646050825678]],[\"26\",[0.2191585303836169,1.2947418937088782]],[\"27\",[0.03830388085749221,1.66205420907971]],[\"28\",[-0.08959183631394242,-0.1805778943759554]],[\"29\",[-0.5083170889481803,-1.8667265914250661]],[\"30\",[0.986616206887394,-0.3047178348564925]],[\"31\",[1.2127316129754986,-1.5603240470800155]],[\"32\",[0.6216761661032147,-1.8448999543835227]],[\"33\",[0.223495794624484,1.2399009265288607]],[\"34\",[0.23211990978268587,0.5686352511314868]],[\"35\",[-0.8338168729698696,1.7773353753442578]],[\"36\",[-0.08005166968451846,1.941745724369899]],[\"37\",[0.062214617745139214,-1.657140195758858]],[\"38\",[0.48344807466104167,0.8334505990147101]],[\"39\",[1.6101299693745719,-1.6313377973443584]],[\"40\",[0.03621757421690418,1.691726598799145]],[\"41\",[-0.36107742239161744,-1.9251882204596007]],[\"42\",[-0.3510909476517835,-1.7093742013922248]],[\"43\",[0.7725399573439482,0.22295709096077126]],[\"44\",[-0.34448178774247035,2.2882256911046324]],[\"45\",[-1.4101858110319139,0.5377101014148036]],[\"46\",[-2.0773447305415207,0.5127656801759363]],[\"47\",[1.8758145806739288,-1.8466742196730193]],[\"48\",[-0.6087517625251723,2.9999999999999996]],[\"49\",[-0.6486128889807317,-2.087097825489553]]]}}},\"node_renderer\":{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p7857\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p7854\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p7855\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p7856\"},\"data\":{\"type\":\"map\",\"entries\":[[\"group\",[\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\",\"Group 3\",\"Group 1\",\"Group 2\"]],[\"pos\",[\"[0.6391927561230611, 0.9577081939968699]\",\"[0.7742314200503037, 0.8238027878749569]\",\"[0.5512540135677992, 0.9153577565777516]\",\"[0.25732444952662925, 0.1490908794049587]\",\"[0.6279736736286188, 0.10785263935795697]\",\"[0.914880874135223, 0.74802072749348]\",\"[0.26667034242888454, 0.35251088926605467]\",\"[0.5120452199291847, 0.03985698500510293]\",\"[0.6328184134196475, 0.7746435028883368]\",\"[0.9987954567088807, 0.14034841131467046]\",\"[0.12058819726432679, 0.13241169932006103]\",\"[0.22508864454761268, 0.6079455800309562]\",\"[0.11725977735714843, 0.1411642545174081]\",\"[0.919394680890905, 0.42166241371429103]\",\"[0.25836207293422575, 0.7258827350068001]\",\"[0.5172530162885245, 0.3000006396486069]\",\"[0.15298901445139557, 0.6194415824148096]\",\"[0.5503858383395439, 0.2963881895674162]\",\"[0.3129369332017773, 0.9521497094216804]\",\"[0.06277239466252482, 0.38715809100060106]\",\"[0.5823930417754898, 0.5818352592143017]\",\"[0.11925372303762072, 0.23308929448109605]\",\"[0.9639456495249757, 0.5916791753212867]\",\"[0.3588059198785577, 0.04938679848326155]\",\"[0.5490274008918267, 0.06720020630140588]\",\"[0.602429225429183, 0.4562231010090445]\",\"[0.09188236933925253, 0.047929414091373634]\",\"[0.06377074952137485, 0.2797118663108954]\",\"[0.4906626665413346, 0.4663320694792623]\",\"[0.6172692666513304, 0.6263884205262166]\",\"[0.49741178043085055, 0.01644316714237193]\",\"[0.7988288141788339, 0.059965469974182284]\",\"[0.7217970607301775, 0.2708413010090548]\",\"[0.011511237425662069, 0.028343774982744208]\",\"[0.38128826432700813, 0.2895041685619608]\",\"[0.07417032576014304, 0.636863466707599]\",\"[0.13676493570949355, 0.376877180606942]\",\"[0.9323413821739948, 0.8826597647832115]\",\"[0.3894337987935055, 0.26448206953319053]\",\"[0.8254125197486137, 0.05070075106309235]\",\"[0.2743690977404899, 0.29681368611004266]\",\"[0.941395039956768, 0.6449589631657039]\",\"[0.611788621954416, 0.4739744957109453]\",\"[0.2942512190192522, 0.0937049487795869]\",\"[0.23196649324366891, 0.16136392127068122]\",\"[0.08688565032870654, 0.75331756935591]\",\"[0.1510509171930553, 0.9969999993249501]\",\"[0.5439996268152169, 0.07151361555903424]\",\"[0.17916289804000352, 0.41119976642291267]\",\"[0.8746527854119696, 0.5086303883085483]\"]],[\"index\",[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\"]],[\"radius\",[0.026122448979591838,0.036326530612244896,0.030204081632653063,0.05673469387755102,0.04244897959183673,0.03224489795918367,0.05673469387755102,0.04448979591836735,0.03224489795918367,0.026122448979591838,0.05061224489795918,0.036326530612244896,0.05061224489795918,0.030204081632653063,0.03224489795918367,0.05265306122448979,0.036326530612244896,0.05061224489795918,0.026122448979591838,0.04448979591836735,0.03428571428571429,0.05061224489795918,0.03224489795918367,0.05061224489795918,0.04653061224489796,0.04040816326530612,0.03836734693877551,0.04653061224489796,0.04040816326530612,0.036326530612244896,0.04244897959183673,0.03428571428571429,0.04244897959183673,0.036326530612244896,0.05877551020408163,0.03428571428571429,0.05061224489795918,0.028163265306122447,0.06285714285714286,0.03224489795918367,0.05469387755102041,0.03224489795918367,0.03836734693877551,0.05469387755102041,0.05265306122448979,0.030204081632653063,0.026122448979591838,0.04857142857142857,0.05061224489795918,0.036326530612244896]],[\"fill_color\",[\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\",\"#0DFF00\",\"#6510F4\",\"#FFFFFF\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p7858\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p7859\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p7870\",\"attributes\":{\"radius\":{\"type\":\"field\",\"field\":\"radius\"},\"line_color\":{\"type\":\"value\",\"value\":\"#000000\"},\"line_width\":{\"type\":\"value\",\"value\":1.5},\"fill_color\":{\"type\":\"field\",\"field\":\"fill_color\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.9}}}}},\"edge_renderer\":{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p7864\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p7861\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p7862\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p7863\"},\"data\":{\"type\":\"map\",\"entries\":[[\"start\",[\"0\",\"0\",\"0\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",\"2\",\"2\",\"2\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"3\",\"4\",\"4\",\"4\",\"4\",\"4\",\"4\",\"4\",\"4\",\"4\",\"4\",\"4\",\"5\",\"5\",\"5\",\"5\",\"5\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"6\",\"7\",\"7\",\"7\",\"7\",\"7\",\"7\",\"7\",\"7\",\"7\",\"7\",\"8\",\"8\",\"9\",\"9\",\"9\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"10\",\"11\",\"11\",\"11\",\"11\",\"11\",\"11\",\"11\",\"12\",\"12\",\"12\",\"12\",\"12\",\"12\",\"12\",\"12\",\"12\",\"12\",\"12\",\"12\",\"13\",\"13\",\"13\",\"13\",\"14\",\"14\",\"14\",\"14\",\"14\",\"15\",\"15\",\"15\",\"15\",\"15\",\"15\",\"15\",\"15\",\"15\",\"15\",\"15\",\"15\",\"15\",\"16\",\"16\",\"16\",\"16\",\"16\",\"17\",\"17\",\"17\",\"17\",\"17\",\"17\",\"17\",\"17\",\"17\",\"17\",\"17\",\"18\",\"19\",\"19\",\"19\",\"19\",\"19\",\"19\",\"19\",\"20\",\"20\",\"20\",\"20\",\"21\",\"21\",\"21\",\"21\",\"21\",\"21\",\"21\",\"21\",\"21\",\"21\",\"22\",\"22\",\"22\",\"23\",\"23\",\"23\",\"23\",\"23\",\"23\",\"23\",\"23\",\"23\",\"24\",\"24\",\"24\",\"24\",\"24\",\"24\",\"24\",\"24\",\"25\",\"25\",\"25\",\"25\",\"25\",\"25\",\"25\",\"26\",\"26\",\"26\",\"26\",\"27\",\"27\",\"27\",\"27\",\"27\",\"27\",\"28\",\"28\",\"28\",\"28\",\"28\",\"29\",\"29\",\"30\",\"30\",\"30\",\"30\",\"31\",\"31\",\"31\",\"32\",\"32\",\"32\",\"32\",\"33\",\"33\",\"34\",\"34\",\"34\",\"34\",\"34\",\"34\",\"34\",\"34\",\"35\",\"35\",\"35\",\"36\",\"36\",\"36\",\"36\",\"37\",\"38\",\"38\",\"38\",\"38\",\"38\",\"39\",\"40\",\"40\",\"40\",\"41\",\"42\",\"43\",\"43\",\"44\",\"45\"]],[\"end\",[\"1\",\"2\",\"8\",\"2\",\"5\",\"8\",\"22\",\"29\",\"37\",\"41\",\"8\",\"18\",\"29\",\"6\",\"7\",\"10\",\"12\",\"21\",\"23\",\"26\",\"27\",\"30\",\"33\",\"34\",\"36\",\"38\",\"40\",\"43\",\"44\",\"47\",\"48\",\"7\",\"15\",\"17\",\"23\",\"24\",\"30\",\"31\",\"32\",\"38\",\"39\",\"47\",\"8\",\"22\",\"37\",\"41\",\"49\",\"10\",\"11\",\"12\",\"15\",\"16\",\"17\",\"19\",\"21\",\"27\",\"28\",\"34\",\"36\",\"38\",\"40\",\"43\",\"44\",\"48\",\"15\",\"17\",\"23\",\"24\",\"30\",\"31\",\"34\",\"38\",\"43\",\"47\",\"20\",\"29\",\"13\",\"31\",\"39\",\"12\",\"19\",\"21\",\"23\",\"26\",\"27\",\"33\",\"36\",\"38\",\"40\",\"43\",\"44\",\"48\",\"14\",\"16\",\"19\",\"35\",\"36\",\"45\",\"48\",\"19\",\"21\",\"23\",\"26\",\"27\",\"33\",\"36\",\"38\",\"40\",\"43\",\"44\",\"48\",\"22\",\"32\",\"41\",\"49\",\"16\",\"18\",\"35\",\"45\",\"46\",\"17\",\"20\",\"23\",\"24\",\"25\",\"28\",\"30\",\"32\",\"34\",\"38\",\"40\",\"42\",\"47\",\"19\",\"35\",\"36\",\"45\",\"48\",\"20\",\"24\",\"25\",\"28\",\"30\",\"32\",\"34\",\"38\",\"40\",\"42\",\"47\",\"46\",\"21\",\"27\",\"35\",\"36\",\"40\",\"44\",\"48\",\"25\",\"28\",\"29\",\"42\",\"26\",\"27\",\"33\",\"34\",\"36\",\"38\",\"40\",\"43\",\"44\",\"48\",\"37\",\"41\",\"49\",\"24\",\"26\",\"30\",\"34\",\"38\",\"40\",\"43\",\"44\",\"47\",\"30\",\"31\",\"32\",\"34\",\"38\",\"39\",\"43\",\"47\",\"28\",\"29\",\"32\",\"34\",\"38\",\"42\",\"49\",\"27\",\"33\",\"43\",\"44\",\"33\",\"36\",\"40\",\"43\",\"44\",\"48\",\"29\",\"34\",\"38\",\"40\",\"42\",\"42\",\"49\",\"34\",\"38\",\"43\",\"47\",\"32\",\"39\",\"47\",\"39\",\"42\",\"47\",\"49\",\"43\",\"44\",\"36\",\"38\",\"40\",\"42\",\"43\",\"44\",\"47\",\"48\",\"36\",\"45\",\"48\",\"38\",\"40\",\"44\",\"48\",\"41\",\"40\",\"43\",\"44\",\"47\",\"48\",\"47\",\"43\",\"44\",\"48\",\"49\",\"49\",\"44\",\"47\",\"48\",\"46\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p7865\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p7866\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"MultiLine\",\"id\":\"p7871\",\"attributes\":{\"line_color\":{\"type\":\"value\",\"value\":\"#000000\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.3},\"line_width\":{\"type\":\"value\",\"value\":1.5}}}}},\"selection_policy\":{\"type\":\"object\",\"name\":\"NodesOnly\",\"id\":\"p7867\"},\"inspection_policy\":{\"type\":\"object\",\"name\":\"NodesOnly\",\"id\":\"p7868\"}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p7825\",\"attributes\":{\"logo\":null,\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p7838\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p7839\",\"attributes\":{\"renderers\":\"auto\"}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p7840\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p7841\"},{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p7842\",\"attributes\":{\"renderers\":\"auto\"}},{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p7872\",\"attributes\":{\"renderers\":\"auto\",\"tooltips\":[[\"Node\",\"@index\"],[\"Group\",\"@group\"],[\"Centrality\",\"@radius{0.00}\"]]}}],\"active_scroll\":{\"id\":\"p7839\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p7833\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p7834\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p7835\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p7836\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p7828\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p7829\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p7830\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p7831\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p7832\",\"attributes\":{\"visible\":false,\"axis\":{\"id\":\"p7828\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p7837\",\"attributes\":{\"visible\":false,\"dimension\":1,\"axis\":{\"id\":\"p7833\"}}}],\"background_fill_color\":\"#F4F4F4\"}}]}}\n",
|
||
" </script>\n",
|
||
" <script type=\"text/javascript\">\n",
|
||
" (function() {\n",
|
||
" const fn = function() {\n",
|
||
" Bokeh.safely(function() {\n",
|
||
" (function(root) {\n",
|
||
" function embed_document(root) {\n",
|
||
" const docs_json = document.getElementById('c389e08f-4d74-4d25-a3d1-a7ad2850e518').textContent;\n",
|
||
" const render_items = [{\"docid\":\"4e8e9336-b495-4592-ae17-d9ab2bc2ac1d\",\"roots\":{\"p7816\":\"d64c1a7a-b66d-4c81-acec-907537260e4a\"},\"root_ids\":[\"p7816\"]}];\n",
|
||
" root.Bokeh.embed.embed_items(docs_json, render_items);\n",
|
||
" }\n",
|
||
" if (root.Bokeh !== undefined) {\n",
|
||
" embed_document(root);\n",
|
||
" } else {\n",
|
||
" let attempts = 0;\n",
|
||
" const timer = setInterval(function(root) {\n",
|
||
" if (root.Bokeh !== undefined) {\n",
|
||
" clearInterval(timer);\n",
|
||
" embed_document(root);\n",
|
||
" } else {\n",
|
||
" attempts++;\n",
|
||
" if (attempts > 100) {\n",
|
||
" clearInterval(timer);\n",
|
||
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }, 10, root)\n",
|
||
" }\n",
|
||
" })(window);\n",
|
||
" });\n",
|
||
" };\n",
|
||
" if (document.readyState != \"loading\") fn();\n",
|
||
" else document.addEventListener(\"DOMContentLoaded\", fn);\n",
|
||
" })();\n",
|
||
" </script>\n",
|
||
" </body>\n",
|
||
"</html>\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 111
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-29T16:56:06.571404Z",
|
||
"start_time": "2024-12-29T16:56:06.569280Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"graph_engine = await get_graph_engine()\n",
|
||
"print(graph_url)"
|
||
],
|
||
"id": "8f69caa0e353a889",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"https://hub.graphistry.com/graph/graph.html?dataset=cc21b1d2d6074323aa37af53e693b1a4&type=arrow&viztoken=db05565e-79e9-4fe3-99b2-b7a2e6d48eff&usertag=5f822e63-pygraphistry-0.33.9&splashAfter=1735491366&info=true\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 13
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "59e6c3c3",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### We can also do a search on the data to explore the knowledge."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "e5e7dfc8",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T13:44:16.575843Z",
|
||
"start_time": "2024-12-24T13:44:16.047897Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"async def search(\n",
|
||
" vector_engine,\n",
|
||
" collection_name: str,\n",
|
||
" query_text: str = None,\n",
|
||
"):\n",
|
||
" query_vector = (await vector_engine.embedding_engine.embed_text([query_text]))[0]\n",
|
||
"\n",
|
||
" connection = await vector_engine.get_connection()\n",
|
||
" collection = await connection.open_table(collection_name)\n",
|
||
"\n",
|
||
" results = await collection.vector_search(query_vector).limit(10).to_pandas()\n",
|
||
"\n",
|
||
" result_values = list(results.to_dict(\"index\").values())\n",
|
||
"\n",
|
||
" return [dict(\n",
|
||
" id = str(result[\"id\"]),\n",
|
||
" payload = result[\"payload\"],\n",
|
||
" score = result[\"_distance\"],\n",
|
||
" ) for result in result_values]\n",
|
||
"\n",
|
||
"\n",
|
||
"from cognee.infrastructure.databases.vector import get_vector_engine\n",
|
||
"\n",
|
||
"vector_engine = get_vector_engine()\n",
|
||
"results = await search(vector_engine, \"entity_name\", \"sarah.nguyen@example.com\")\n",
|
||
"for result in results:\n",
|
||
" print(result)"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{'id': '4d8dda57-2681-5264-a2bd-e2ddfe66a785', 'payload': {'id': '4d8dda57-2681-5264-a2bd-e2ddfe66a785', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'sarah nguyen'}, 'score': 0.5708460211753845}\n",
|
||
"{'id': '198e2ab8-75e9-5931-97ab-da9a5a8e188c', 'payload': {'id': '198e2ab8-75e9-5931-97ab-da9a5a8e188c', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'san francisco, ca'}, 'score': 1.349550724029541}\n",
|
||
"{'id': '435dbd37-ab20-503c-9e99-ab8b8a3484e5', 'payload': {'id': '435dbd37-ab20-503c-9e99-ab8b8a3484e5', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'senior data scientist'}, 'score': 1.3934645652770996}\n",
|
||
"{'id': '36a5e3c8-c5f5-5ab5-8d59-ea69d8b36932', 'payload': {'id': '36a5e3c8-c5f5-5ab5-8d59-ea69d8b36932', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'jessica miller'}, 'score': 1.4042469263076782}\n",
|
||
"{'id': '73ae630f-7b09-5dce-8c18-45d0a57b30f9', 'payload': {'id': '73ae630f-7b09-5dce-8c18-45d0a57b30f9', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'michael rodriguez'}, 'score': 1.4521806240081787}\n",
|
||
"{'id': '29e771c8-4c3f-52de-9511-6b705878e130', 'payload': {'id': '29e771c8-4c3f-52de-9511-6b705878e130', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'dr. emily carter'}, 'score': 1.471205472946167}\n",
|
||
"{'id': 'ce8b394a-b30e-52fc-b80a-6352edc60e5b', 'payload': {'id': 'ce8b394a-b30e-52fc-b80a-6352edc60e5b', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'stanford university'}, 'score': 1.4871069192886353}\n",
|
||
"{'id': '9780afb1-dccc-53eb-9a30-c0d4ce033711', 'payload': {'id': '9780afb1-dccc-53eb-9a30-c0d4ce033711', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'innovateai labs'}, 'score': 1.498255968093872}\n",
|
||
"{'id': '301b3cf8-5a5c-585e-80bd-f79901e4368c', 'payload': {'id': '301b3cf8-5a5c-585e-80bd-f79901e4368c', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'university of texas at austin'}, 'score': 1.5053001642227173}\n",
|
||
"{'id': '2c02c93c-9cd1-56b8-9cc0-55ff0b290e57', 'payload': {'id': '2c02c93c-9cd1-56b8-9cc0-55ff0b290e57', 'updated_at': datetime.datetime(2024, 12, 24, 11, 54, 13, 481297), 'topological_rank': 0, 'text': 'university of california, berkeley'}, 'score': 1.5213639736175537}\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 23
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "81fa2b00",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### We normalize search output scores so the lower the score of the search result is the higher the chance that it's what you're looking for. In the example above we have searched for node entities in the knowledge graph related to \"sarah.nguyen@example.com\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1b94ff96",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### In the example bellow we'll use cognee search to summarize information regarding the node most related to \"sarah.nguyen@example.com\" in the knowledge graph"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "21a3e9a6",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from cognee.api.v1.search import SearchType\n",
|
||
"\n",
|
||
"node = (await vector_engine.search(\"entity_name\", \"sarah.nguyen@example.com\"))[0]\n",
|
||
"node_name = node.payload[\"text\"]\n",
|
||
"\n",
|
||
"search_results = await cognee.search(SearchType.SUMMARIES, query_text = node_name)\n",
|
||
"print(\"\\n\\Extracted summaries are:\\n\")\n",
|
||
"for result in search_results:\n",
|
||
" print(f\"{result}\\n\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fd6e5fe2",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### In this example we'll use cognee search to find chunks in which the node most related to \"sarah.nguyen@example.com\" is a part of"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "c7a8abff",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"search_results = await cognee.search(SearchType.CHUNKS, query_text = node_name)\n",
|
||
"print(\"\\n\\nExtracted chunks are:\\n\")\n",
|
||
"for result in search_results:\n",
|
||
" print(f\"{result}\\n\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "47f0112f",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### In this example we'll use cognee search to give us insights from the knowledge graph related to the node most related to \"sarah.nguyen@example.com\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "706a3954",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"search_results = await cognee.search(SearchType.INSIGHTS, query_text = node_name)\n",
|
||
"print(\"\\n\\nExtracted sentences are:\\n\")\n",
|
||
"for result in search_results:\n",
|
||
" print(f\"{result}\\n\")"
|
||
]
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T13:46:09.644509Z",
|
||
"start_time": "2024-12-24T13:46:04.538592Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"!pip install wget\n",
|
||
"!pip install deepeval\n",
|
||
"!pip install ujson"
|
||
],
|
||
"id": "afae18ac6a794925",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Requirement already satisfied: wget in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (3.2)\r\n",
|
||
"\r\n",
|
||
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\r\n",
|
||
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n",
|
||
"Requirement already satisfied: deepeval in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (2.0.9)\r\n",
|
||
"Requirement already satisfied: requests in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (2.32.3)\r\n",
|
||
"Requirement already satisfied: tqdm in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (4.67.1)\r\n",
|
||
"Requirement already satisfied: pytest in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (7.4.4)\r\n",
|
||
"Requirement already satisfied: tabulate in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (0.9.0)\r\n",
|
||
"Requirement already satisfied: typer in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (0.15.1)\r\n",
|
||
"Requirement already satisfied: rich in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (13.9.4)\r\n",
|
||
"Requirement already satisfied: protobuf in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (4.25.5)\r\n",
|
||
"Requirement already satisfied: pydantic in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (2.8.2)\r\n",
|
||
"Requirement already satisfied: sentry-sdk in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (2.19.2)\r\n",
|
||
"Requirement already satisfied: pytest-repeat in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (0.9.3)\r\n",
|
||
"Requirement already satisfied: pytest-xdist in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (3.6.1)\r\n",
|
||
"Requirement already satisfied: portalocker in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (3.0.0)\r\n",
|
||
"Requirement already satisfied: langchain in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (0.3.13)\r\n",
|
||
"Requirement already satisfied: langchain-core in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (0.3.28)\r\n",
|
||
"Requirement already satisfied: langchain_openai in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (0.2.14)\r\n",
|
||
"Requirement already satisfied: langchain-community in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (0.3.13)\r\n",
|
||
"Requirement already satisfied: docx2txt~=0.8 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (0.8)\r\n",
|
||
"Requirement already satisfied: importlib-metadata>=6.0.2 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (8.4.0)\r\n",
|
||
"Requirement already satisfied: tenacity<=9.0.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (8.5.0)\r\n",
|
||
"Requirement already satisfied: opentelemetry-api<2.0.0,>=1.24.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (1.27.0)\r\n",
|
||
"Requirement already satisfied: opentelemetry-sdk<2.0.0,>=1.24.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (1.27.0)\r\n",
|
||
"Requirement already satisfied: opentelemetry-exporter-otlp-proto-grpc<2.0.0,>=1.24.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (1.27.0)\r\n",
|
||
"Requirement already satisfied: grpcio==1.60.1 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (1.60.1)\r\n",
|
||
"Requirement already satisfied: nest-asyncio in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deepeval) (1.6.0)\r\n",
|
||
"Requirement already satisfied: zipp>=0.5 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from importlib-metadata>=6.0.2->deepeval) (3.21.0)\r\n",
|
||
"Requirement already satisfied: deprecated>=1.2.6 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from opentelemetry-api<2.0.0,>=1.24.0->deepeval) (1.2.15)\r\n",
|
||
"Requirement already satisfied: googleapis-common-protos~=1.52 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from opentelemetry-exporter-otlp-proto-grpc<2.0.0,>=1.24.0->deepeval) (1.66.0)\r\n",
|
||
"Requirement already satisfied: opentelemetry-exporter-otlp-proto-common==1.27.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from opentelemetry-exporter-otlp-proto-grpc<2.0.0,>=1.24.0->deepeval) (1.27.0)\r\n",
|
||
"Requirement already satisfied: opentelemetry-proto==1.27.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from opentelemetry-exporter-otlp-proto-grpc<2.0.0,>=1.24.0->deepeval) (1.27.0)\r\n",
|
||
"Requirement already satisfied: opentelemetry-semantic-conventions==0.48b0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from opentelemetry-sdk<2.0.0,>=1.24.0->deepeval) (0.48b0)\r\n",
|
||
"Requirement already satisfied: typing-extensions>=3.7.4 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from opentelemetry-sdk<2.0.0,>=1.24.0->deepeval) (4.12.2)\r\n",
|
||
"Requirement already satisfied: PyYAML>=5.3 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain->deepeval) (6.0.2)\r\n",
|
||
"Requirement already satisfied: SQLAlchemy<3,>=1.4 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain->deepeval) (2.0.35)\r\n",
|
||
"Requirement already satisfied: aiohttp<4.0.0,>=3.8.3 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain->deepeval) (3.10.10)\r\n",
|
||
"Requirement already satisfied: langchain-text-splitters<0.4.0,>=0.3.3 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain->deepeval) (0.3.4)\r\n",
|
||
"Requirement already satisfied: langsmith<0.3,>=0.1.17 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain->deepeval) (0.2.4)\r\n",
|
||
"Requirement already satisfied: numpy<2,>=1.22.4 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain->deepeval) (1.26.4)\r\n",
|
||
"Requirement already satisfied: jsonpatch<2.0,>=1.33 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain-core->deepeval) (1.33)\r\n",
|
||
"Requirement already satisfied: packaging<25,>=23.2 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain-core->deepeval) (24.2)\r\n",
|
||
"Requirement already satisfied: annotated-types>=0.4.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from pydantic->deepeval) (0.7.0)\r\n",
|
||
"Requirement already satisfied: pydantic-core==2.20.1 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from pydantic->deepeval) (2.20.1)\r\n",
|
||
"Requirement already satisfied: charset-normalizer<4,>=2 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from requests->deepeval) (3.4.0)\r\n",
|
||
"Requirement already satisfied: idna<4,>=2.5 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from requests->deepeval) (3.10)\r\n",
|
||
"Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from requests->deepeval) (2.2.3)\r\n",
|
||
"Requirement already satisfied: certifi>=2017.4.17 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from requests->deepeval) (2024.12.14)\r\n",
|
||
"Requirement already satisfied: dataclasses-json<0.7,>=0.5.7 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain-community->deepeval) (0.6.7)\r\n",
|
||
"Requirement already satisfied: httpx-sse<0.5.0,>=0.4.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain-community->deepeval) (0.4.0)\r\n",
|
||
"Requirement already satisfied: pydantic-settings<3.0.0,>=2.4.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain-community->deepeval) (2.7.0)\r\n",
|
||
"Requirement already satisfied: openai<2.0.0,>=1.58.1 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain_openai->deepeval) (1.58.1)\r\n",
|
||
"Requirement already satisfied: tiktoken<1,>=0.7 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langchain_openai->deepeval) (0.7.0)\r\n",
|
||
"Requirement already satisfied: iniconfig in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from pytest->deepeval) (2.0.0)\r\n",
|
||
"Requirement already satisfied: pluggy<2.0,>=0.12 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from pytest->deepeval) (1.5.0)\r\n",
|
||
"Requirement already satisfied: execnet>=2.1 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from pytest-xdist->deepeval) (2.1.1)\r\n",
|
||
"Requirement already satisfied: markdown-it-py>=2.2.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from rich->deepeval) (3.0.0)\r\n",
|
||
"Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from rich->deepeval) (2.18.0)\r\n",
|
||
"Requirement already satisfied: click>=8.0.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from typer->deepeval) (8.1.7)\r\n",
|
||
"Requirement already satisfied: shellingham>=1.3.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from typer->deepeval) (1.5.4)\r\n",
|
||
"Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain->deepeval) (2.4.4)\r\n",
|
||
"Requirement already satisfied: aiosignal>=1.1.2 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain->deepeval) (1.3.2)\r\n",
|
||
"Requirement already satisfied: attrs>=17.3.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain->deepeval) (24.3.0)\r\n",
|
||
"Requirement already satisfied: frozenlist>=1.1.1 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain->deepeval) (1.5.0)\r\n",
|
||
"Requirement already satisfied: multidict<7.0,>=4.5 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain->deepeval) (6.1.0)\r\n",
|
||
"Requirement already satisfied: yarl<2.0,>=1.12.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain->deepeval) (1.18.3)\r\n",
|
||
"Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from dataclasses-json<0.7,>=0.5.7->langchain-community->deepeval) (3.23.2)\r\n",
|
||
"Requirement already satisfied: typing-inspect<1,>=0.4.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from dataclasses-json<0.7,>=0.5.7->langchain-community->deepeval) (0.9.0)\r\n",
|
||
"Requirement already satisfied: wrapt<2,>=1.10 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from deprecated>=1.2.6->opentelemetry-api<2.0.0,>=1.24.0->deepeval) (1.17.0)\r\n",
|
||
"Requirement already satisfied: jsonpointer>=1.9 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from jsonpatch<2.0,>=1.33->langchain-core->deepeval) (3.0.0)\r\n",
|
||
"Requirement already satisfied: httpx<1,>=0.23.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langsmith<0.3,>=0.1.17->langchain->deepeval) (0.27.0)\r\n",
|
||
"Requirement already satisfied: orjson<4.0.0,>=3.9.14 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langsmith<0.3,>=0.1.17->langchain->deepeval) (3.10.12)\r\n",
|
||
"Requirement already satisfied: requests-toolbelt<2.0.0,>=1.0.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from langsmith<0.3,>=0.1.17->langchain->deepeval) (1.0.0)\r\n",
|
||
"Requirement already satisfied: mdurl~=0.1 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich->deepeval) (0.1.2)\r\n",
|
||
"Requirement already satisfied: anyio<5,>=3.5.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from openai<2.0.0,>=1.58.1->langchain_openai->deepeval) (4.7.0)\r\n",
|
||
"Requirement already satisfied: distro<2,>=1.7.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from openai<2.0.0,>=1.58.1->langchain_openai->deepeval) (1.9.0)\r\n",
|
||
"Requirement already satisfied: jiter<1,>=0.4.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from openai<2.0.0,>=1.58.1->langchain_openai->deepeval) (0.5.0)\r\n",
|
||
"Requirement already satisfied: sniffio in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from openai<2.0.0,>=1.58.1->langchain_openai->deepeval) (1.3.1)\r\n",
|
||
"Requirement already satisfied: python-dotenv>=0.21.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from pydantic-settings<3.0.0,>=2.4.0->langchain-community->deepeval) (1.0.1)\r\n",
|
||
"Requirement already satisfied: regex>=2022.1.18 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from tiktoken<1,>=0.7->langchain_openai->deepeval) (2024.11.6)\r\n",
|
||
"Requirement already satisfied: httpcore==1.* in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from httpx<1,>=0.23.0->langsmith<0.3,>=0.1.17->langchain->deepeval) (1.0.7)\r\n",
|
||
"Requirement already satisfied: h11<0.15,>=0.13 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->langsmith<0.3,>=0.1.17->langchain->deepeval) (0.14.0)\r\n",
|
||
"Requirement already satisfied: mypy-extensions>=0.3.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from typing-inspect<1,>=0.4.0->dataclasses-json<0.7,>=0.5.7->langchain-community->deepeval) (1.0.0)\r\n",
|
||
"Requirement already satisfied: propcache>=0.2.0 in /Users/vasilije/cognee/.venv/lib/python3.11/site-packages (from yarl<2.0,>=1.12.0->aiohttp<4.0.0,>=3.8.3->langchain->deepeval) (0.2.1)\r\n",
|
||
"\r\n",
|
||
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\r\n",
|
||
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n",
|
||
"Collecting ujson\r\n",
|
||
" Obtaining dependency information for ujson from https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl.metadata\r\n",
|
||
" Downloading ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl.metadata (9.3 kB)\r\n",
|
||
"Downloading ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl (51 kB)\r\n",
|
||
"\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m51.8/51.8 kB\u001B[0m \u001B[31m1.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\r\n",
|
||
"\u001B[?25hInstalling collected packages: ujson\r\n",
|
||
"Successfully installed ujson-5.10.0\r\n",
|
||
"\r\n",
|
||
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.3.1\u001B[0m\r\n",
|
||
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 29
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T15:29:11.123483Z",
|
||
"start_time": "2024-12-24T15:29:11.120888Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"from evals.eval_on_hotpot import eval_on_hotpotQA\n",
|
||
"from evals.eval_on_hotpot import answer_with_cognee\n",
|
||
"from evals.eval_on_hotpot import answer_without_cognee\n",
|
||
"from evals.eval_on_hotpot import eval_answers\n",
|
||
"from cognee.base_config import get_base_config\n",
|
||
"from pathlib import Path\n",
|
||
"from tqdm import tqdm\n",
|
||
"import wget\n",
|
||
"import json\n",
|
||
"import statistics"
|
||
],
|
||
"id": "5f36b67668fdb646",
|
||
"outputs": [],
|
||
"execution_count": 2
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T15:57:30.764970Z",
|
||
"start_time": "2024-12-24T15:57:07.861187Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"answer_provider = answer_without_cognee # For native LLM answers use answer_without_cognee\n",
|
||
"num_samples = 10 # With cognee, it takes ~1m10s per sample\n",
|
||
"\n",
|
||
"base_config = get_base_config()\n",
|
||
"data_root_dir = base_config.data_root_directory\n",
|
||
"\n",
|
||
"if not Path(data_root_dir).exists():\n",
|
||
" Path(data_root_dir).mkdir()\n",
|
||
"\n",
|
||
"filepath = data_root_dir / Path(\"hotpot_dev_fullwiki_v1.json\")\n",
|
||
"if not filepath.exists():\n",
|
||
" url = 'http://curtis.ml.cmu.edu/datasets/hotpot/hotpot_dev_fullwiki_v1.json'\n",
|
||
" wget.download(url, out=data_root_dir)\n",
|
||
"\n",
|
||
"with open(filepath, \"r\") as file:\n",
|
||
" dataset = json.load(file)\n",
|
||
"instances = dataset if not num_samples else dataset[:num_samples]\n",
|
||
"answers = []\n",
|
||
"for instance in tqdm(instances, desc=\"Getting answers\"):\n",
|
||
" answer = await answer_provider(instance)\n",
|
||
" answers.append(answer)"
|
||
],
|
||
"id": "d5af4b516c6621a3",
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Getting answers: 100%|██████████| 10/10 [00:13<00:00, 1.31s/it]\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 9
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T15:57:30.787382Z",
|
||
"start_time": "2024-12-24T15:57:30.785259Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"from evals.deepeval_metrics import f1_score_metric\n",
|
||
"from evals.deepeval_metrics import em_score_metric"
|
||
],
|
||
"id": "2bf69048a272158c",
|
||
"outputs": [],
|
||
"execution_count": 10
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T15:57:30.828509Z",
|
||
"start_time": "2024-12-24T15:57:30.795197Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"f1_metric = f1_score_metric()\n",
|
||
"eval_results = await eval_answers(instances, answers, f1_metric)\n",
|
||
"avg_f1_score = statistics.mean([result.metrics_data[0].score for result in eval_results.test_results])\n",
|
||
"print(\"F1 score: \", avg_f1_score)"
|
||
],
|
||
"id": "72ba5f89cccbee6b",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"✨ You're running DeepEval's latest \u001B[38;2;106;0;255mOfficial hotpot F1 score Metric\u001B[0m! \u001B[1;38;2;55;65;81m(\u001B[0m\u001B[38;2;55;65;81musing \u001B[0m\u001B[3;38;2;55;65;81mNone\u001B[0m\u001B[38;2;55;65;81m, \u001B[0m\u001B[38;2;55;65;81mstrict\u001B[0m\u001B[38;2;55;65;81m=\u001B[0m\u001B[3;38;2;55;65;81mFalse\u001B[0m\u001B[38;2;55;65;81m, \u001B[0m\u001B[38;2;55;65;81masync_mode\u001B[0m\u001B[38;2;55;65;81m=\u001B[0m\u001B[3;38;2;55;65;81mTrue\u001B[0m\u001B[1;38;2;55;65;81m)\u001B[0m\u001B[38;2;55;65;81m...\u001B[0m\n"
|
||
],
|
||
"text/html": [
|
||
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">✨ You're running DeepEval's latest <span style=\"color: #6a00ff; text-decoration-color: #6a00ff\">Official hotpot F1 score Metric</span>! <span style=\"color: #374151; text-decoration-color: #374151; font-weight: bold\">(</span><span style=\"color: #374151; text-decoration-color: #374151\">using </span><span style=\"color: #374151; text-decoration-color: #374151; font-style: italic\">None</span><span style=\"color: #374151; text-decoration-color: #374151\">, </span><span style=\"color: #374151; text-decoration-color: #374151\">strict</span><span style=\"color: #374151; text-decoration-color: #374151\">=</span><span style=\"color: #374151; text-decoration-color: #374151; font-style: italic\">False</span><span style=\"color: #374151; text-decoration-color: #374151\">, </span><span style=\"color: #374151; text-decoration-color: #374151\">async_mode</span><span style=\"color: #374151; text-decoration-color: #374151\">=</span><span style=\"color: #374151; text-decoration-color: #374151; font-style: italic\">True</span><span style=\"color: #374151; text-decoration-color: #374151; font-weight: bold\">)</span><span style=\"color: #374151; text-decoration-color: #374151\">...</span>\n",
|
||
"</pre>\n"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Event loop is already running. Applying nest_asyncio patch to allow async execution...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Evaluating 10 test case(s) in parallel: |██████████|100% (10/10) [Time Taken: 00:00, 407.84test case/s]"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.0, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: Were Scott Derrickson and Ed Wood of the same nationality?\n",
|
||
" - actual output: Scott Derrickson is described as an American filmmaker in the context. Ed Wood is referenced as a cult filmmaker in the American biographical film \"Ed Wood.\" Therefore, both Scott Derrickson and Ed Wood are of the same nationality: American.\n",
|
||
" - expected output: yes\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.04255319148936171, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: What government position was held by the woman who portrayed Corliss Archer in the film Kiss and Tell?\n",
|
||
" - actual output: The woman who portrayed Corliss Archer in the film \"Kiss and Tell\" was Shirley Temple. After her acting career, she held the position of U.S. Ambassador to Czechoslovakia from 1989 to 1992, and she was also a member of the U.S. delegation to the United Nations from 1969 to 1970.\n",
|
||
" - expected output: Chief of Protocol\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.05882352941176471, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: What science fantasy young adult series, told in first person, has a set of companion books narrating the stories of enslaved worlds and alien species?\n",
|
||
" - actual output: The book series that fits the description is \"Animorphs\". It is a science fantasy young adult series told in the first person with multiple narrators, and it deals with themes relevant to enslaved worlds and alien species.\n",
|
||
" - expected output: Animorphs\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.0, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: Are the Laleli Mosque and Esma Sultan Mansion located in the same neighborhood?\n",
|
||
" - actual output: The Laleli Mosque is located in Laleli, Fatih, Istanbul. The Esma Sultan Mansion is located in the Ortaköy neighborhood of Istanbul. Therefore, they are not located in the same neighborhood.\n",
|
||
" - expected output: no\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.22222222222222218, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: The director of the romantic comedy \"Big Stone Gap\" is based in what New York city?\n",
|
||
" - actual output: The director of the romantic comedy \"Big Stone Gap\" is Adriana Trigiani, and there is no specific New York city mentioned in the provided context.\n",
|
||
" - expected output: Greenwich Village, New York City\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.11764705882352941, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: 2014 S/S is the debut album of a South Korean boy group that was formed by who?\n",
|
||
" - actual output: The South Korean boy group that debuted with the album \"2014 S/S\" was formed by FNC Entertainment.\n",
|
||
" - expected output: YG Entertainment\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.18181818181818182, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: Who was known by his stage name Aladin and helped organizations improve their performance as a consultant?\n",
|
||
" - actual output: Eenasul Fateh, known by his stage name Aladin, is a Bangladeshi-British cultural practitioner, magician, live artist, and former international management consultant.\n",
|
||
" - expected output: Eenasul Fateh\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.0, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: The arena where the Lewiston Maineiacs played their home games can seat how many people?\n",
|
||
" - actual output: The Lewiston Maineiacs played their home games at the Androscoggin Bank Colisée. The capacity of the arena is not directly stated in the context, but it is implied from the information provided.\n",
|
||
" - expected output: 3,677 seated\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.12903225806451613, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: Who is older, Annie Morton or Terry Richardson?\n",
|
||
" - actual output: Annie Morton was born on October 8, 1970, while Terry Richardson's birthdate is not provided in the context. Therefore, based on the available information, Annie Morton is older than Terry Richardson.\n",
|
||
" - expected output: Terry Richardson\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Metrics Summary\n",
|
||
"\n",
|
||
" - ❌ Official hotpot F1 score (score: 0.0, threshold: 0.5, strict: False, evaluation model: None, reason: None, error: None)\n",
|
||
"\n",
|
||
"For test case:\n",
|
||
"\n",
|
||
" - input: Are Local H and For Against both from the United States?\n",
|
||
" - actual output: Yes, Local H is from the United States, specifically mentioned as a band from the Chicago suburbs, and For Against is also a band mentioned as being from the United States, although specific details about For Against's origin are not provided in the context.\n",
|
||
" - expected output: yes\n",
|
||
" - context: None\n",
|
||
" - retrieval context: None\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n",
|
||
"Overall Metric Pass Rates\n",
|
||
"\n",
|
||
"Official hotpot F1 score: 0.00% pass rate\n",
|
||
"\n",
|
||
"======================================================================\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"\u001B[38;2;5;245;141m✓\u001B[0m Tests finished 🎉! Run \u001B[32m'deepeval login'\u001B[0m to save and analyze evaluation results on Confident AI. \n",
|
||
"‼️ Friendly reminder 😇: You can also run evaluations with ALL of deepeval's metrics directly on Confident AI \n",
|
||
"instead.\n"
|
||
],
|
||
"text/html": [
|
||
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #05f58d; text-decoration-color: #05f58d\">✓</span> Tests finished 🎉! Run <span style=\"color: #008000; text-decoration-color: #008000\">'deepeval login'</span> to save and analyze evaluation results on Confident AI. \n",
|
||
"‼️ Friendly reminder 😇: You can also run evaluations with ALL of deepeval's metrics directly on Confident AI \n",
|
||
"instead.\n",
|
||
"</pre>\n"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"F1 score: 0.0752096441829576\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 11
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-12-24T15:26:14.946766Z",
|
||
"start_time": "2024-12-24T15:26:14.944741Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"for n in range(1,4):\n",
|
||
" print(n)"
|
||
],
|
||
"id": "783985c35d1126de",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"1\n",
|
||
"2\n",
|
||
"3\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 38
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "288ab570",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Give us a star if you like it!\n",
|
||
"https://github.com/topoteretes/cognee"
|
||
]
|
||
},
|
||
{
|
||
"metadata": {},
|
||
"cell_type": "code",
|
||
"outputs": [],
|
||
"execution_count": null,
|
||
"source": " 0.0667",
|
||
"id": "d042efe5d38144fa"
|
||
},
|
||
{
|
||
"metadata": {},
|
||
"cell_type": "code",
|
||
"outputs": [],
|
||
"execution_count": null,
|
||
"source": "0.085",
|
||
"id": "9436af97520e0ae"
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": ".venv",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.11.8"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|