From c3366ab5d62e9248dd7e7e902407068745e5ae23 Mon Sep 17 00:00:00 2001 From: Martin O'Hanlon Date: Mon, 1 Dec 2025 15:56:06 +0000 Subject: [PATCH 1/3] updated workshop-genai --- .../2-rag/lessons/2-vector-search/lesson.adoc | 2 +- .../lesson.adoc | 32 +- .../images/entities-graph.png | Bin 70361 -> 61655 bytes .../lessons/3-chunk-size/lesson.adoc | 19 +- .../lessons/4-define-a-schema/lesson.adoc | 74 +- .../lessons/5-structured-data/lesson.adoc | 22 +- .../1-vector-cypher-retriever/lesson.adoc | 46 +- .../2-text-to-cypher-retriever/lesson.adoc | 2 + .../lessons/1-loading-data/lesson.adoc | 6 +- .../1-construction-process/lesson.adoc | 36 +- asciidoc/courses/workshop-genai/banner.png | Bin 92611 -> 0 bytes asciidoc/courses/workshop-genai/course.adoc | 44 +- asciidoc/courses/workshop-genai/llms.txt | 111 -- .../images/GraphRAG-Image-Fixed-2.svg | 1 - .../1-what-is-genai/images/confused-llm.svg | 1 + .../lessons/1-what-is-genai/images/cypher.svg | 1 - .../1-what-is-genai/images/genai-diagram.svg | 1 - .../1-what-is-genai/images/llm-blackbox.svg | 1 + .../images/llm-missing-data.svg | 1 + .../images/llm-prompt-document-results.svg | 1 + .../images/llm-prompt-document.svg | 1 + .../images/llm-prompt-interaction.svg | 1 + .../images/manager-company-data-model.svg | 1 - .../images/query-knowledge-graph.png | Bin 117415 -> 0 bytes .../lessons/1-what-is-genai/lesson.adoc | 151 +- .../lessons/1-what-is-genai/reset.cypher | 170 -- .../lessons/2-building-the-graph/images/8.png | Bin 26064 -> 0 bytes .../images/apple-edgar-pdf.png | Bin 109681 -> 0 bytes .../images/unstructured-structured.svg | 1 - .../lessons/2-building-the-graph/lesson.adoc | 438 ----- .../lessons/2-building-the-graph/reset.cypher | 170 -- .../llm-news-agency-knowledge-graph.svg | 1 + .../2-graphrag/images/llm-news-agency.svg | 1 + .../2-graphrag/images/llm-rag-process.svg | 1 + .../images/llm-rag-vector+graph-process.svg | 1 + .../images/llm-text-to-cypher-process.svg | 1 + .../lessons/2-graphrag/lesson.adoc | 215 +++ .../images/generic-knowledge-graph.svg | 1 + .../images/neo4j-google-knowledge-graph.svg | 1417 +++++++++++++++++ .../images/org-principles-with-data.svg | 1 + .../images/org-principles.svg | 1 + .../lessons/3-knowledge-graph/lesson.adoc | 98 ++ .../lessons/3-vectors/apple-embedding.adoc | 10 - .../3-vectors/images/Apple-tech-or-fruit.png | Bin 28394 -> 0 bytes .../images/document-chunk-data-model.svg | 1 - .../3-vectors/images/vector-airplane.png | Bin 87496 -> 0 bytes .../lessons/3-vectors/lesson.adoc | 183 --- .../lessons/4-neo4j-graphrag/lesson.adoc | 92 ++ .../modules/1-generative-ai/llms.txt | 129 -- .../modules/1-generative-ai/module.adoc | 17 +- .../images/neo4j-wiki.png | Bin 0 -> 110167 bytes .../lesson.adoc | 218 +++ .../images/neo4j_graphdatabase.json | 97 ++ .../images/neo4j_graphdatabase.svg | 1 + .../lessons/2-extract-schema/lesson.adoc | 102 ++ .../images/entities-graph.png | Bin 0 -> 61655 bytes .../images/kg-builder-default-model.json | 130 ++ .../images/kg-builder-default-model.svg | 444 ++++++ .../images/kg_builder_pipeline.png | Bin 0 -> 203548 bytes .../lessons/3-create-a-graph/lesson.adoc | 148 ++ .../lessons/4-chunk-size/lesson.adoc | 108 ++ .../4-chunk-size/questions/1-chunk-size.adoc | 19 + .../lessons/5-define-a-schema/lesson.adoc | 191 +++ .../images/kg-builder-structured-model.json | 154 ++ .../images/kg-builder-structured-model.svg | 622 ++++++++ .../lessons/6-structured-data/lesson.adoc | 151 ++ .../lessons/7-create-a-kg/lesson.adoc | 28 + .../module.adoc | 17 + .../lessons/1-retrievers/lesson.adoc | 216 --- .../2-retrievers/lessons/2-setup/lesson.adoc | 100 -- .../2-retrievers/lessons/2-setup/reset.cypher | 170 -- .../lessons/3-hands-on-retrievers/lesson.adoc | 144 -- .../modules/2-retrievers/llms.txt | 150 -- .../modules/2-retrievers/module.adoc | 13 - .../lessons/1-what-is-an-agent/lesson.adoc | 114 -- .../lessons/1-what-is-an-agent/reset.cypher | 170 -- .../lessons/2-langchain-agent/lesson.adoc | 97 -- .../lessons/2-langchain-agent/reset.cypher | 170 -- .../lessons/3-vector-retriever/lesson.adoc | 79 - .../4-text2cypher-retriever/lesson.adoc | 85 - .../lessons/5-aura-agents/lesson.adoc | 243 --- .../3-agents/lessons/6-questions/lesson.adoc | 11 - .../lessons/7-congratulations/lesson.adoc | 54 - .../workshop-genai/modules/3-agents/llms.txt | 135 -- .../lessons/1-vectors/apple-embedding.adoc | 1 + .../lessons/1-vectors}/images/3d-vector.svg | 0 .../images/llm-rag-create-vector.svg | 1 + .../images/llm-rag-vector-process.svg | 1 + .../1-vectors}/images/vector-distance.svg | 0 .../3-retrieval/lessons/1-vectors/lesson.adoc | 157 ++ .../2-vector-cypher-retriever/lesson.adoc | 194 +++ .../3-text-to-cypher-retriever/lesson.adoc | 87 + .../modules/3-retrieval/module.adoc | 17 + .../images/agent-process.svg | 0 .../lessons/1-what-is-an-agent/lesson.adoc | 58 + .../lessons/2-langchain-agent/lesson.adoc | 111 ++ .../lessons/3-agent-search-lesson/lesson.adoc | 126 ++ .../lessons/4-agent-query-db/lesson.adoc | 127 ++ .../lessons/5-create-an-agent/lesson.adoc | 29 + .../{3-agents => 4-agents}/module.adoc | 2 +- asciidoc/courses/workshop-genai/summary.adoc | 3 +- 101 files changed, 5491 insertions(+), 3308 deletions(-) delete mode 100644 asciidoc/courses/workshop-genai/banner.png delete mode 100644 asciidoc/courses/workshop-genai/llms.txt delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/GraphRAG-Image-Fixed-2.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/confused-llm.svg delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/cypher.svg delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/genai-diagram.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-blackbox.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-missing-data.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-document-results.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-document.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-interaction.svg delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/manager-company-data-model.svg delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/query-knowledge-graph.png delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/reset.cypher delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/images/8.png delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/images/apple-edgar-pdf.png delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/images/unstructured-structured.svg delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/reset.cypher create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-news-agency-knowledge-graph.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-news-agency.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-rag-process.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-rag-vector+graph-process.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-text-to-cypher-process.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/generic-knowledge-graph.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/neo4j-google-knowledge-graph.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/org-principles-with-data.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/org-principles.svg create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/apple-embedding.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/Apple-tech-or-fruit.png delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/document-chunk-data-model.svg delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/vector-airplane.png delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/1-generative-ai/llms.txt create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/1-knowledge-graph-construction/images/neo4j-wiki.png create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/1-knowledge-graph-construction/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/images/neo4j_graphdatabase.json create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/images/neo4j_graphdatabase.svg create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/entities-graph.png create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg-builder-default-model.json create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg-builder-default-model.svg create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg_builder_pipeline.png create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/4-chunk-size/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/4-chunk-size/questions/1-chunk-size.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/5-define-a-schema/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/images/kg-builder-structured-model.json create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/images/kg-builder-structured-model.svg create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/7-create-a-kg/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/module.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/1-retrievers/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/2-setup/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/2-setup/reset.cypher delete mode 100644 asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/3-hands-on-retrievers/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/2-retrievers/llms.txt delete mode 100644 asciidoc/courses/workshop-genai/modules/2-retrievers/module.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/reset.cypher delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/lessons/2-langchain-agent/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/lessons/2-langchain-agent/reset.cypher delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/lessons/3-vector-retriever/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/lessons/4-text2cypher-retriever/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/lessons/5-aura-agents/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/lessons/6-questions/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/lessons/7-congratulations/lesson.adoc delete mode 100644 asciidoc/courses/workshop-genai/modules/3-agents/llms.txt create mode 100644 asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/apple-embedding.adoc rename asciidoc/courses/workshop-genai/modules/{1-generative-ai/lessons/3-vectors => 3-retrieval/lessons/1-vectors}/images/3d-vector.svg (100%) create mode 100644 asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/llm-rag-create-vector.svg create mode 100644 asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/llm-rag-vector-process.svg rename asciidoc/courses/workshop-genai/modules/{1-generative-ai/lessons/3-vectors => 3-retrieval/lessons/1-vectors}/images/vector-distance.svg (100%) create mode 100644 asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/2-vector-cypher-retriever/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/3-text-to-cypher-retriever/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/3-retrieval/module.adoc rename asciidoc/courses/workshop-genai/modules/{3-agents => 4-agents}/lessons/1-what-is-an-agent/images/agent-process.svg (100%) create mode 100644 asciidoc/courses/workshop-genai/modules/4-agents/lessons/1-what-is-an-agent/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/4-agents/lessons/2-langchain-agent/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/4-agents/lessons/3-agent-search-lesson/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/4-agents/lessons/4-agent-query-db/lesson.adoc create mode 100644 asciidoc/courses/workshop-genai/modules/4-agents/lessons/5-create-an-agent/lesson.adoc rename asciidoc/courses/workshop-genai/modules/{3-agents => 4-agents}/module.adoc (97%) diff --git a/asciidoc/courses/genai-fundamentals/modules/2-rag/lessons/2-vector-search/lesson.adoc b/asciidoc/courses/genai-fundamentals/modules/2-rag/lessons/2-vector-search/lesson.adoc index 96cceedc4..1d7480c0b 100644 --- a/asciidoc/courses/genai-fundamentals/modules/2-rag/lessons/2-vector-search/lesson.adoc +++ b/asciidoc/courses/genai-fundamentals/modules/2-rag/lessons/2-vector-search/lesson.adoc @@ -154,6 +154,6 @@ include::questions/1-embeddings.adoc[leveloffset=+1] [.summary] == Lesson Summary -In this lesson, you learned about vectors and embeddings, and how they can be used in RAG to find relevent information. +In this lesson, you learned about vectors and embeddings, and how they can be used in RAG to find relevant information. In the next lesson, you will use a vector index in Neo4j to find relevant data. diff --git a/asciidoc/courses/genai-graphrag-python/modules/1-introduction/lessons/1-knowledge-graph-construction/lesson.adoc b/asciidoc/courses/genai-graphrag-python/modules/1-introduction/lessons/1-knowledge-graph-construction/lesson.adoc index a20252881..bf7ba9240 100644 --- a/asciidoc/courses/genai-graphrag-python/modules/1-introduction/lessons/1-knowledge-graph-construction/lesson.adoc +++ b/asciidoc/courses/genai-graphrag-python/modules/1-introduction/lessons/1-knowledge-graph-construction/lesson.adoc @@ -67,22 +67,44 @@ The _names_ would be the node and relationship identifiers. If you wanted to construct a knowledge graph based on the link:https://en.wikipedia.org/wiki/Neo4j[Neo4j Wikipedia page^], you would: -. **Gather** the text from the page. + -+ image::images/neo4j-wiki.png["A screenshot of the Neo4j wiki page"] + +. **Gather** the text from the page. ++ + Neo4j is a graph database management system (GDBMS) developed by + Neo4j Inc. + + The data elements Neo4j stores are nodes, edges connecting them + and attributes of nodes and edges. Described by its developers + as an ACID-compliant transactional database with native graph + storage and processing... + . Split the text into **chunks**. + - Neo4j is a graph database management system (GDBMS) developed + Neo4j is a graph database management system (GDBMS) developed by Neo4j Inc. + {sp} + - The data elements Neo4j stores are nodes, edges connecting them, - and attributes of nodes and edges... + The data elements Neo4j stores are nodes, edges connecting them + and attributes of nodes and edges. ++ +{sp} ++ + Described by its developers as an ACID-compliant transactional + database with native graph storage and processing... . Generate **embeddings** and **vectors** for each chunk. + [0.21972137987, 0.12345678901, 0.98765432109, ...] ++ +{sp} ++ + [0.34567890123, 0.23456789012, 0.87654321098, ...] ++ +{sp} ++ + [0.45678901234, 0.34567890123, 0.76543210987, ...] . **Extract** the entities and relationships using an **LLM**. + diff --git a/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/2-create-a-graph/images/entities-graph.png b/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/2-create-a-graph/images/entities-graph.png index 58c527cc5d750f9140a80649376b975bf3b6b848..c4ec1a2703718f30ea346441d21e05e1b573fe3b 100644 GIT binary patch literal 61655 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 literal 70361 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

6N+!6N2fsfdtga)9Ir7-rM-Rd*Pe6xUN68 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 diff --git a/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/3-chunk-size/lesson.adoc b/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/3-chunk-size/lesson.adoc index e231dd2ad..5da5d6498 100644 --- a/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/3-chunk-size/lesson.adoc +++ b/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/3-chunk-size/lesson.adoc @@ -3,7 +3,11 @@ :order: 3 :branch: main -The graph created by the `SimpleKGPipeline` is based on chunks of text extracted from the documents. By default, the chunk size is quite large, which may result in fewer, larger chunks. The larger the chunk size, the more context the LLM has when extracting entities and relationships, but it may also lead to less granular data. +The graph created by the `SimpleKGPipeline` is based on chunks of text extracted from the documents. + +By default, the chunk size is quite large, which may result in fewer, larger chunks. + +The larger the chunk size, the more context the LLM has when extracting entities and relationships, but it may also lead to less granular data. In this lesson, you will modify the `SimpleKGPipeline` to use a different chunk size. @@ -51,15 +55,19 @@ include::{repository-raw}/{branch}/genai-graphrag-python/solutions/kg_builder_sp Run the modified pipeline to recreate the knowledge graph with the new chunk size. +== Explore + +You can view the documents and the associated chunk using the following Cypher query: + [source, cypher] .View the documents and chunks ---- MATCH (d:Document)<-[:FROM_DOCUMENT]-(c:Chunk) -RETURN d.path, c.index, c.text +RETURN d.path, c.index, c.text, size(c.text) ORDER BY d.path, c.index ---- -You can experiment with different chunk sizes to see how it affects the entities extracted and the structure of the knowledge graph. +View the entities extracted from each chunk using the following Cypher query: [source, cypher] .View the entities extracted from each chunk @@ -68,6 +76,11 @@ MATCH p = (c:Chunk)-[*..3]-(e:__Entity__) RETURN p ---- +[TIP] +==== +You can experiment with different chunk sizes to see how it affects the entities extracted and the structure of the knowledge graph. +==== + [.quiz] == Check your understanding diff --git a/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/4-define-a-schema/lesson.adoc b/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/4-define-a-schema/lesson.adoc index 3f1fe4ef1..908ee3423 100644 --- a/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/4-define-a-schema/lesson.adoc +++ b/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/4-define-a-schema/lesson.adoc @@ -3,14 +3,18 @@ :order: 4 :branch: main -The knowledge graph you created is unconstrained, meaning that any entity or relationship can be created based on the data extracted from the text. This can lead to graphs that are non-specific and may be difficult to analyze and query. +The knowledge graph you created is unconstrained, meaning that any entity or relationship can be created based on the data extracted from the text. + +This can lead to graphs that are non-specific and may be difficult to analyze and query. In this lesson, you will modify the `SimpleKGPipeline` to use a custom schema for the knowledge graph. == Schema -When you provide a schema to the `SimpleKGPipeline`, it will pass this information to the LLM instructing it to only identify those nodes and relationships. This allows you to create a more structured and meaningful knowledge graph. +When you provide a schema to the `SimpleKGPipeline`, it will pass this information to the LLM instructing it to only identify those nodes and relationships. + +This allows you to create a more structured and meaningful knowledge graph. You define a schema by expressing the desired nodes, relationships, or patterns you want to extract from the text. @@ -62,22 +66,23 @@ You can also provide a description for each node label and associated properties include::{repository-raw}/{branch}/genai-graphrag-python/solutions/kg_builder_schema.py[tag=node_types] ---- -Run the program to create the knowledge graph with the defined nodes. +Recreate the knowledge graph with the defined nodes: -[TIP] -.Remember to delete the existing graph before re-running the pipeline -==== +. Delete any existing nodes and relationships. ++ [source, cypher] .Delete the existing graph ---- MATCH (n) DETACH DELETE n ---- -==== +. Run the program ++ +The graph will be constrained to only include the defined node labels. -The graph created will be constrained to only include the defined node labels. +View the entities and chunks in the graph using the following Cypher query: [source, cypher] -.View the entities extracted from each chunk +.Entities and Chunks ---- MATCH p = (c:Chunk)-[*..3]-(e:__Entity__) RETURN p @@ -85,7 +90,7 @@ RETURN p == Relationships -You express required relationship types by providing a list of relationship types to the `SimpleKGPipeline`. +You can define required relationship types by providing a list to the `SimpleKGPipeline`. [source, python] .RELATIONSHIP_TYPES @@ -93,7 +98,7 @@ You express required relationship types by providing a list of relationship type include::{repository-raw}/{branch}/genai-graphrag-python/solutions/kg_builder_schema.py[tag=relationship_types] ---- -You can also provide patterns that define how nodes types are connected by relationships. +You can also describe patterns that define how nodes are connected by relationships. [source, python] .PATTERNS @@ -109,36 +114,49 @@ Nodes, relationships and patterns are all passed to the `SimpleKGPipeline` as th include::{repository-raw}/{branch}/genai-graphrag-python/solutions/kg_builder_schema.py[tag=kg_builder] ---- -Review the `data/genai-fundamentals_1-generative-ai_1-what-is-genai.pdf` PDF document and experiment by creating a set of nodes, relationships and patterns relevant to the data. - -== Process all the documents - -When you are happy with the schema, you can modify the program to process all the PDF documents from the link:https://graphacademy.neo4j.com/courses/genai-fundamentals[Neo4j and Generative AI Fundamentals course^]: - +[%collapsible] +.Reveal the complete code +==== [source, python] -.All PDFs ---- -include::{repository-raw}/{branch}/genai-graphrag-python/solutions/kg_builder_schema.py[tag=all_documents] +include::{repository-raw}/{branch}/genai-graphrag-python/solutions/kg_builder_schema.py[tags=**;!simple_nodes;!all_documents] ---- +==== + +Review the `data/genai-fundamentals_1-generative-ai_1-what-is-genai.pdf` PDF document and experiment by creating a set of `NODES`, `RELATIONSHIPS` and `PATTERNS` relevant to the data. + +Recreate the knowledge graph: + +. Delete any existing nodes and relationships. +. Run the program. -You can run the program to create a knowledge graph based on all the documents using the defined schema. [%collapsible] -.Reveal the complete code +.Process all the documents? ==== +In the next lesson, you will add structured data to the knowledge graph, and process all of the documents. + +Optionally, you could modify the program now to process the documents from the `data` directory without the structured data: + [source, python] +.All PDFs ---- -include::{repository-raw}/{branch}/genai-graphrag-python/solutions/kg_builder_schema.py[tag=**,!simple_nodes] +include::{repository-raw}/{branch}/genai-graphrag-python/solutions/kg_builder_schema.py[tag=all_documents] ---- ==== -[TIP] -.OpenAI Rate Limiting? -==== -When using a free OpenAI API key, you may encounter rate limiting issues when processing multiple documents. You can add a `sleep` between document processing to mitigate this. -==== +== Explore + +Review the knowledge graph and observe how the defined schema has influenced the structure of the graph: + +[source, cypher] +.Entities and Chunks +---- +MATCH p = (c:Chunk)-[*..3]-(e:__Entity__) +RETURN p +---- -Review the knowledge graph and observe how the defined schema has influenced the structure of the graph. +View the counts of documents, chunks and entities in the graph: [source, cypher] .Documents, Chunks, and Entity counts diff --git a/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/5-structured-data/lesson.adoc b/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/5-structured-data/lesson.adoc index a5c0baa1e..c27fe7ff8 100644 --- a/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/5-structured-data/lesson.adoc +++ b/asciidoc/courses/genai-graphrag-python/modules/2-knowledge-graph-pipeline/lessons/5-structured-data/lesson.adoc @@ -11,7 +11,7 @@ Combining the structured and unstructured data can enhance the knowledge graph's .Lexical and Domain Graphs The unstructured part of your graph is known as the link:https://graphrag.com/reference/knowledge-graph/lexical-graph/[Lexical Graph], while the structured part is known as the link:https://graphrag.com/reference/knowledge-graph/domain-graph/[Domain Graph]. -== Load from CSV file +== Structured data source The repository contains a sample CSV file `genai-graphrag-python/data/docs.csv` which contains metadata about the lessons the documents were created from. @@ -24,6 +24,8 @@ genai-fundamentals_1-generative-ai_2-considerations.pdf,genai-fundamentals,1-gen ... ---- +=== Load from CSV file + You can use the CSV file as input and a structured data source when creating the knowledge graph. Open `genai-graphrag-python/kg_structured_builder.py` and review the code. @@ -73,18 +75,22 @@ image::images/kg-builder-structured-model.svg["A data model showing Lesson nodes Run the program to create the knowledge graph with the structured data. -[TIP] -.Clear the graph before importing +[NOTE] +.Remember to delete the existing graph before re-running the pipeline ==== -Remember to clear the database before running the program to avoid inconsistent data. - [source, cypher] -.Delete all +.Delete the existing graph ---- MATCH (n) DETACH DELETE n ---- ==== +[TIP] +.OpenAI Rate Limiting? +==== +When using a free OpenAI API key, you may encounter rate limiting issues when processing multiple documents. You can add a `sleep` between document processing to mitigate this. +==== + == Explore the structured data The structured data allows you to query the knowledge graph in new ways. @@ -106,7 +112,9 @@ The knowledge graph allows you to summarize the content of each lesson by specif .Summarize lesson content ---- MATCH (lesson:Lesson)<-[:PDF_OF]-(:Document)<-[:FROM_DOCUMENT]-(c:Chunk) -RETURN lesson.name, +RETURN + lesson.name, + lesson.url, [ (c)<-[:FROM_CHUNK]-(tech:Technology) | tech.name ] AS technologies, [ (c)<-[:FROM_CHUNK]-(concept:Concept) | concept.name ] AS concepts ---- diff --git a/asciidoc/courses/genai-graphrag-python/modules/3-retrieval/lessons/1-vector-cypher-retriever/lesson.adoc b/asciidoc/courses/genai-graphrag-python/modules/3-retrieval/lessons/1-vector-cypher-retriever/lesson.adoc index 7083ef8c5..3bfaa03e4 100644 --- a/asciidoc/courses/genai-graphrag-python/modules/3-retrieval/lessons/1-vector-cypher-retriever/lesson.adoc +++ b/asciidoc/courses/genai-graphrag-python/modules/3-retrieval/lessons/1-vector-cypher-retriever/lesson.adoc @@ -5,7 +5,7 @@ The chunks in the knowledge graph include vector embeddings that allow for similarity search based on vector distance. -You can create a vector retriever that uses these embeddings to find the most relevant chunks for a given query. +In this lesson you will create a vector retriever that uses these embeddings to find the most relevant chunks for a given query. The retriever can then use the structured and unstructured data in the knowledge graph to provide additional context. @@ -114,6 +114,50 @@ The retrieval query includes additional context relating to technologies and con Experiment asking different questions relating to the knowledge graph such as _"What technologies and concepts support knowledge graphs?"_. +=== Generalize entity retrieval + +The retriever currently uses the knowledge graph to add additional context related to technologies and concepts. +The specific entities allow for targeted retrieval, however you may also want to generalize the retrieval to include all related entities. + +You can use the node labels and relationship types to create a response that includes details about the entities. + +This cypher query retrieves all related entities between the chunks: + +[source, cypher] +.Related entities +---- +MATCH (c:Chunk)<-[:FROM_CHUNK]-(entity)-[r]->(other)-[:FROM_CHUNK]->() +RETURN DISTINCT + labels(entity)[2], entity.name, entity.type, entity.description, + type(r), + labels(other)[2], other.name, other.type, other.description +---- + +The output uses the node labels, properties, and relationship types to output rows which form statements such as: + +* `Concept` "Semantic Search" `RELATED_TO` `Technology` "Vector Indexes" +* `Technology` "Retrieval Augmented Generation" `HAS_CHALLENGE` "Understanding what the user is asking for and finding the correct information to pass to the LLM"` + +These statements can be used to create additional context for the LLM to generate responses. + +Modify the `retrieval_query` to include all entities associated with the chunk: + +[source, python] +.Enhanced retrieval query with all related entities +---- +include::{repository-raw}/{branch}/genai-graphrag-python/solutions/vector_cypher_rag.py[tag=advanced_retrieval_query] +---- + +[TIP] +.Format the context +==== +The Cypher functions `reduce` and `coalesce` are used to format the associated entities into readable statements. The `reduce` function adds space characters between the values, and `coalesce` replaces null values with empty strings. +==== + +== Experiment + +Experiment running the code with different queries to see how the additional context changes the responses. + [.quiz] == Check your understanding diff --git a/asciidoc/courses/genai-graphrag-python/modules/3-retrieval/lessons/2-text-to-cypher-retriever/lesson.adoc b/asciidoc/courses/genai-graphrag-python/modules/3-retrieval/lessons/2-text-to-cypher-retriever/lesson.adoc index 224c24708..16a577d90 100644 --- a/asciidoc/courses/genai-graphrag-python/modules/3-retrieval/lessons/2-text-to-cypher-retriever/lesson.adoc +++ b/asciidoc/courses/genai-graphrag-python/modules/3-retrieval/lessons/2-text-to-cypher-retriever/lesson.adoc @@ -8,6 +8,8 @@ The `Text2CypherRetriever` retriever allows you to create `GraphRAG` pipelines t Using text to cypher retrieval can help you get precise information from the knowledge graph based on user questions. For example, how many lessons are in a course, what concepts are covered in a module, or how technologies relate to each other. +In this lesson, you will create a text to cypher retriever and use it to answer questions about the data in knowledge graph. + == Create a Text2CypherRetriever GraphRAG pipeline Open `genai-graphrag-python/text2cypher_rag.py` and review the code. diff --git a/asciidoc/courses/genai-graphrag-python/modules/4-customisation/lessons/1-loading-data/lesson.adoc b/asciidoc/courses/genai-graphrag-python/modules/4-customisation/lessons/1-loading-data/lesson.adoc index 4edc5f0b7..0ab2110c8 100644 --- a/asciidoc/courses/genai-graphrag-python/modules/4-customisation/lessons/1-loading-data/lesson.adoc +++ b/asciidoc/courses/genai-graphrag-python/modules/4-customisation/lessons/1-loading-data/lesson.adoc @@ -46,6 +46,7 @@ You can run the custom loader directly to verify that it is working: [source,python] ---- +include::{repository-raw}/{branch}/genai-graphrag-python/examples/data_loader_custom_pdf.py[tag=pdf_file] include::{repository-raw}/{branch}/genai-graphrag-python/examples/data_loader_custom_pdf.py[tag=run_loader] ---- @@ -63,7 +64,7 @@ This example code shows how to create and use the `CustomPDFLoader` in a `Simple [source, python] ---- -include::{repository-raw}/{branch}/genai-graphrag-python/examples/data_loader_custom_pdf.py[tag=**,!run_loader] +include::{repository-raw}/{branch}/genai-graphrag-python/examples/data_loader_custom_pdf.py[tag=**;!run_loader] ---- ==== @@ -92,6 +93,7 @@ You can run the text loader directly to verify that it is working: [source,python] ---- +include::{repository-raw}/{branch}/genai-graphrag-python/examples/data_loader_text_file.py[tag=pdf_file] include::{repository-raw}/{branch}/genai-graphrag-python/examples/data_loader_text_file.py[tag=run_loader] ---- @@ -102,7 +104,7 @@ This example code shows how to create and use the `TextLoader` in a `SimpleKGPip [source, python] ---- -include::{repository-raw}/{branch}/genai-graphrag-python/examples/data_loader_text_file.py[tag=**,!run_loader] +include::{repository-raw}/{branch}/genai-graphrag-python/examples/data_loader_text_file.py[tag=**;!run_loader] ---- ==== diff --git a/asciidoc/courses/llm-knowledge-graph-construction/modules/2-llm-graph-builder/lessons/1-construction-process/lesson.adoc b/asciidoc/courses/llm-knowledge-graph-construction/modules/2-llm-graph-builder/lessons/1-construction-process/lesson.adoc index 9f05319f1..525a97095 100644 --- a/asciidoc/courses/llm-knowledge-graph-construction/modules/2-llm-graph-builder/lessons/1-construction-process/lesson.adoc +++ b/asciidoc/courses/llm-knowledge-graph-construction/modules/2-llm-graph-builder/lessons/1-construction-process/lesson.adoc @@ -67,9 +67,18 @@ The _names_ would be the node and relationship identifiers. If you wanted to construct a knowledge graph based on the link:https://en.wikipedia.org/wiki/Neo4j[Neo4j Wikipedia page^], you would: -. **Gather** the text from the page. + +image::images/neo4j-wiki.png["A screenshot of the Neo4j wiki page"] + +. **Gather** the text from the page. + -image::images/neo4j-wiki.png[A screenshot of the Neo4j wiki page] + Neo4j is a graph database management system (GDBMS) developed by + Neo4j Inc. + + The data elements Neo4j stores are nodes, edges connecting them + and attributes of nodes and edges. Described by its developers + as an ACID-compliant transactional database with native graph + storage and processing... + . Split the text into **chunks**. + Neo4j is a graph database management system (GDBMS) developed @@ -77,25 +86,38 @@ image::images/neo4j-wiki.png[A screenshot of the Neo4j wiki page] + {sp} + - The data elements Neo4j stores are nodes, edges connecting them, - and attributes of nodes and edges... + The data elements Neo4j stores are nodes, edges connecting them + and attributes of nodes and edges. ++ +{sp} ++ + Described by its developers as an ACID-compliant transactional + database with native graph storage and processing... . Generate **embeddings** and **vectors** for each chunk. + [0.21972137987, 0.12345678901, 0.98765432109, ...] ++ +{sp} ++ + [0.34567890123, 0.23456789012, 0.87654321098, ...] ++ +{sp} ++ + [0.45678901234, 0.34567890123, 0.76543210987, ...] . **Extract** the entities and relationships using an **LLM**. + Send the text to the LLM with an appropriate prompt, for example: + - Your task is to identify the entities and relations requested - with the user prompt from a given text. You must generate the + Your task is to identify the entities and relations requested + with the user prompt from a given text. You must generate the output in a JSON format containing a list with JSON objects. Text: {text} + -Parse the entities and relationships output by the LLM.: +Parse the entities and relationships output by the LLM. + [source, json] ---- diff --git a/asciidoc/courses/workshop-genai/banner.png b/asciidoc/courses/workshop-genai/banner.png deleted file mode 100644 index 3a36e43d7022a6d6cfb982b062bd0d2326d51b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92611 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�|0A6JUgthSu-JG+G$ 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

|ujx&u-`?+ax1B$&fE0QB()a8iCM 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 \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/confused-llm.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/confused-llm.svg new file mode 100644 index 000000000..7dd0f1976 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/confused-llm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/cypher.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/cypher.svg deleted file mode 100644 index 8dbc07a00..000000000 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/cypher.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/genai-diagram.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/genai-diagram.svg deleted file mode 100644 index 163537205..000000000 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/genai-diagram.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-blackbox.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-blackbox.svg new file mode 100644 index 000000000..b40be224a --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-blackbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-missing-data.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-missing-data.svg new file mode 100644 index 000000000..7804baee7 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-missing-data.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-document-results.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-document-results.svg new file mode 100644 index 000000000..6ca24a39a --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-document-results.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-document.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-document.svg new file mode 100644 index 000000000..744beda38 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-document.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-interaction.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-interaction.svg new file mode 100644 index 000000000..4b457cbfb --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/llm-prompt-interaction.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/manager-company-data-model.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/manager-company-data-model.svg deleted file mode 100644 index 0a8e22d9f..000000000 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/manager-company-data-model.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/query-knowledge-graph.png b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/1-what-is-genai/images/query-knowledge-graph.png deleted file mode 100644 index 86b6f6a87ded4565009c1c425a9623499aa4d724..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117415 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 - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FILED.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FILED]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_DOCUMENT.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_DOCUMENT]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.HAS_METRIC.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:HAS_METRIC]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.ISSUED_STOCK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:ISSUED_STOCK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.MENTIONS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:MENTIONS]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.NEXT_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:NEXT_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.OWNS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[r:OWNS]->(b) -SET r.position_status = row.position_status, - r.`Value` = toFloat(row.Value), - r.shares = toInteger(row.shares), - r.share_value = toFloat(row.share_value); - -MATCH (n:__index__) REMOVE n:__index__; \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/images/8.png b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/images/8.png deleted file mode 100644 index ecd0dca74b7b1d08879ecb29fd7c2b4901618c27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26064 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 TPX7%U#!8^9pf3MK&LZT0nXJv; diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/images/apple-edgar-pdf.png b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/images/apple-edgar-pdf.png deleted file mode 100644 index d9c50ca25a4056e77ca8a55be80682be3b0ac349..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109681 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%0AQCo+X-R~kWtwKN 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 iVT>`x7-NhzKK}=9r8-?nS@ARg0000 \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/lesson.adoc b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/lesson.adoc deleted file mode 100644 index 11c246ad9..000000000 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/lesson.adoc +++ /dev/null @@ -1,438 +0,0 @@ -= Building a Graph -:type: lesson -:order: 2 -:slides: true - -[.slide.discrete] -== Introduction -In this lesson, you will explore the knowledge graph we've prepared for this workshop and learn how it was built. - -You'll start with a completed knowledge graph containing structured entities and relationships extracted from PDF documents. Then we'll show you the transformation process: how raw text became the structured data model you'll be working with. - -[.slide] -== The Problem with Traditional RAG - -Traditional RAG systems work - but they're blind to context: - -- **Retrieves based on similarity, not understanding** -- **No map of your domain or business logic** -- **Treats all chunks as isolated, unstructured blobs** -- **Can't bridge relationships across documents** - -[.slide.discrete] -== The Problem with Traditional RAG - -**The Challenge with PDF Documents:** - -- Rich information about companies, financials, and risks locked in unstructured text -- Hard to search, query, or analyze systematically -- Connections between entities are hidden in narrative text -- Traditional RAG can't reason across relationships - -**The GraphRAG Solution:** - -- Use AI to extract structured entities and relationships -- Create a knowledge graph that preserves connections -- Give the system a "mental map" of your domain -- Enable context-aware retrieval, not just similarity search - -It's like giving someone index cards with code snippets vs. an architectural diagram - GraphRAG understands the structure. - -[.slide] -== From PDF Documents to Knowledge Graph - -image::images/unstructured-structured.svg["a graph data model showing the separation of structured and unstructured data.", width=95%] - -[.transcript-only] -==== -The knowledge graph you'll be exploring was built from unstructured PDF documents transformed into a structured, queryable format. - -Let's walk through how this transformation happened - from the original data sources to the final knowledge graph you'll work with in this workshop. -==== - -[.slide.col-2] -== The Source: EDGAR SEC Filings - -[.col] -==== -The knowledge graph you'll explore was built from EDGAR SEC filing PDF documents. - -These documents contain valuable company information, but it was originally locked in free-form text that's difficult to query systematically. - -**The Original Challenge:** How do you extract structured insights from thousands of pages of legal text about companies, executives, financial metrics, and business risks? -==== - -[.col] -image::images/apple-edgar-pdf.png["a screenshot of an Apple SEC filing PDF document."] - -[.slide.col-2] -== Step 1: Documents and Chunks - -[.col] -==== -**Documents** in your knowledge graph are the original PDF files that were processed. - -**Chunks** are smaller, semantically meaningful segments of text extracted from each document. - -[.transcript-only] -===== -**Why This Chunking Strategy?** - -- Improves retrieval and search accuracy -- Enables LLMs to process long documents effectively -- Each chunk becomes a searchable unit linked to its source -- Supports both granular search and traceability - -This chunking strategy was crucial for creating a knowledge graph that works at multiple levels of granularity - from specific facts to document-level context. Unlike traditional RAG chunks, these chunks are connected to business entities and relationships. -===== -==== - -[.col] -==== - -**Verify Documents and Chunks:** - -[source, cypher] ----- -// See what documents were processed and how many chunks each has -MATCH (d:Document)<-[:FROM_DOCUMENT]-(c:Chunk) -RETURN d.path, count(c) as totalChunks -ORDER BY totalChunks DESC ----- - -[.transcript-only] -===== -Now we have a way to access the unstructured data through chunks, but what about the structure that exists within the unstructured data? - -PDF documents aren't truly "unstructured" - they contain rich business entities and relationships hidden in the text. Companies mention products, face risks, report financial metrics, and connect to executives. This structure just isn't explicit or queryable. -===== - -// The solution: define exactly what structure to extract. - -==== - -[.slide.col-2] -== Step 2: Schema-Driven Extraction - -The knowledge graph was built using a defined schema combined with carefully crafted prompts to guide the AI extraction process. - -**Schema Definition:** - -[.col] -==== -**Entities:** - -- Company -- Executive -- Product -- FinancialMetric -- RiskFactor -- StockType -- Transaction -- TimePeriod -==== - -[.col] -==== -**Relationships:** - -* Company **HAS_METRIC** FinancialMetric -* Company **FACES_RISK** RiskFactor -* Company **ISSUED_STOCK** StockType -* Company **MENTIONS** Product -==== - -[.slide.discrete] -== Step 2: Guided Extraction Prompts - -**Guided Extraction Prompts:** - -The extraction process used carefully crafted prompts to ensure quality: - -- **Company Validation:** Only extract approved companies from our list -- **Context Resolution:** Resolve "the Company" to actual company names -- **Schema Enforcement:** Strict adherence to defined entity types -- **Quality Control:** Validate all extracted relationships - -This schema + prompt combination acted as the blueprint - telling the AI exactly what to look for and how to connect entities in the knowledge graph you'll explore. It's the difference between isolated chunks and a connected web of business knowledge. - -[.slide] -== Step 3: The GraphRAG Pipeline - -The complete pipeline orchestrated the transformation from PDF to knowledge graph using AI-powered extraction. - -**The GraphRAG Pipeline:** - -image::images/8.png[Diagram showing the Neo4j GraphRAG pipeline process from PDF documents to knowledge graph] - -[.slide.col-2.discrete] -== Step 3: SimpleKGPipeline Example - -[.col] -==== -[source, python] ----- -pipeline = SimpleKGPipeline( - driver=driver, # Neo4j connection driver - llm=llm, embedder=embedder, # OpenAI llm and embeddings - entities=entities, relations=relations, # Define schema - enforce_schema="STRICT", - prompt_template=prompt_template, -) -# Process the SEC filing documents -pdf_documents = [ - "apple-10K-2023.pdf", "microsoft-10K-2023.pdf", - # ... more company filings -] -# Run the pipeline to transform PDFs into knowledge graph -for pdf_file in pdf_documents: - pipeline.run(file_path=pdf_file) ----- -==== - -[.col] -==== -**What happened during `pipeline.run()`:** - -1. **PDF Text Extraction:** Extracted raw text from PDF documents + -2. **Document Chunking:** Broke text into semantically meaningful chunks + -3. **Entity Extraction:** Used LLM to identify companies, metrics, risks, etc. + -4. **Relationship Extraction:** Found connections between entities + -5. **Graph Storage:** Saved structured entities and relationships to Neo4j + -6. **Vector Embeddings:** Generated embeddings for chunks and stored them - -[.transcript-only] -===== -This transformed hundreds of pages of unstructured PDF text into the queryable knowledge graph with thousands of connected entities. -===== -==== - -[.slide.discrete] -== Step 3: Verify Entity Extraction - -**Verify Entity Extraction:** - -[source, cypher] ----- -// Count what entities were extracted by type -MATCH (e) -WHERE NOT e:Document AND NOT e:Chunk -RETURN labels(e) as entityType, count(e) as count -ORDER BY count DESC ----- - -[.slide] -== Step 4: Adding Structured Data - -But PDF extraction was only part of the story. The knowledge graph also includes structured data loaded from CSV files to complement the extracted PDF entities. - -**Structured Data Sources:** - -- **Asset Manager Holdings:** Ownership information connecting asset managers to companies -- **Company Filing Information:** Metadata linking companies to their PDF documents - -**Why Both Data Types?** - -- **Unstructured (PDFs):** Rich content about companies, risks, metrics -- **Structured (CSVs):** Precise ownership data and document relationships - -This created a complete picture: detailed company information from PDFs **plus** structured ownership and filing relationships. The bridge between structured and unstructured data enables the powerful GraphRAG queries you'll explore. - -[.transcript-only] -==== -**Sample Structured Data:** - -**Asset Manager Holdings (Sample Data):** -[%autowidth] -|=== -| managerName | companyName | ticker | Value | shares - -| ALLIANCEBERNSTEIN L.P. | AMAZON COM INC | AMZN | $6,360,000,000 | 50,065,439 -| ALLIANCEBERNSTEIN L.P. | APPLE INC | AAPL | $4,820,000,000 | 28,143,032 -| AMERIPRISE FINANCIAL INC | ALPHABET INC | GOOG | $4,780,000,000 | 36,603,757 -| BlackRock Inc. | AMAZON COM INC | AMZN | $78,000,000,000 | 613,380,364 -| FMR LLC | MICROSOFT CORP | MSFT | $68,200,000,000 | 215,874,152 -|=== - -**Company Filing Information (Sample Data):** -[%autowidth] -|=== -| name | ticker | cusip | cik | form10KUrls - -| AMAZON | AMZN | 23135106 | 1018724 | 0001018724-23-000004.pdf -| NVIDIA Corporation | NVDA | 067066G104 | 1045810 | 0001045810-23-000017.pdf -| APPLE INC | AAPL | 3783310 | 1490054 | 0001096906-23-001489.pdf -| PAYPAL | PYPL | 1633917 | 1633917 | 0001633917-23-000033.pdf -| MICROSOFT CORP | MSFT | 594918954 | 789019 | 0000950170-23-035122.pdf -|=== -==== - -[.slide.discrete] -== Step 4: How the Data Was Loaded -**How The Data Was Loaded:** - -1. **Neo4j Data Importer** processed the CSV files -2. **AssetManager nodes** were created from holdings data -3. **OWNS relationships** connected asset managers to companies with holding values -4. **FILED relationships** linked companies to their PDF documents - -**Verify the Complete Graph:** - -[source, cypher] ----- -// See the complete data model - all node types -MATCH (n) -RETURN labels(n) as nodeType, count(n) as count -ORDER BY count DESC ----- - -[.slide.col-2] -== Step 5: Exploring What Was Created - -Now that we've seen how the knowledge graph was built, let's explore what was created. Your complete knowledge graph contains: - -[.col] -==== -**The Complete Data Model:** - -- **500+ Company entities** extracted from SEC filings -- **Asset Manager entities** with ownership information -- **2,000+ Financial metrics and risk factors** as structured nodes -- **Clear entity relationships** connecting business concepts -- **Document links** bridging structured and unstructured data -==== - -[.col] -==== -**Visualize the Complete Schema:** - -[source, cypher] ----- -CALL db.schema.visualization() ----- - -[.transcript-only] -===== -This shows the complete knowledge graph schema including both extracted entities (Company, Product, FinancialMetric, etc.) and loaded structured data (AssetManager, ownership relationships) that you'll work with. -===== -==== - -[.slide.discrete] -== Step 5: Explore a Complete Company Profile - -**Explore a Complete Company Profile:** - -[source, cypher] ----- -// See how all three data types connect for one company -MATCH (c:Company {name: 'APPLE INC'}) -OPTIONAL MATCH (c)-[r1]->(extracted) -WHERE NOT extracted:Chunk AND NOT extracted:Document -OPTIONAL MATCH (am:AssetManager)-[r2:OWNS]->(c) -OPTIONAL MATCH (c)<-[:FROM_CHUNK]->(chunk:Chunk) -RETURN c.name, - count(DISTINCT extracted) as extractedEntities, - count(DISTINCT am) as assetManagers, - count(DISTINCT chunk) as textChunks ----- - -[.transcript-only] -==== -**Additional Exploration Queries:** - -[source, cypher] ----- -// Count what the pipeline created -MATCH (d:Document) -OPTIONAL MATCH (d)<-[:FROM_DOCUMENT]->(c:Chunk) -OPTIONAL MATCH (c)<-[:FROM_CHUNK]-(e) -RETURN d.path, - count(DISTINCT c) as chunks, - count(DISTINCT e) as entities -ORDER BY entities DESC ----- - -[source, cypher] ----- -// See all asset managers that were loaded -MATCH (am:AssetManager) -RETURN am.managerName, count{(am)-[:OWNS]->()} as companiesOwned -ORDER BY companiesOwned DESC -LIMIT 10 ----- - -[source, cypher] ----- -// Check data quality across companies -MATCH (c:Company) -OPTIONAL MATCH (c)-[r]->(entity) -RETURN c.name, count(r) as totalRelationships, - collect(DISTINCT type(r)) as relationshipTypes -ORDER BY totalRelationships DESC -LIMIT 5 ----- - -[source, cypher] ----- -// Find all financial metrics for a specific company -MATCH (c:Company {name: 'MICROSOFT CORP'})-[:HAS_METRIC]->(m:FinancialMetric) -RETURN c.name, m.name -LIMIT 10 ----- - -[source, cypher] ----- -// Discover risk factors across all companies -MATCH (c:Company)-[:FACES_RISK]->(r:RiskFactor) -RETURN c.name, r.name -LIMIT 50 ----- -==== - -[.slide] -== Key Takeaways - -✅ **Unstructured → Structured:** PDF text was transformed into business entities and relationships - -✅ **Schema-Driven:** Clear entity definitions guided accurate extraction - -✅ **AI-Powered:** LLMs identified and extracted meaningful business concepts - -✅ **Relationship-Aware:** Connections between entities were preserved and made explicit - -✅ **Data Model Ready:** Clean, structured data prepared for the knowledge graph you'll explore - -This structured data model is the foundation for everything that follows - without it, you'd still have unstructured text instead of the queryable business entities you'll work with! - -read::Continue[] - -[.summary] -== Summary - -In this lesson, you learned how we extracted structured data from unstructured PDF documents: - -**The Process:** - -- Started with EDGAR SEC filing PDFs containing company information -- Defined a clear schema with entities (Company, Executive, Product, etc.) and relationships -- Applied AI-powered extraction with carefully crafted prompts to identify business entities -- Used guided extraction to ensure data quality and consistency -- Created structured entities and relationships from free-form text - -**What Was Created:** - -- 500+ company entities from SEC filings -- 2,000+ financial metrics and risk factors as structured nodes -- Clear entity relationships connecting business concepts -- Clean, structured data model ready for graph storage - -**Key Technologies:** - -- Schema definition for consistent entity extraction -- OpenAI GPT-4 for entity and relationship identification -- Guided prompts for data quality control -- Structured extraction pipeline - -This structured data model is now ready to be stored in a knowledge graph and enhanced with vector embeddings for search. - -In the next lesson, you will learn about vectors and embeddings that enable semantic search across this structured data. diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/reset.cypher b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/reset.cypher deleted file mode 100644 index 6b69838cf..000000000 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-building-the-graph/reset.cypher +++ /dev/null @@ -1,170 +0,0 @@ -// This Cypher script loads the data from the CSV files into a Neo4j. - -// The CSV files were exported from Neo4j using `apoc.export.csv.all`. -// CALL apoc.export.csv.all("genai-data.csv", {bulkImport: true}) - -MATCH (n) SET n:__index__; - -CREATE INDEX import__ID IF NOT EXISTS -FOR (n:__index__) ON (n.`:ID`); - -CREATE VECTOR INDEX chunkEmbeddings IF NOT EXISTS -FOR (n:Chunk) ON (n.embedding) -OPTIONS { indexConfig : { - `vector.dimensions`: 1536, - `vector.similarity_function`: 'cosine' - } -}; - -CREATE CONSTRAINT managerName_AssetManager_uniq IF NOT EXISTS -FOR (n:AssetManager) REQUIRE n.managerName IS UNIQUE; - -CREATE CONSTRAINT name_Company_uniq IF NOT EXISTS -FOR (n:Company) REQUIRE n.name IS UNIQUE; - -CREATE CONSTRAINT path_Document_uniq IF NOT EXISTS -FOR (n:Document) REQUIRE n.path IS UNIQUE; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Executive.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Executive; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.FinancialMetric.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:FinancialMetric; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Product.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Product; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.RiskFactor.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:RiskFactor; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.StockType.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:StockType; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.TimePeriod.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:TimePeriod; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Transaction.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Transaction; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Chunk.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.index), - n.text = row.text, - n:Chunk -WITH n, row.embedding AS embedding -CALL db.create.setNodeVectorProperty(n, 'embedding', apoc.convert.fromJsonList(embedding)); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Company.__Entity__.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n.ticker = row.ticker, - n:Company; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Document.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.path = row.path, - n.datetime = datetime(row.datetime), - n:Document; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.AssetManager.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.managerName = row.managerName, - n.managerCik = toInteger(row.managerCik), - n:AssetManager; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.Company.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.name = row.name, - n.ticker = row.ticker, - n:Company; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.Document.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.path = row.path, - n:Document; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FACES_RISK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FACES_RISK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FILED.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FILED]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_DOCUMENT.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_DOCUMENT]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.HAS_METRIC.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:HAS_METRIC]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.ISSUED_STOCK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:ISSUED_STOCK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.MENTIONS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:MENTIONS]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.NEXT_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:NEXT_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.OWNS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[r:OWNS]->(b) -SET r.position_status = row.position_status, - r.`Value` = toFloat(row.Value), - r.shares = toInteger(row.shares), - r.share_value = toFloat(row.share_value); - -MATCH (n:__index__) REMOVE n:__index__; \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-news-agency-knowledge-graph.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-news-agency-knowledge-graph.svg new file mode 100644 index 000000000..35a15f919 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-news-agency-knowledge-graph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-news-agency.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-news-agency.svg new file mode 100644 index 000000000..77f805538 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-news-agency.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-rag-process.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-rag-process.svg new file mode 100644 index 000000000..22235d46d --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-rag-process.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-rag-vector+graph-process.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-rag-vector+graph-process.svg new file mode 100644 index 000000000..d988c79e4 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-rag-vector+graph-process.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-text-to-cypher-process.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-text-to-cypher-process.svg new file mode 100644 index 000000000..0b7254062 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/images/llm-text-to-cypher-process.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/lesson.adoc b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/lesson.adoc new file mode 100644 index 000000000..69c9a3b1f --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/2-graphrag/lesson.adoc @@ -0,0 +1,215 @@ += GraphRAG? +:order: 1 +:type: lesson + +[.slide] +== Retrieval-Augmented Generation + +Retrieval-Augmented Generation (RAG) is an approach that enhances the responses of LLMs by providing them with relevant, up-to-date information retrieved from external sources. + +RAG helps generate more accurate and tailored answers, especially when the required information is not present in the model’s training data. + +[.slide.col-2] +== The Retrieval-Augmented Generation (RAG) Process + +[.col] +==== +The RAG process typically involves three main steps: + +. **Understanding the User Query** ++ +The system first interprets the user’s input or question to determine what information is needed. +. **Information Retrieval** ++ +A _retriever_ searches external data sources (such as documents, databases, or knowledge graphs) to find relevant information based on the user’s query. +. **Response Generation** ++ +The retrieved information is inserted into the prompt, and the language model uses this context to generate a more accurate and relevant response. +==== + +[.col] +image::images/llm-rag-process.svg["A diagram showing the RAG process. A question from a user is sent to a retriever, which searches for relevant information. The retrieved information is then combined with the original question and sent to a language model, which generates a response."] + +[.slide.col-2.discrete] +== The RAG Process + +[.col] +==== +RAG systems can provide responses that are both contextually aware and grounded in real, up-to-date information. + +If building a chatbot for a news agency, you could use RAG to pull real-time headlines or results from a news API. + +When a user asks, "What’s the latest news on the Olympics?", the chatbot, can provide a current headline or summary from the most recent articles, ensuring the response is timely and accurate. + +[NOTE] +.Grounding +===== +The process of providing context to an LLM to improve the accuracy of its responses and reduce the likelihood of hallucinations is known as _Grounding_. +===== +==== + +[.col] +image::images/llm-news-agency.svg["A news agency chatbot, showing the user asking a question, the chatbot grounding the question with a news API, and the chatbot responding with the latest news."] + + +[.slide] +== Retrievers + +The retriever is a key component of the RAG process. A retriever is responsible for searching and retrieving relevant information from external data sources based on the user’s query. + +A retriever typically takes an *unstructured input* (like a question or prompt) and searches for structured data that can provide context or answers. + +Neo4j support various methods for building retrievers, including: + +* Full-text search +* Vector search +* Text to Cypher + +You will explore these methods in the rest of the course. + +[.slide] +== Data sources + +The data sources used in the RAG process can vary widely, depending on the application and the type of information needed. Common data sources include: + +* **Documents** ++ +Textual data sources, such as articles, reports, or manuals, that can be searched for relevant information. +* **APIs** ++ +External services that can provide real-time data or specific information based on user queries. +* **Knowledge Graphs** ++ +Graph-based representations of information that can provide context and relationships between entities. + +[.slide.col-2.discrete] +== Data sources + +[.col] +==== +The news agency chatbot could use the following data sources: + +* A news API to retrieve the latest articles or headlines. +* A knowledge graph to understand the relationships between different news topics, such as how they relate to each other or their historical context. This would help the chatbot provide more in-depth and contextual responses. +* A document database to store and retrieve articles, reports, or other textual data that can be used to answer user queries. +==== + +[.col] +image::images/llm-news-agency-knowledge-graph.svg["A news agency chatbot, showing the user asking a question, the chatbot grounding with the addition of data from a knowledge graph"] + +[.transcript-only] +==== +[TIP] +.Learn more about knowledge graphs +===== +You will learn more about knowledge graphs and their construction in the next module. +===== +==== + +[.slide.discrete] +== GraphRAG + +GraphRAG (Graph Retrieval Augmented Generation) is an approach that uses the strengths of graph databases to provide relevant and useful context to LLMs. + +GraphRAG can be used in conjunction with vector RAG. + +While vector RAG uses embeddings to find contextually relevant information, GraphRAG enhances this process by leveraging the relationships and structure within a graph. + +[.slide.discrete] +== GraphRAG + +Benefits of GraphRAG: + +* *Richer Context* ++ +Graphs capture relationships between entities, enabling retrieval of more relevant and connected information. +* *Improved Accuracy* ++ +By combining vector similarity with graph traversal, results are more precise and context-aware. +* *Explainability* ++ +Graphs provide clear paths and connections, making it easier to understand why certain results were retrieved. +* *Flexible Queries*: ++ +GraphRAG supports complex queries, such as combining full-text, vector, and text-to-cypher searches. +* *Enhanced Reasoning* ++ +Graphs enable reasoning over data, supporting advanced use cases like recommendations and knowledge discovery. + +[.slide.col-60-40] +== Graph-Enhanced Vector Search + +[.col] +==== +A common approach to GraphRAG is to use a combination of vector search and graph traversal. + +This allows for the retrieval of relevant documents based on semantic similarity, followed by a graph traversal to find related entities or concepts. + +The high-level process is as follows: + +. A user submits a query. +. The system uses a vector search to find nodes similar to the users query. +. The graph is then traversed to find related nodes or entities. +. The entities and relationships are added to the context for the LLM. +. The related data could also be scored based on its relevance to the user query. +==== + +[.col] +image::images/llm-rag-vector+graph-process.svg[A diagram showing a user question being passed to a vector search to find semantically similar data. The results are then used to find related nodes or entities in the graph. The most relevant results are used as context for the LLM.] + +[.slide] +== Full Text Search + +Full text search is another powerful technique that can be combined with graph-enhanced search to further improve information retrieval. + +While vector search excels at finding semantically similar content, full text search allows users to match specific keywords or phrases within documents or nodes. + +If the user is looking for a movie or actor by name, full text search can quickly locate those entities based on exact text matches. + +Full text search can be used as a replacement for or in conjunction with vector search. + +When used in conjunction with vector search, full text search can refine results by filtering out irrelevant content based on specific keywords or phrases. + +[TIP] +.Learn more about full text search +Full text search is available in Neo4j using link:https://neo4j.com/docs/cypher-manual/current/indexes/semantic-indexes/full-text-indexes/[full-text indexes^]. + +[.slide.col-2] +== Text to Cypher + +[.col] +==== +Text to Cypher is an alternative approach in GraphRAG that allows users to express their information needs in natural language, which is then automatically translated into Cypher queries. + +You leverage the power of LLMs to interpret user intent and generate precise graph queries, enabling direct access to structured data and relationships within the graph. + +You can use text to Cypher to turn users' queries into complex searches, aggregations, or traversals, making advanced graph querying more accessible and flexible. + +Text to Cypher works by passing the user's query and the graph schema to an LLM, which generates a Cypher query that can be executed against the graph database. +==== + +[.col] +image::images/llm-text-to-cypher-process.svg[A diagram showing a user question being passed to an LLM, which generates a Cypher query based on the graph schema. The generated Cypher query is then executed against the graph database to retrieve relevant data.] + +[.transcript-only] +==== +[IMPORTANT] +.Exercise caution with LLM-generated queries +===== +Caution should always be taken when executing LLM-generated Cypher queries, as they may not always be safe or efficient. + +You are trusting the generation of Cypher to the LLM. +It may generate invalid Cypher queries that could corrupt data in the graph or provide access to sensitive information. + +In a production environment, you should ensure that access to data is limited, and sufficient security is in place to prevent malicious queries. +===== +==== + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you learned about RAG and GraphRAG techniques, and how they can be used to enhance information retrieval. + +In the next lesson, you will learn about knowledge graphs and how they represent real-world entities and their relationships. \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/generic-knowledge-graph.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/generic-knowledge-graph.svg new file mode 100644 index 000000000..1d672273d --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/generic-knowledge-graph.svg @@ -0,0 +1 @@ +sourcesourcesourcesourcesourcesourceaboutaboutaboutrelates toSourceAchunk1chunk2chunk3SourceBchunk4chunk5chunk6topic itopic j \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/neo4j-google-knowledge-graph.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/neo4j-google-knowledge-graph.svg new file mode 100644 index 000000000..1e16b5dae --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/neo4j-google-knowledge-graph.svg @@ -0,0 +1,1417 @@ + + + + + + + + + + + + + + + + + FOUNDED + + + + + + + + + + + + + + LOCATED + + + + + + + + + + + + + + LOCATED + + + + + + + + + + + + + + CAPITAL_OF + + + + + + + + + + + + + + FOUNDER + + + + + + + + + + + + + + WORKS_AT + + + + + + + + + + + + + + ABOUT + + + + + + + + + + + + + + WRITTEN_BY + + + + + + + + + + + + + + OWNER_OF + + + + + + + + + + + + + + PUBLISHED ON + + + + + + + + + + + + + REFERS_TO + + + + + + + + + + + + + + + + + + + PUBLISHED_ON + + + + + + + + + + + + + Neo4j + + + + + + + Company + + + + + + + + + + + + + + + Malmo + + + + + + + Location + + + + + + + + + + + + + + + London + + + + + + + Location + + + + + + + + + + + + + + + Blog + Post + + + + + + + Article + + + + + + + + + + + + + + + United + Kingdom + + + + + + + Location + + + + + + + + + + + + + + + Emil + Eifrém + + + + + + + Person + + + + + + + + + + + + + + + neo4j.com + + + + + + + Website + + + + + + + + + + + + + + + Database + + + + + + + Technology + + + + + + + + + + + + + + + Documentation + + + + + + + Article + + + + + + + + + + + REFERS_TO + + + + + diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/org-principles-with-data.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/org-principles-with-data.svg new file mode 100644 index 000000000..2f18e8b7a --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/org-principles-with-data.svg @@ -0,0 +1 @@ +HAS_MODULEHAS_LESSONTYPE_OFTYPE_OFTYPE_OFTYPE_OFHAS_LESSONTYPE_OFTYPE_OFTYPE_OFTYPE_OFTYPE_OFCoursename:Neo4j & LLMModulename:Generative AIorder:1Lessonname:Neo4j & Generative AIorder:1Typename:quizTypename:challengeTypename:videoTypename:practicalContentLessonname:Grounding LLMSorder:2 \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/org-principles.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/org-principles.svg new file mode 100644 index 000000000..4bf0f05c9 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/images/org-principles.svg @@ -0,0 +1 @@ +TYPE_OFTYPE_OFTYPE_OFTYPE_OFTypename:quizTypename:challengeTypename:videoTypename:practicalContent \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/lesson.adoc b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/lesson.adoc new file mode 100644 index 000000000..56e9bff8a --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-knowledge-graph/lesson.adoc @@ -0,0 +1,98 @@ += What is a Knowledge Graph +:order: 1 +:type: lesson + + +[.slide.discrete] +== Knowledge Graphs +[quote] +A knowledge graph is an organized representation of real-world entities and their relationships. + +Knowledge graphs provide a structured way to represent entities, their attributes, and their relationships, allowing for a comprehensive and interconnected understanding of the information. + +Knowledge graphs are useful for Generative AI applications because they provide structured, interconnected data that enhances context, reasoning, and accuracy in generated responses. + +[.slide.discrete.col-2] +== Search Engines + +[.col] +==== +Search engines typically use knowledge graphs to provide information about people, places, and things. + +This knowledge graph could represent Neo4j: +==== + +[.col] +image::images/neo4j-google-knowledge-graph.svg["An example of a knowledge graph of Neo4j showing the relationships between people, places, and things", width=90%] + +[.slide.discrete.col-2] +== Data sources + +[.col] +==== +Knowledge graphs can break down sources of information and integrate them, allowing you to see the relationships between the data. + +This integration from diverse sources gives knowledge graphs a more holistic view and facilitates complex queries, analytics, and insights. + +Knowledge graphs can readily adapt and evolve as they grow, taking on new information and structure changes. +==== + +[.col] +image::images/generic-knowledge-graph.svg[a diagram of an abstract knowledge graph showing how sources contain chunks of data about topics which can be related to other topics] + +[.transcript-only] +==== +Neo4j is well-suited for representing and querying complex, interconnected data in Knowledge Graphs. +Unlike traditional relational databases, which use tables and rows, Neo4j uses a graph-based model with nodes and relationships. +==== + +[.slide.col-2] +== Organizing principles + +[.col] +==== +A knowledge graph stores data and relationships alongside frameworks known as organizing principles. + +The organizing principles are the rules or categories around the data that provide structure to the data. +Organizing principles can range from simple data descriptions, for example, describing a GraphAcademy course as `course -> modules -> lessons`, to a complex vocabulary of the complete solution. + +Knowledge graphs are inherently flexible, and you can change the organizing principles as the data grows and changes. + +The organizing principles describing the content in GraphAcademy could look like this: +==== + +[.col] +image::images/org-principles.svg[A Graph showing 4 types of content] + +[.slide.discrete.col-40-60] +== Organizing principles + +[.col] +==== +The organizing principles are stored as nodes in the graph and can be stored alongside the actual data. + +This integration of organizing principles and data allows for complex queries and analytics to be performed. + +Mapping the organizing principles to the lesson content in GraphAcademy could look like this: +==== + +[.col] +image::images/org-principles-with-data.svg[A Graph showing the organizing principles and the lesson content] + +[.slide] +== Generative AI applications + +In Generative AI applications, knowledge graphs play a crucial role by capturing and organizing important domain-specific or proprietary company information. They are not limited to strictly structured data—knowledge graphs can also integrate and represent less organized or unstructured information. + +GraphRAG can use knowledge graphs for context, forming the foundation for applications that leverage proprietary or domain-specific data. By grounding responses in a knowledge graph, these applications can provide more accurate answers and greater _explainability_, thanks to the rich context and relationships present in the data. + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you learned about knowledge graphs and how they are an organized representation of real-world entities and their relationships. + +You can learn more in the Neo4j blog post link:https://neo4j.com/blog/what-is-knowledge-graph[What Is a Knowledge Graph?^]. + +In the next lesson, you will setup your development environment to use Neo4j's GraphRAG capabilities. diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/apple-embedding.adoc b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/apple-embedding.adoc deleted file mode 100644 index 6526f3ab0..000000000 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/apple-embedding.adoc +++ /dev/null @@ -1,10 +0,0 @@ -0.0077788467, -0.02306925, -0.007360777, -0.027743412, -0.0045747845, 0.01289164, -0.021863015, -0.008587573, 0.01892967, -0.029854324, -0.0027962727, -0.020108491, -0.004530236, 0.009129008, -0.021451797, 0.002030382, 0.030813828, 9.744976e-05, 0.0019172973, -0.02568733, -0.020985752, -0.008066699, -0.02134214, -0.01222684, 0.0009980568, 0.005105939, 0.009999417, -0.000107408916, 0.015845545, -0.012980737, 0.020574536, -0.016160812, -0.018518453, -0.005263572, -0.019286057, -0.009293495, -0.012096621, -0.008854863, -0.005753605, -0.006157968, 0.010540851, 0.007724018, -0.0065554776, 0.00052944134, --0.023453051, 0.011089141, -0.021671113, -0.00061425474, -0.012754567, 0.015489157, -0.0054520466, -0.0020355221, -0.015050527, -0.0052944133, -0.0028082666, -0.0027431573, -0.019450543, 0.0063807103, -0.010725899, 0.0049243183, 0.005266999, 0.01513277, -0.027921606, 0.0055754115, -0.009183837, 0.00380718, -0.013624975, --0.0084710615, 0.012905347, 0.015667351, 0.033363372, 0.013268588, 0.014036193, 0.0063464423, 0.004454846, 0.0014820931, -0.03396649, -0.0062779062, -0.00314238, -0.01818948, 0.0075389706, -0.02637269, 0.009574492, 0.024974553, 0.024823774, 0.009882905, -0.021657405, 0.010109074, -0.007970748, 0.0028887964, 0.011849891, -0.0054726074, 0.0078336755, 0.016448664, -0.026975807, 0.016599443, -0.012713445, 0.026345275, 0.004667308, -0.03736588, 0.0009834929, 0.006089432, -0.028730331, -0.011198798, -0.020396343, 0.0019738395, 0.012459862, -0.003738644, 0.015448036, -0.019902883, 0.0064389664, 0.00926608, 0.021945259, -0.051648803, -0.016448664, -0.01744929, -0.009499103, 0.0021743076, -0.022795105, -0.035556525, 0.034021318, 0.025892938, 0.038407627, -0.008752059, 0.013446782, -0.0032640316, -0.01779197, -0.009567639, -0.0011205651, -0.013947096, 0.04707059, 0.008100967, 0.019491665, 0.016448664, -0.017846799, -0.019573908, -0.02223311, 0.015489157, -0.0057433248, -0.033445615, 0.010554559, 0.014694139, -0.01239818, 0.0070660715, -0.011226213, 0.023686076, 0.02360383, 0.022753984, -0.005215597, 0.0070866323, 0.010753313, -0.024110999, -0.003909984, 0.005462327, 0.0017459571, 0.0057981536, -0.016983245, -0.0021777344, -0.0039373985, 0.003772912, -0.006634294, 0.008614987, -0.006579465, -0.008841156, 0.0017699447, 0.024412557, 0.011856745, 0.013522171, -0.016051153, -0.00951281, -0.016133398, 0.004177275, -0.010691631, 0.01296703, 0.00886857, 0.016078569, 0.004434285, 0.012734006, -0.0067850733, 0.0006545197, 0.0011317023, -0.0046090526, 0.023096664, 0.01946425, -0.016640564, 0.014899747, 0.004701576, -0.010568266, 0.005530863, -0.019231228, 0.032047477, 0.02041005, -0.00397852, -0.014419994, -0.684703, -0.020643072, 0.00603803, -0.00033582686, 0.033993904, 0.03188299, 0.022287939, -0.0012739147, -0.018381381, -0.010396926, 0.0018042127, 0.0032863058, 0.00886857, 0.009519664, 5.9969083e-05, -0.022287939, 0.016284177, -0.023658661, -0.010431194, 0.02489231, -0.012261108, -0.014351458, -0.008841156, -0.029717252, 0.0036564006, 0.019628737, 0.019957712, -0.014022485, -0.019560201, 0.021767065, -0.008238039, -0.00048146606, 0.027291073, 0.0060140425, 0.037393294, 0.0072031436, -0.04416466, 0.013940242, 0.009663589, 0.03415839, -0.02065678, -0.020423757, 0.013563293, -0.0065246364, -0.015872959, -0.0009278074, 0.013254881, 0.005637094, -0.00071491714, -0.025344647, 0.03484375, 4.8269758e-05, 0.010787581, 0.008409379, 0.021780772, 0.008738352, 0.023124078, -0.008745206, -0.001522358, 0.016448664, -0.022370182, -0.0034011037, -0.034734093, -0.02523499, -0.020547122, 0.010636802, -0.009190691, 0.0076417746, 0.005434912, -0.01951908, 0.021492919, 0.022438718, -0.02306925, -0.007059218, -0.0031115387, 0.01705178, 0.023576416, -0.00148809, -0.027071757, 0.0047461246, -0.0023867695, -0.009389445, 0.0049414523, -0.027537804, 0.03158143, 0.0054246318, -0.024042463, -0.011301602, 0.013926535, -0.02371349, 0.034130976, 0.023932805, 0.0028682356, -0.019148985, -0.014570774, -0.0053423885, -0.032376453, -0.019244935, -0.0021434664, -0.019930298, 0.016530907, -0.0056302403, 0.00943742, 0.0067679393, 0.024028756, 0.013474196, -0.019477958, 0.014570774, 0.03673535, -0.020437464, -0.0076623354, -0.012631202, 0.008587573, -0.00869723, 0.025824402, -0.03125246, 0.010629948, -0.00761436, 0.021067996, -0.032952156, 0.025399476, -0.00438631, 0.011863599, 0.003027582, -0.01059568, 0.018463625, -0.0045405165, -0.030978315, -0.0034884873, -0.0059420797, 0.008018723, 0.0052190237, 0.007299094, -0.006250492, 0.02390539, 0.0004050055, 0.009965149, -0.020670487, 0.011993817, -0.02508421, -0.016969537, 0.007991308, 0.000463047, -0.00052258774, 0.0012704879, -0.01232279, -0.028511016, -0.016887294, -0.010862971, 0.0052361577, -0.008861717, 0.005530863, -0.0017579509, 0.021506626, 0.022589497, -0.015900373, 0.0028596686, -0.0233571, 0.0009406579, 0.016229348, 0.010205025, 0.028182043, -0.009026204, 0.0042218235, 0.0150368195, -0.035803255, 0.0068193413, 0.0018727488, -0.017846799, -0.029251205, 0.01340566, -0.016887294, -0.008190064, 0.008286014, -0.014748968, 0.0039888006, -0.0149682835, 0.007477288, 0.01015705, 0.002385056, 0.0054314854, 0.008861717, 0.0021023448, 0.0016602869, 0.030896071, 0.020053662, 0.0016157385, 0.04767371, -0.020218149, 0.0008228615, -0.013467343, 0.019820638, 0.0053252545, 0.0016525766, -0.013816877, -0.008477915, -0.0059592137, 0.013398807, -0.0009586486, 0.01150721, 0.023973927, -0.0029007902, 0.011246773, -0.0022873923, 0.013775756, -0.03292474, 0.003995654, -0.005369803, 0.011294749, 0.03459702, -0.0022771119, -0.028593259, -0.0066068796, -0.020451171, 0.012357058, 0.034185804, 0.002359355, 0.012185718, 0.0009329476, -0.007984455, 0.0016688539, -0.0047666854, 0.00047204236, -0.0036769616, -0.0074567273, 0.0034833471, 0.010115928, 0.03328113, -0.003368549, -0.026071131, -0.0035535966, -0.004986001, -0.00934147, -0.0125215445, 0.004143007, 0.014872333, 0.004146434, -0.010979483, 0.02223311, -0.0009552218, -0.0140499, 0.014502238, 0.026687955, -0.0020286685, 0.007621214, -0.0132617345, 0.045946598, 0.008169503, -0.004143007, -0.0022634047, -0.003240044, -0.025769573, -0.030759, 0.010479169, -0.00090467645, -0.024618166, 0.02350788, 0.022397596, 0.022877349, 0.0408201, 0.0032965862, -0.0034679265, -0.012946469, 0.0059763477, -0.020286685, -0.00019372156, -0.001281625, -0.013672951, 0.0028082666, 0.004146434, 0.013316563, -0.0002972753, 0.024933431, -0.010218732, 0.0067473785, 0.00096807233, -0.017600069, 0.0047495514, 0.0053458153, -0.012453008, -0.021698527, -0.02745556, 0.009060472, 0.003961386, -0.006867317, 0.008950814, -0.028949646, -0.0059455065, -0.005777593, 0.014748968, -0.0032948728, 0.021629991, 0.008320282, 0.020094784, 0.020423757, -0.01380317, 0.031362116, -0.0109863365, 0.005198463, -0.0062025166, 0.00017980016, 0.004968867, -0.019477958, -0.003947679, 0.03942196, -0.0048317946, -0.00595236, -0.024357729, 0.012679177, -0.002345648, -0.025413183, 0.0046227598, -0.015996324, -0.01809353, -0.0029864605, 0.016558321, -0.0055034487, -0.017161438, 0.04071044, -0.0025855242, -0.012644909, -0.01788792, -0.014255508, 0.007943333, 0.06513671, 0.02542689, -0.0109520685, 0.023727197, -0.0055925455, 0.027674876, -0.011945842, -0.006791927, 0.029059304, -0.00075818057, -0.0014101302, -0.008806888, 0.014776383, -0.018449917, 0.023891684, 0.011294749, -0.002393623, -0.020135906, -0.0056816423, -0.008203771, 0.00051230734, -0.014598188, 0.010650509, 0.0055205827, 0.01720256, 0.0057638856, 0.018751476, 0.029196376, -0.005195036, -0.024535922, -0.0060825786, -0.006243638, 0.015297256, -0.006226504, -0.001954992, 0.022301646, 0.017161438, 0.015955202, 0.0059489333, 0.0052601453, 0.012178864, 0.010616241, -0.0037249369, -0.02637269, 0.007792554, -0.011459235, -0.014611895, 0.032568354, -0.0012088054, -0.013810024, 0.024672994, 0.01627047, 0.0050511104, -0.0055891187, -0.00022102891, 0.026729077, -0.0074704345, 0.0031526603, 0.010307829, -0.025659915, -0.0055377167, -0.019998834, 0.0032880192, 0.014502238, -0.0012936188, -0.005650801, -0.011376992, -0.018669233, -0.0068536093, -0.011616868, -0.000986063, -0.026358983, -0.011390699, 0.0077308714, 0.033144057, 0.008217478, 0.020889802, 0.0057261907, 0.0069838283, 0.03489858, -0.008306575, -0.014803797, 0.004742698, -0.014474823, -0.022973299, 0.019094156, -0.001972126, -0.013145223, 0.011671697, 0.008649255, 0.013755195, -0.0060448837, 0.02958018, 0.0045028217, -0.0120897675, -0.00046004856, 0.017833091, 0.011986963, -0.019327179, -0.011829331, 0.00795704, -0.010410633, -0.0026334994, -0.008005016, 0.014666725, 0.014653017, 0.019738395, 0.012535252, -0.025276111, 0.0037146565, 0.02760634, -0.004441139, 0.014831211, -0.0109863365, 0.01222684, 0.0138305845, -0.008786327, -0.0074156057, -0.0052190237, -0.015900373, -0.02099946, -0.04997652, 0.014255508, 0.02094463, -0.014104729, 0.020464879, -0.004986001, -0.007970748, -0.020889802, 0.012219986, -0.008710938, -0.0025820974, -0.0013553012, -0.013857999, -0.033555273, -0.027016928, -0.01646237, 0.020862387, 0.0009629321, -0.017435582, -0.020272978, 0.018271724, 0.008155796, -0.024878602, -0.02834653, -0.049181502, 0.011431821, 0.003176648, 0.0035056213, 0.02952535, -0.015283549, 0.017572654, -0.006905012, 0.014214386, -0.026208203, -0.022164574, -0.028428772, 0.00012647052, 0.03829797, 0.018258017, 0.020423757, 0.014077314, 0.016640564, -0.00020646499, 0.0044616996, -0.008587573, 0.0029898873, 0.012219986, -0.018518453, 0.013679804, 0.014557066, 0.015859252, 0.0027071757, 0.012919054, -0.0039750934, 0.012788836, 0.0042560915, -0.0023353675, -0.027990142, -0.005404071, -0.004451419, -0.009444274, -0.019848052, 0.01008166, 0.0092455195, -0.024316607, 0.019162692, 0.009087887, 0.0017819385, -0.02922379, 0.025043089, -0.009972002, 0.021328432, 0.01141126, 0.0053903637, -0.026701663, -0.006685696, 0.008827449, -0.007477288, 0.015146477, -0.0068775974, 0.007792554, -0.014515945, -0.0074361665, 0.0058358484, 0.041149072, -0.025591379, -0.022356475, 0.0068570366, -0.04188926, -0.0053766565, -0.006411552, -0.009663589, -0.016092276, 0.001164257, 0.013556439, 9.952459e-06, 0.0003868006, -0.0058358484, -0.017367046, 0.0061682486, 0.020135906, 0.029991396, 0.0025769572, 0.035227552, 0.021602577, -0.0034576461, -0.019573908, 0.0022548377, -0.009533371, -0.011610014, 0.026454933, 0.01488604, 0.012315936, -0.007209997, -0.0028511016, 0.0045370897, -0.010239293, -0.0096430285, 0.035008237, 0.01769602, 0.016188227, -0.027976435, -0.031115387, -0.01946425, 0.026729077, -0.0048352215, -0.002503281, -0.015091648, -0.03829797, -0.01116453, 0.026331568, -0.01232279, 0.019505372, 0.004180702, -0.013912828, 0.01513277, -0.011849891, -0.02489231, 0.00088068884, -0.0026095118, 0.02740073, -0.02405617, 0.018203188, -0.0012859085, 0.005318401, -0.006349869, -0.007758286, 0.004674162, 0.03169109, -0.02785307, -0.0008571296, 0.0026369262, 0.015077941, 0.010623095, -0.012103475, -0.022260524, -0.009204398, -0.0028733758, -0.027976435, 0.010013124, 0.0077788467, -0.021013167, -0.011150823, 0.008244893, -0.006247065, -0.0062402114, 0.0027979861, 0.01372778, -0.0007671759, -0.013426221, 0.016928416, -0.0016191653, 0.0033668356, 0.026975807, -0.0121240355, -0.010705338, 0.023768319, -0.020793851, 0.00081129605, 0.0079022115, 0.0023096665, -0.024028756, 0.009937734, -0.0037592049, -0.0038483017, 0.020204442, -0.019546494, -0.012267961, -0.004338335, 0.0074361665, 0.016201934, 0.0024775798, 0.0061339806, 0.013248027, -0.008532744, -0.0019669859, -0.012713445, -0.030183297, 7.549679e-05, -0.012473569, -0.002210289, 0.02075273, -0.003116679, -0.0025872376, -0.003793473, 0.007299094, 0.0136592435, -0.024522215, -0.03391166, -0.021410676, 0.020506, -0.01463931, 0.00017551666, -0.020643072, -0.002201722, -0.022109745, 0.003632413, -0.0009286641, 0.00044891142, 0.0027191697, 0.014666725, 0.013391953, 0.02386427, -0.009039911, 0.0021348994, -0.013837438, -0.021410676, -0.021602577, -0.0059146653, 0.0048729163, 0.017983872, 0.01961503, -0.021917844, -0.028839989, -0.00808726, -0.03983318, -0.03254094, -0.005739898, 0.013248027, -0.00070206664, 0.006140834, 0.010013124, 0.0055411435, 0.0063841376, 0.016791344, -0.047564052, -0.0010725899, 0.004989428, -0.020917216, 0.022370182, -0.022959592, -0.020451171, -0.023233736, 0.001032325, 0.008094113, 0.0010777301, 0.01116453, 0.00038637224, -0.0033188604, -0.00886857, 0.022150867, 0.006394418, -0.00013310995, 0.009300348, -0.01883372, -0.009553932, 0.0032109162, -0.0007637491, -0.023727197, 0.0063258815, 0.009122155, 0.008327136, 0.008066699, 0.0013090394, -0.0051539144, 0.00975954, -0.020026248, -0.005873543, -0.011308456, -0.018765183, 0.014310337, -0.024412557, -0.017942749, -0.012535252, 0.010342097, -0.0243029, -0.010198171, 0.026838735, -0.0081078205, -0.0144337015, -0.010568266, 0.022301646, -0.03489858, -0.008066699, -0.0028802294, -0.023110371, -0.024193242, 0.03829797, 0.0029898873, -0.008361404, -0.0076280674, 0.014611895, 0.009560785, -0.0039716666, -0.004297213, 0.013446782, -0.022507254, -0.013337124, 0.008423086, -0.018600697, -0.023850562, 0.003947679, 0.0113838455, -0.0022788253, -0.0041909823, 0.20747247, -0.007059218, 0.016599443, 0.03988801, -0.0005011702, -0.0007568955, 0.015543986, 0.013145223, -0.0038825697, 0.0050339764, -0.014817504, 0.011767647, -0.015242428, 0.007299094, 0.010890386, -0.007580092, -0.03489858, -0.0089713745, -0.016393835, -0.0060825786, 0.023658661, -0.011459235, -0.011610014, -0.011514064, 0.02897706, 0.003108112, -0.02927862, 0.009889758, 0.018641818, 0.010150196, -0.00020453741, -0.004146434, -0.0039339717, -0.002090351, -0.008361404, -0.0001941499, -0.0075389706, 0.024165828, 0.02745556, 0.026920978, -0.0015789003, -0.00090638985, -0.007888504, -0.0035570234, -0.028127214, 0.0142966295, -0.008457354, -0.007360777, 0.023041835, 0.021753358, -0.047838196, -0.003755778, 0.025221283, 0.025111625, 0.0014692425, 0.0071346075, 0.0026900417, 0.012727153, -0.00223599, -0.0020423757, -0.00744302, 0.018998206, 0.0012841951, 0.019094156, -0.024330314, -0.0043074936, -0.034240633, 0.005839275, -0.009300348, -0.008738352, 0.0038654357, -0.020739023, -0.007545824, 0.00035017662, -0.030128468, -0.0408201, 0.024083585, 0.026098546, 0.014598188, 0.022493547, -0.006867317, 0.009252373, -0.006140834, -0.0022942459, -0.006147688, -0.016667979, 0.03223938, -0.00544862, -0.0058872504, -0.003844875, -0.005582265, -0.015448036, 0.004454846, -0.02603001, 0.0056987763, 0.017421875, -0.015790716, 0.01946425, -0.01042434, -0.00070120994, -0.0040641907, -0.017956456, 0.01769602, -0.010095367, -0.008080406, 0.024069877, 0.0029898873, 0.009403152, 0.0057913, 0.006870744, -0.012809397, -0.011424967, 0.01256952, -0.011178237, 0.033829417, 0.009725272, -0.002683188, -0.029086718, 0.017956456, -0.0010940074, 0.0075526778, -0.01868294, 0.0020612231, 0.017517826, -0.01439258, -0.021150239, -0.020780144, 0.00021256898, 0.0167091, -0.028483601, -0.003478207, -0.0048043802, 0.004454846, 0.0034936275, 0.008752059, 0.0024930006, 0.004828368, -0.017654898, -0.0015009405, -0.009320909, 0.0013458775, 0.013816877, 0.020560829, 0.007319655, 0.0035433162, -0.0028168336, 0.002784279, -0.00032833073, -0.023343394, -0.021314725, -0.018792598, 4.789495e-05, -0.018792598, -0.006689123, 0.04213599, -0.01769602, -0.034076147, -0.027592633, -0.01084241, 0.013734634, -0.022753984, -0.01479009, 0.023110371, -0.011795062, -0.04150546, -0.007340216, -0.18016769, 0.027565219, -0.0068775974, 0.0007757429, 0.018299138, 0.0038003265, 0.01676393, 0.009807515, -0.0063601495, 0.0019224375, 0.021259896, 0.0033102934, -0.028922232, -0.011054873, 0.024015049, -0.011596307, -0.004824941, 0.015996324, 0.025166454, 0.011123409, 0.01642125, -0.010047392, 0.01414585, -0.019957712, 0.009999417, 0.023453051, -0.025673622, 0.0014469683, -0.012007524, -0.016284177, -0.014159557, -0.015297256, 0.011260481, 0.0115826, 0.0128299575, -0.007621214, -0.014022485, -0.012363912, 0.0014512518, 0.023644954, 0.02158887, 0.01971098, 0.0078336755, 0.004705003, 0.0062607722, 0.020190734, 0.02006737, -0.019107863, 0.011952695, -0.019327179, 0.019628737, -0.013556439, -0.0066137332, 0.027825655, 0.00047289906, 0.009649882, -0.015406914, -0.0034216645, -0.020684194, -0.0065554776, -0.01266547, -0.010753313, 0.02016332, -0.018806305, -0.0072579724, -0.016818758, -0.013762048, -0.0081078205, -0.032952156, 0.01661315, -0.012219986, -0.011514064, 0.03169109, -0.024261778, 0.0005153058, -0.0007594656, -0.01818948, 0.026098546, 0.007648628, -0.0021006314, -0.005918092, 0.02143809, -0.017380754, -0.00031376682, -0.0059455065, 0.012219986, -0.0068604634, 0.004283506, -0.027291073, -0.030238125, 0.017750848, -0.019327179, -0.003810607, -0.021602577, 0.021465505, 0.036707934, 0.011801915, 0.004382883, -0.0028151202, 0.0036461202, -0.0018761756, -0.0021880148, -0.030046225, 0.015763301, 0.03563877, -0.0028408212, -0.006127127, 0.01971098, 0.018902255, -0.0025152748, -0.002325087, 0.020889802, 0.031142801, 0.028894817, -0.007429313, 0.0017313932, 0.011438674, -0.025509134, 0.005842702, -0.011856745, 0.025056796, 0.0007873084, 0.019546494, 0.014611895, -0.005088805, -0.011116555, -0.09907578, -0.04421949, 0.009972002, 0.0136935115, 0.015297256, 0.025015675, -0.005164195, 0.022959592, -0.012487276, 0.038709186, 0.0028562418, -0.021396969, -0.00061596814, 0.0077308714, 0.0115826, -0.00037137998, -0.027674876, -0.011555186, -0.022630619, 0.013638683, -0.013851145, -0.016873587, -0.010444901, -0.019217521, -8.918393e-07, 0.00072348415, -0.035254966, 0.028894817, 0.03662569, 0.007038657, 0.030238125, -0.02153404, 0.021301018, -0.038078655, 0.0019464251, 0.007991308, -0.018724062, 0.00628476, 0.019930298, -0.028593259, -0.001396423, 0.0003814462, 0.015516572, -0.03001881, 0.010773874, -0.02213716, 0.00027500108, 0.0010991476, 0.012007524, -0.013241174, -0.013097248, 0.018710354, -0.0021211922, -0.014735261, 0.0070146695, -0.020862387, -0.014063607, 0.0059832013, -0.018737769, 0.004228677, 0.006229931, -0.019628737, -0.00041314415, 0.013556439, 0.022260524, 0.0019738395, -0.0149682835, -0.001852188, 0.004776966, -0.018614404, -0.0011445528, -0.012219986, -0.02681132, 0.0461385, -0.021136532, -0.0007084919, -0.019724688, -0.020204442, 0.01365239, -0.032869913, -0.0044308584, -0.030594513, 0.0014675291, -0.008190064, 0.012377619, -0.0052258773, -0.003896277, 0.0078062615, 0.0057124835, -0.034624435, 0.03328113, 0.0022394168, 0.025892938, -0.011925281, -0.025097918, -0.002141753, -0.011445528, -0.0019190107, 0.032020062, -0.01739446, -0.0038174605, -0.0042526647, -0.08059845, 0.021109117, -0.002631786, -0.0049071843, 0.0144337015, 0.0035673038, 0.015982617, -0.036762763, -0.0062402114, -0.0041361535, -0.022041209, 0.010760167, -0.0057810196, -0.010019978, -0.00223599, -0.024878602, 0.019532787, 0.005465754, 0.030621927, 0.016010031, 0.012761421, 0.011308456, 0.019286057, -0.001992687, -0.013028712, 0.00768975, -0.016654272, 0.0029367716, 0.0019464251, -0.020423757, 0.00803243, -0.006428686, -0.014419994, 0.04268428, -0.0003623846, -0.008190064, -0.0047975266, 0.0011676837, -0.00454737, 0.006805634, -0.0066582817, -0.01710661, 0.01788792, -0.018011287, -0.011013751, -0.012014378, -0.011246773, 0.011692258, 0.016476078, -0.013056126, 0.015955202, 0.025796987, -0.016325299, -0.017682312, -0.017983872, -0.054691803, 0.023987634, -0.0020166747, -0.0060311765, -0.016476078, -0.0011616868, 0.033198886, 0.015763301, -0.0074498737, 0.008251746, -0.008477915, -0.016489785, -0.015173892, 0.03234904, -0.019985126, 0.000744045, -0.021410676, 0.016791344, -0.015242428, -0.002912784, -0.0014058467, -0.004824941, -0.0035673038, -0.008320282, 0.025344647, 0.013076687, -0.004735844, -0.034130976, 0.017312218, 0.016832465, 0.017380754, -0.02508421, -0.00808726, 0.013522171, 0.012439301, 0.014707847, 0.017147731, 0.006517783, -0.0010854404, 0.013782609, 0.008512183, -0.009451128, -0.014378873, 0.010636802, 0.023891684, 0.01809353, -0.012946469, -0.014337751, -0.011644282, -0.0018453344, 0.012069207, 0.0038585821, -0.020478586, -0.011843038, 0.02208233, 0.022109745, 0.005753605, -0.005650801, 0.022904763, -0.02119136, 0.017462997, -0.0059283725, -0.008662962, -0.015585108, 0.035227552, 0.05249865, 0.007634921, 0.015489157, -0.012781982, 0.021026874, 0.013741488, 0.0053423885, -0.024330314, 0.018724062, -0.008450501, 0.008025576, -0.01824431, -0.014762675, -0.014173265, -0.020793851, -0.0004604769, 0.014214386, 0.020670487, -0.019656152, 0.072593436, -0.0074224593, -0.0040539103, 0.00272431, 0.006336162, 0.021013167, 0.006805634, 0.016681686, -0.019203814, -0.009848637, 0.012857372, 0.015077941, 0.011959549, -0.017929042, -0.009320909, -0.0033120068, -0.023192614, 0.008985083, -0.022603204, 0.0060003353, 0.025207575, 0.02445368, 0.008827449, -0.006007189, -0.027647462, -0.010602534, 0.011150823, -0.0067131105, -0.0045884917, -0.041286144, 0.019395715, -0.006212797, -0.053293668, -0.01912157, 0.018326553, -0.016530907, -0.011198798, 0.0027448707, 0.027784534, -0.0013390239, -0.024508508, 0.023754612, -0.021259896, -0.017257389, 0.022027502, -0.012103475, -0.013535879, -0.015667351, 0.0061511146 diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/Apple-tech-or-fruit.png b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/Apple-tech-or-fruit.png deleted file mode 100644 index 7816211c39240dac822602c6ca0063797a81a249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28394 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 S=xaLu8x{iAR;g36iT)pp;mP~} diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/document-chunk-data-model.svg b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/document-chunk-data-model.svg deleted file mode 100644 index 4be61959b..000000000 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/document-chunk-data-model.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/vector-airplane.png b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/vector-airplane.png deleted file mode 100644 index 0a6e4184163b77b9f733575d0c1d22150602da4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87496 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

*ibTG(G8dfv><+6_M^W4 zx31U!?T39s_q$2yty7g*Ai_nvnLRP-1@mx}OD0j$7avXw{Es2KDo(2z9s_9;$IfwE z-WXwumx71bMj2k##xRl;f{AyeM$Nbjum_GA{PW$P2A1UgH}|7{|HJM5?Y&#guG9KZ zJbI@iW80jOrfw`EdaIgB#6dMqtyf4sS}jedTUTa&6Qvg=yL=${vP?~d-n z;%Antg`Rw>S^Z}mTwA_teoet~= zSI8Fu8iw`bdRMZC(AEbM^gKU!9QDVEyOr+uGDg4N7cm!KU6-+Hvc^B%DlL5vI9 z%1uGpZI*$_%6yC|vY=&?<+Urr7f72oNJnUK@O-hit9gqK>}>$8f>nA<&^Uy{7&Rks zcUpPt1L}z1*v6mFw4eRcX*=@UpDg=Q$k#8q6*-G&Gh0@dnA8JM<*N$&u(d7q4vOq^ z!FJI!XryqROc{J=e{Abt&O@mP10MB0MBPOtaY zay#lTujR6=ufLup`|~Sq|KwEIC{~p7D2@08>`FpiOs1Zibs3d6ZXyh;WKRg0cFvz@tSy6(SqJM5S3 zuz#Pz7quQdq?LzkUHuj;GPC`@WhoG=@=yxH4*(hws6=N0n?IzNl^qv^?0JO;-m#v| zLoHOG!;_W9BtiYr&0a=Px2MqF&4rDPc|Yp!c)PCqr(Mt5smIgh_Yzp5+tBqfRE2Up zHb5QPr}AHX1@Vh#DU7L#45}CK&frzXbviC=6xHmR0~DPHc*69HM6-{0pBKPop1t^` zTt>9B0lLeS(E-&z;r0#LufKkuk^f(I#SCedv6d^fCVM!HMS}!U5jCp{9VSWFBTJL< zJ5v>|?095j+@PIP5XAOQzDhET<={T&CX+`&ynhR3ok4IAZK%EIy`uWrFg&~o+Rx_~ z>hbsXAr5wZx*m7Iwkm@l>gULAks|~p zI-WHe0PW7VSSFEqkzQ4hs_Ljeq#XGfX3{|2-aNF8Bn!Fzh3$BsuLu6T{{H^wf7@x# zcb@g&Ax*QkERH1oVc#=p8cK*CEP2C(qs}EuHch^45|m&JV4NyrNK#)hod>uQEd(r` z2JuGW?ky|V5(ighM$-RDyOtfvaU2L3kODsOI=~+1FkjHKgRcMouQjQMNql4N=%@g*FW?6xJ++Jw@Kn= zCP(9ml8NQoL1Zo%JF=TBzvUZP%qG zy+QrsiR?mHEaz83oAq!mNR<+};8wV4TS~^L(Et>gQWNd8G=EbtO&LJlJK|jM1SU48 zz%H*(w-A<(EiEgYhZ_H#n!cOB}svJ z6ZVGe-)y-R86@>9>0CgL?0TjJslw$3plUBc){J~&>AoC&eDbbyQ9V2Z(66)MLjL0^ z0{ipl`u_;trIr!#)jq2u3%UcA3^|Y$9U(}Ox=F&DG2tU)N;DK<|HX8W0NU+LOxNJ% zS>I@5vhFwIG}u?FM_zAxfl~(Ugc8a+1H_gamTk|tDD2}5T4cPRAJc{BJ zHdD^hQugPa^Q*RJm-|GBvt>vK@}U#CJT9FB$G7CtDhcXy%BBV6Q%_A*+LNT6M&R@D z#1ZU07ZPPsOBiTT?)(DSca5!T)Z5jbs?`-n)n<9hE~ODu#@mFB0pFcPFLe!Y5ATT9 z!<(&-vsfb@-ACpMk)iQ z{_zOS5#1i%?T4EqjbQ&B#AEcMjyuhXc+cP?kFO=b+@ZbiYR^aTcjPZO@_z^I@4PWn z-dLt+0U4%bv?eXM<4phiCM1Wj(s%^e2O9$=pELkkOGn4f=(9E(SRhmf`R@-g%TDcq zw`KIDLa=`u)Dnsjr*8q+(=TqAnYoSVxYn@|(64gcVFcY)VkuJruU zZ;bx!q;0W%m50*L4{{o-(Up&mbZ02ig1hd)eYSXW_zjdlI(`Q-UqS3j_4dP4Z7+nn z6Ic)SXj1CP-o6jNQe8b@LGF0mx3i^P4`D%j;PpzSpGsHg`v&2>-lcc7mT6J&)(M_9 z08!9Px;mD3ab_`_4SQ_F-H=Jp&%)TVe)OXr{l(idas_)lq3bB+o;r0%-+4o!a8epD<(Vgx zr+}g8<>0}d%xI`9dUj%U>?YRUHR+x?_bR*$*-4=>~#iqi;<>Uz(fSlCZHW!(W~c%D{7CNCxEuHWz+J&2)?XaBXNLcVhGJ~uth0T zeah;G?yWRk|6pgRPlE~fu7K$?f;N8C^SJLA;5xGFp2i^1`bPEu<`vnme4`x|8rhee zeMj~fXE2a`eH*pZgtSwAJ>0n)iEW+>>liKR9lh#HD@nl zvruXfpZ#g`ZA7pa%d0WT^70zBL08=mdI{n z&De7GYU6kiySylB9rL zTW2I>rIAp}5;9?ZlOwyzmsA@*+f9kZ(o^3jvPaN1LDnQ$Zb-HJww|-k>pQal_y_`u z?9t0Hk-fz|&O80Dor!E0ycOhu?1*4L^c1nTl>IABEreD6yXoXs1rd!5nLUf_7?2&Y z$(R`>6NbI8F+5E}-V>t7hnS*>b7&Wn)@iQ-pqL9M@~|Phrw(PL<_~1=!5B2n$l1qZ zIvZm*r|#v`ABOBR1MfLIc4Tj_8Hst*A^;0f9}Cj44|tRvsrC)BBg-9mw`7)XBpFlE zGV*So#GIG8HfHxWG$n_ZLejkP$dZIiTl9Vf?RCZW*cg z6WKe6Ph_`=?1PQzkMVC0_R~I*{lTp)#LSKCeYt4J?kA9k`*`t@v)frsY!=DcPwOfw z+_#pvImr6MfP$NA`^KZIXiAPrZX`$JRX1VIs3|*x14>v($QCixm=8+cghG4 zWcSwtx2Bc-Ynj17lEN6>kiKObd51<)+5Obuh>w1+FscD!(AKsJ*p(_AY$O-BC(oPw zK+FxNo+*MB*>QN2(og4j0@=%k?C5Dso$y}Q zgARxRPC7;}3g6jexCq8mhSfw}8=IYrX?sO|bd*3sUG1j~RNV6y4r9(g! zfLXMDW4K|=8qlQGm4-r1P8^SpNl_aag6ovLpl8gFzXdp)&7Ng~-x8(2*G1+W&deAGE#s`)IH z%(v;q)JF2`Y>`v)M#YpPlL>G7E8SSTu`(YC`75yhU(i18A9z^@vPY~}OOd^SxX9TD zvNy%!;MsR%A8btH6zkXyEQeZ<-4*rqtdE>M4nhb=4nh*xb;_Q%_3E^MRmc>{=wB5l@bM{a?)(>R2iR`n2IyoLtWS>;f+0A7pvNzSGQicj)hy9C`-PlP) z3>)kn*`eNtC9M&{osj^$$(&v3-Lkn+V5}z8m}uUBXj*WyPc&0TsJxVHy5B}6?cEx~ z19mD=;C0iO>WC+@PpR#io*&Qj`ZH%QwGBVDj_gGt`&eKW3V%oTAVX_o@yBZ~{ogbd zHYqs#YEFrqL<-`PlrI-K6$k3J0@DvsX7QvgFD+t;vn^r+{#VCxgvZB5UQzE>q|O!283e>Qn<2r8XVQ91iyV;;!f zYDryg9F2U%>qsqC@A8{+ARk4SSpb<%+4&?H+fq$HJGcc3W z&x!1%n`r#@j;7ELpBb`uvCU`B-n|O8j*`|*(hVZ@C^|-|nC>4lBo3O!>!=1lD}nZur~dVEKi>1{Z)+otIi>P-80ybR@rf(z-$?%j61`}5h% z(b5>KQub0nkUdiKVuyJn_VG_-F%gnSsn@@wBYXYK*&n-ur5Nj-8qqlteH%VowbXO% z(yMY5-D{J=i;h56fOuZ>jYSFXqELgmiDm3YAns=sX}DJN&l$2C-b^dDuFww#Q8BSb z8VEMiAS%H&TE^Ps1?3E#Vnd$%0 zl`}2N_XckdcASIrKMJ*BVKqBI**+&e8o8~WWokdrK!u)jt&A#|GWa z$PP7;R5``(^UsV=iL(UQ4SH;Emb1S)G0GlsBCcT%#Nk0%@)L3yg|Ft$>>g4y}8K7of$DPvy_d2ntZ1EIfPzDd8yMk zlXM~)V+hj*_&tg#g$40x-`CFb&c!d}JUxGJo7N|?cfI1gdfgjjO(ZO3xPq1YH!quOcZWfn+;d-pofeDYCpT z^&?Unqb8s2rF)Z0B3W|S%mt}`=H3?nqwH*!8%K^H9DxX+0;ha{J^JA5US_=3y#ITd z-3@{yI==+1i#48EN}?LoRayCCUfc(05}KZTf-X=X-CIfqZyw6J}qd8Kyq~ilV!#7LR95h!PcopMyzP%tKX%9$k4Rx`}$tl2L)_&(d&Cijw$vR3EcHUjIJBCohM3UY<$22{wYGhd-NurLI+hE`g{WvUpA zYc!}TQkmQGXthTkM@21#`vY*@pt7^>kBzb^!SDRjzUw6bRo_|aS=rB?ePjy^B&9tK z%TbtHXFzJq1x8fI)%LXV2@a`dOkRv!ajdAyr-T0ZGR?HdVy{b=K395 zu@C$gcEXW1PiO>_w8ZL@9C>cs1;Avt9KGL~%=i_VH_N!oU?+bclL7H98guhQz4z>= zc4&0S`yfDeJY?BM|FMtSJ8Ji~J=^c+ai6%%{i7fD!P9Ec_&P9`>$~|f2i8d7)9WvL z9@DWw9lL;!HfLYtnHAp%bE)sR!5^Wrhg(2&_^GrruRDfpfAHD=zE*Y%a>$lP(AC&QP+EOfB9%F{y`vEVB{hKH7m>DEn{AdP})|(D~Oys!$GVN znd8w9SJ`h|{)q4H7(I~URnD|Ce&3^EvvR4dY^DZ;qEs}fod3AMD*d3b+xDS3sY$l=tp;ok2 zRiTZ%i%+#Ur`-Lq94_nY5nOrzCDLUe|9JhQypQ9)zbE#NPqyC0biR3alIfXBAII=H zUq1VnOMSS!jRJS8Fq`+#gaUj5l+U`Hr|b|*=N z-IjKd*%U_Uh!=mNrkx+LE0$&Mk4JG|K3WA!#+a|W-q9bQzQgGK-!>}yujQcdHs<;0 zvCo%1=gXsixv(vW9$R(e^=~=aUln#?_n*Rt6h!k0jqyw+;(}ErBjEQxO_g0YGjJs7 zC|KU5%0BD&!~|ozedBsk7=-GuE#qA%*#X3nAl}ROtEL}Yqt{}&wA{IarxI0Q14nBdO(q1N11+Ggmi3*D6nG4;5eY}D?hI4n98oruC^>=|vRRrL+3?Jk-ARNRj1kDJ z&8z$rtpgNVQX)YX#IVRypk4EJ1obX@O{$Oovn%o%V81oBQ$ru0J^O&x-=@-wZ5gN9 z-`LSrVPS`8IX}v~RXMV*y|}L`lT`!TkLY5wBe=ZKO!1ZHcwy3)clk(rx+KLaN`Lg> zyj~~m-&1T!^SZ@e?)A;u?fC)?n%|zijK+NWXE^U_>|}>m#whD88?SF+%h2vT(txJ) zZWQ&0PxqLyQ0M_IyQ;nmw=GTp$|jGXgeFTZ_Kiv8%9{;-RRwEw58U{+0Q64fw7ofr zl1?qV3f~v@*;n$)eLDWdGP?H$t~~mcU(dt7wBy~?NS%JrPWh{-%e09eX;9!WLjUTT z6|<>Ur6hx!m1|*dlPVmz$XnM4Z{(n= zOc|xY-@dIBSQA@z-P{%hDMG=;*L$tt4-XfkwL}oNcq}Rh;fjc8%CT0Vuv;beeZj{vJyYjIXxm>u*B<^61c; zwzMDiZWBBnfq|-PVz44Q`Uwe+@ z{v=O2%73vWMxg<;mNB?|v0V_kfrGiJi_HbuybP>EG6|YX|KGw+XpAR%Q>lYR-F4rR zg3kQULNFwRoK}cTb$y`c6og!7v$6%2$gFTX+nsL9-a48gWI8Mi774{%w|2-_+9B$B zR)Ny|LZuy6ct*8a<@r_a8~3=;ZQ6zBxXs~=w>bMZrcOv*ap)j4?UV+qZ-!FT5IE7y z^&5r4uEMl)^rf-T_Xne2J%iw%L(0^JrE9m~y{={bmr^;TA?zP~uk869(Q^dnF`iW1 zW8>}d3N5R`79B4F%Zr)N7Jie$ z`)2I?pUxHN6KR)6kJR2}U#ttG=@AXmfHMws_oDZTGs|%v!kn*A}g< znK{HEMd9AGv@c*}OW=JqJiiTP2Q*oMg(mF8kw7<^@ai*siL8nKw^ zSAzpd^r+^^-cAAG#x6*|o-u(keV(73FlbvAjPdhs>tcRAqnXzI@HDL_mB2cFfP~AN z%=x+-F4Ov|F~iu;xjlBoqeHkqRqP5m?Vi2Xjd!fva4B)lM@KoL8vxz;rA0JC+JhpY|GSZpOuy=sn$mPm=tWn)9$ly{^oVRfv4j^g*_%5c$mRo(GD!OmA%j+6qqt)scht1987kgw8JDsCJeCikX6DklN~^v zkj-jMS3d{V*0NWZK#khI)@cvvdbD}=Fo`6gnT_jj3Ues3@P#~QSmu?Rw&(3Ib80PV z7BW@^;4AyacrYe2LES8tvm*VgirN8XBBkJ3RUpI7A!Ze}PdAgg+;6DB$*?gVfBGlS z!@fMTlRQR9%e1<>!wPQSu>P)FQldejbjOVW9L>6e7cIZOEbJF@fEjg`cfO~?A1_BZ`;8s9VVQojxw)+#h6d)})It?v z@R@SlTp5}l#psC9etAmMbTnEQ^UrVv+qYp=u%GEo#%Do5^a_h7+rSVu5DSiQzu-6? zb{_EWJiJ$i`RKDSs2xVjz3~tH1~t7UA(hHLdAA!cSo@YdVI8Vnh0;!%^Qw7eqfpq3 zIcNpL`So%8^>jxXNc-XQcz8w@_Ev$o?>HY)}G|0TGng;2?xX({H*t4l+^nXX6?+|f8Sg7A;3FK zXu6SrhVlAMW%o~fbUhTe#H0>pHuT+6$G$bb@XPxLxI9pdwxlb>j5k#_X2$U-;sR9_ z;yr}#UTh4BDpsDdljJebvWvbe6|+eRuDi7|J3m^>{%3qsufslC_*GQdE2Osg=O0NP z1xU$Pl|60usk8@$UX%*}1dogW_c%^ll^KmGr(KK-RKb^4MaM1O5H<6nm7G>fv`>od z(I;+=dRw?Qztp-t4*R2x`F(t?!|it;6!vvhyzYwqrmeXELPsf`LTPLj?v**X7Xkk} zAy}yFIMLX`{(hiIg9s7k{S^m5SmcERqUjZD&S}1RHk}$!5 z#>_XKkh1KBs{XkbgVnUPW!VK^ElA16%Oq5Gw|P+5Ap3+&COwqTS@(~A^g|Jr_M5_< zXwZa9t0-@$C@k>!e0vWm?NPtm`lQFKXHQe!h?p(NbFKj6?0&e$Oc*BI6mr$-&Mchy z^(EX52_U7r!VYK*v4x7rrU=QiaT1xzM`L7>g_qq~I1B~<>w=n{uQ6`gr%L)5MSp&N ze(&A4w+obpMsMx5)eVW-Z|3cbuKiYXBSmmNEZN^zSI>PE|eP@1QPt+l*~ zxnMVWR`$OqG{$43jwB$)yTafi;w2V@nW&Izfw-o4wZ@@&S4<{Vc4E!=n4fLi50TPw z*oT6nANCHruSfhBZWRoP&ALwm$Oyd&!IGSn8fi@mrM>28hP?iE(+e39BPm>8S9V|8 zL5L+Jmvdqj>79|bC*Tdx-d6K!O|c#tHW$t(Ofs3O;lBNDz~kQBGxoKP`1Qw`U)mCN zSZyr(3aGDhV#U={UZs0ZE6uVl9m)NOFsa+ok_-D>uF=WC#{K%MOKF2jl;x0gDgSnR z&O@SUDfNd&$*Z6xy53~OH`A5!!Yo1g4HJ&G^;Xz_j>FzoNKL4;x3k@`_NUeFvhV55 zn5mTt&jp=FpTWbBw>5BU_aVFPnP2^|uZz%T8qjfn zV^)rAaGxmmAb_L6%UFb(cZt4DR)RIAOfCCw-hL3S>`JBL^VBIw2I`)xV%x$BuExRC z#u6Sh?baQ`#xKe!S4eiH#~QcCq3%gaZ75aGv>SPMEk3nl?T03{t2iPX#NF=b`C?<% z1id@;AQfEpl5mh5T#)-!7{%iAAuj`3bgGCw`~9Bhf0UhFavMhygd-3EWZ)?eu@5|f zc4Mvk-)pC5Kmwf3FMC#2*fJ^01kqDnm6bnC=yzGs8}A_tqc`J2& z87?j})VXyr|J}Qo?NpBtCBF~*7*0n#0Y}^QEFI?jIkDci_aL=0wU%9wM43pvG=tX>+e<3e z1vEw+-bz{`YS{t$HZ@I*C%S<#4tow~UO(`fijQ)@oz%k>k6&$L=+JFEcj@WjYx+Ly z_XCGK4*T8YgVswszgvkx7hbDp<$6jyXmoZjz!-F)q)yQ|KxeRv#%lD7Cwjx_~QL1VHPE3aw=R!4m90GLF_G@eqZjLOA4?zmzdeq_ zetR~l9ToN!8ski>i7JpNfOp-gi(t{f%vPa^NMOafF73|m?&sGP{Mpr33c;t$#fZU$ zxJIM3dLCz)W0gnwbkRniDkh&=R+SJ#$lA|;w-xrG+xX8w9-sEn#vD|E{jeXc%pOqi zfycDqle`3B0$64{q94?(tnD%FGkBYc;3UL@mfyvyTEQ>43P}?h1N4PzeMl2+aOa84 zxeNPB0EzN&Ca{xDkBHMe7WD~POyRs?|5e!UkNvP8<@`1f#zU01JDT425Q4En-I|)m z^Ddz8uZVMn8sn1Gwld!0{a?OdGnUp0d(`H9MT_GjXSxr>!1<5PtbOWC; zST+Th(V4sQ>qTsx`rr!udykvBkDs@Zk$2lB)nQe={oKQpcE@(#pEu>S8^8l|(@rb> zTz#7Hmdi~KXkYF~iT~lKUzXJ(vBN?)2LAkJGe`%!e!

OtQL`#)8)X1rC!rWB}{ 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 P00000NkvXXu0mjfV93Hi diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/lesson.adoc b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/lesson.adoc deleted file mode 100644 index 082fd0446..000000000 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/lesson.adoc +++ /dev/null @@ -1,183 +0,0 @@ -= Vectors -:type: lesson -:order: 3 -:slides: true - -// added by martin - -[.slide.col-2] -== What is a Vector? - -[.col] -==== -Vectors are simply a list of numbers. - -The vector `[1, 2, 3]` is a list of three numbers and could represent a point in three-dimensional space. - -You can use vectors to represent many different types of data, including text, images, and audio. -==== - -[.col] -image::images/3d-vector.svg["A diagram showing a 3d representation of the x,y,z coordinates 1,1,1 and 1,2,3", width=95%] - -[.slide.col-40-60] -== Vectors in the Real World - -[.col] -==== -* 3D space -* Navigation -* Calculations with external forces -* And many other uses! -==== - -[.col] -image::images/vector-airplane.png["a diagram showing an airplane in 3D space, with vectors representing its position and direction", width=65%] - -[.slide.col-2] -== What are embeddings? - -_Embeddings are numerical translations of data objects, for example images, text, or audio, represented as vectors. -This way, LLM algorithms will be able to compare two different text paragraphs by comparing their numerical representations._ - -[.col] -==== -* A type of data compression -* Transform messy data into compact format -* Numeric vectors with 100s or 1000s of elements -==== - -[.slide] -== "apple" - -You can use an embedding model to turn words and phrases into vectors: - -[source] ----- -[ -include::apple-embedding.adoc[lines=1..10] -, ...] ----- - - -[.slide] -== Similarity Search - -Semantic search aims to understand search phrases' intent and contextual meaning. - -Are you searching about the fruit, the tech company, or something else? - -image::images/Apple-tech-or-fruit.png[A diagram showing the different meanings for the word "apple"] - -[.slide.discrete.col-2] -== Similarity Search - -[.col] -==== -You can use the _distance_ or _angle_ between vectors to find similar data. - -Words with similar meanings or contexts will have vectors that are close together, while unrelated words will be farther apart. -==== - -[.col] -image::images/vector-distance.svg[A 3 dimensional chart illustrating the distance between vectors. The vectors are for the words "apple" and "fruit", width=90%] - -[.slide] - -[.slide.col-2] -== Knowledge Graphs and Vectors - -[.col] -==== -Vectors and embeddings can be used to facilitate similarity search in knowledge graphs. -==== - -[.col] -image::images/document-chunk-data-model.svg[A graph data model showing the relationship between chunks that have embeddings, the documents, and the company they relate to.] - -[.slide] -== Create embeddings - -You can use Cypher to create an embedding for a chunk of text: - -[source, cypher] ----- -WITH genai.vector.encode( - "Create an embedding for this text", - "OpenAI", - { token: "sk-..." }) AS embedding -RETURN embedding ----- - -[.transcript-only] -==== -[IMPORTANT] -.OpenAI API Key -===== -You need to replace `sk-...` with your OpenAI API key. -===== -==== - -[.slide] -== Search a vector index - -You can search a vector index to find similar chunks of text. - -[source, cypher] ----- -WITH genai.vector.encode( - "What is the latest with Apple Inc?", - "OpenAI", - { token: "sk-..." }) AS embedding -CALL db.index.vector.queryNodes('chunkEmbeddings', 6, embedding) -YIELD node, score -RETURN node.text, score ----- - -[.slide.discrete] -== Traverse the graph - -From the results of the vector search, you can traverse the graph to find related entities: - -[source, cypher] ----- -WITH genai.vector.encode( - "Whats the latest with Apple Inc?", - "OpenAI", - { token: "sk-..." }) AS embedding -CALL db.index.vector.queryNodes('chunkEmbeddings', 6, embedding) -YIELD node, score -MATCH (node)<-[:FROM_CHUNK]-(entity) -RETURN node.text, score, collect(entity.name) AS entities ----- - -read::Continue[] - - -[.summary] -== Summary - -In this lesson, you learned about vectors and embeddings for semantic search: - -**Key Concepts:** - -- Vectors are numerical representations that enable semantic similarity search -- Embeddings transform text into high-dimensional vectors that capture meaning and context -- Neo4j can store vectors alongside graph data for hybrid retrieval -- Vector indexes enable fast similarity search across large document collections - -**Practical Applications:** - -- Create embeddings for text chunks using OpenAI's embedding API -- Store embeddings in Neo4j with vector indexes for efficient search -- Combine vector similarity with graph traversal for contextual retrieval -- Use semantic search to find relevant content even when exact keywords don't match - -**What You Can Do:** - -- Search for similar content based on meaning, not just keywords -- Find relevant document chunks that relate to your query semantically -- Traverse from retrieved chunks to related entities in the knowledge graph -- Enable more intelligent, context-aware search capabilities - -In the next module, you will learn how to build different types of retrievers that combine vector search with graph traversal for powerful GraphRAG applications. diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc new file mode 100644 index 000000000..f7bdc1ebd --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc @@ -0,0 +1,92 @@ += GraphRAG for Python +:order: 1 +:type: lesson +:branch: new-workshop +:repository-dir-name: workshop-genai2 + +The link:https://neo4j.com/docs/neo4j-graphrag-python/current/[GraphRAG for Python^] package (`neo4j-graphrag`) allows you to access Neo4j Generative AI functions including: + +- Retrievers +- GraphRAG pipelines +- Knowledge graph construction + +The purpose is to provide a first party package to developers, where Neo4j can guarantee long term commitment and maintenance as well as being fast to ship new features and high performing patterns and methods. + +You will use the `neo4j-graphrag` package to create a knowledge graph, retrievers and implement simple applications that use GraphRAG to provide context to LLM queries. + +You must set up a development environment to run the code examples and exercises. + +include::../../../../../../shared/courses/codespace/get-started.adoc[] + +[%collapsible] +.Develop on your local machine +==== +You will need link:https://python.org[Python] installed and the ability to install packages using `pip`. + +You may want to set up a virtual environment using link:https://docs.python.org/3/library/venv.html[`venv`^] or link:https://virtualenv.pypa.io/en/latest/[`virtualenv`^] to keep your dependencies separate from other projects. + +Clone the link:{repository-link}[github.com/neo4j-graphacademy/{repository-dir-name}] repository: + +[source,bash] +[subs="verbatim,attributes"] +---- +git clone https://github.com/neo4j-graphacademy/{repository-dir-name} +---- + +Install the required packages using `pip`: + +[source,bash] +[subs="verbatim,attributes"] +---- +cd neo4j-graphacademy/{repository-dir-name} +pip install -r requirements.txt +---- + +You do not need to create a Neo4j database as you will use the provided sandbox instance. + +The sandbox uses Neo4j's GenAI functions, you can find out more about how to configure them in the link:https://neo4j.com/docs/cypher-manual/current/genai-integrations/[Neo4j GenAI integration documentation^]. +==== + +== Setup the environment + +Create a copy of the `.env.example` file and name it `.env`. +Fill in the required values. + +[source] +[subs="verbatim,attributes"] +.Create a .env file +---- +OPENAI_API_KEY="sk-..." +NEO4J_URI="{instance-scheme}://{instance-ip}:{instance-boltPort}" +NEO4J_USERNAME="{instance-username}" +NEO4J_PASSWORD="{instance-password}" +NEO4J_DATABASE="{instance-database}" +---- + +Add your Open AI API key (`OPENAI_API_KEY`), which you can get from link:https://platform.openai.com[platform.openai.com^]. + +// Update the Neo4j sandbox connection details: + +// NEO4J_URI:: [copy]#{instance-scheme}://{instance-ip}:{instance-boltPort}# +// NEO4J_USERNAME:: [copy]#{instance-username}# +// NEO4J_PASSWORD:: [copy]#{instance-password}# +// NEO4J_DATABASE:: [copy]#{instance-database}# + +== Test your setup + +You can test your setup by running `test_environment.py` - this will attempt to connect to the Neo4j sandbox and the OpenAI API. + +You will see an `OK` message if you have set up your environment correctly. If any tests fail, check the contents of the `.env` file. + +== Continue + +When you are ready, you can move on to the next task. + +read::Success - let's get started![] + +[.summary] +== Summary + +You have setup your environment and are ready to start coding. + +In the next module, you will use the `neo4j-graphrag` package to create a knowledge graph from structured and unstructured data using an LLM. diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/llms.txt b/asciidoc/courses/workshop-genai/modules/1-generative-ai/llms.txt deleted file mode 100644 index 8232c80b0..000000000 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/llms.txt +++ /dev/null @@ -1,129 +0,0 @@ -# Module 1: Generative AI - -## Learning Objectives: - -- Recap some key concepts -- Explore a knowledge graph of structured and unstructured data -- Search the graph using embeddings and vector indexes - -## Key Concepts Covered: - -### Lesson 1: What is Generative AI - -- **Generative AI** creates new content (text, images, audio, code) using patterns learned from training data but lacks true understanding. -- **Large Language Models (LLMs)** generate probabilistic responses based on statistical patterns. -- **Knowledge Graphs** organize interrelated data using nodes, relationships, and properties. -- **Cypher** is a powerful query language for graph data. -- **Retrieval Augmented Generation (RAG)** combines LLMs with external data retrieval for accurate responses, enhanced by Knowledge Graphs for structured, relationship-aware retrieval. - -### Lesson 2: Building a Graph - -- **Traditional RAG Limitations**: Blind to context, treats data as isolated chunks, lacks domain understanding. -- **GraphRAG Solution**: Extract structured entities and relationships from unstructured PDF documents to create a knowledge graph. -- **Transformation Process**: - - Extract text from PDFs. - - Chunk text into semantically meaningful units. - - Use schema-driven AI prompts to extract entities and relationships. - - Store structured data in Neo4j. -- **Structured Data Integration**: Combines unstructured PDF data with structured CSV data for a complete knowledge graph. - -Code to create a knowledge graph from PDF: - -```python -## Building Knowledge Graphs from Unstructured Data - -The code used to build the knowledge graph from unstructured data. - -```python -# Example of SimpleKGPipeline for extracting structured data from PDFs -from neo4j_graphrag.experimental.pipeline.kg_builder import SimpleKGPipeline - -# Define entity schema for extraction -entities = { - "Company": ["name", "industry"], - "Executive": ["name", "title"], - "Product": ["name", "description"], - "FinancialMetric": ["name", "value", "period"], - "RiskFactor": ["name", "description"], - "StockType": ["type", "class"], - "Transaction": ["type", "amount", "date"], - "TimePeriod": ["start_date", "end_date"] -} - -# Define relationship schema -relations = [ - "Company HAS_METRIC FinancialMetric", - "Company FACES_RISK RiskFactor", - "Company ISSUED_STOCK StockType", - "Company MENTIONS Product", - "Executive WORKS_FOR Company" -] - -# Create and configure extraction pipeline -pipeline = SimpleKGPipeline( - driver=driver, # Neo4j connection - llm=llm, # OpenAI LLM for extraction - embedder=embedder, # OpenAI embeddings - entities=entities, # Entity schema definition - relations=relations, # Relationship schema - enforce_schema="STRICT", # Enforce strict schema compliance - prompt_template=custom_prompt_template # Custom extraction prompts -) - -# Process PDF documents to build knowledge graph -pdf_documents = [ - "apple-10K-2023.pdf", - "microsoft-10K-2023.pdf", - "amazon-10K-2023.pdf" -] - -# Extract entities and relationships from each document -for pdf_file in pdf_documents: - pipeline.run(file_path=pdf_file) -``` - -### Lesson 3: Vectors - -- **Vectors**: Numerical representations of data (e.g., `[1, 2, 3]`) used for semantic similarity search. -- **Embeddings**: High-dimensional vectors that capture meaning and context, enabling semantic search. -- **Applications**: - - Create embeddings for text using OpenAI's API. - - Store embeddings in Neo4j for hybrid retrieval. - - Use vector indexes for fast similarity search. - - Combine vector similarity with graph traversal for contextual retrieval. -- **Practical Use**: Search for semantically relevant content, traverse graphs to find related entities, and enable intelligent, context-aware search capabilities. - -Cypher to create an embedding: - -```cypher -WITH genai.vector.encode( - "Create an embedding for this text", - "OpenAI", - { token: "sk-..." }) AS embedding -RETURN embedding -``` - -Cypher to query a vector index: - -```cypher -WITH genai.vector.encode( - "What is the latest with Apple Inc?", - "OpenAI", - { token: "sk-..." }) AS embedding -CALL db.index.vector.queryNodes('chunkEmbeddings', 6, embedding) -YIELD node, score -RETURN node.text, score -``` - -Cypher to traverse the graph around the query result: - -```cypher -WITH genai.vector.encode( - "Whats the latest with Apple Inc?", - "OpenAI", - { token: "sk-..." }) AS embedding -CALL db.index.vector.queryNodes('chunkEmbeddings', 6, embedding) -YIELD node, score -MATCH (node)<-[:FROM_CHUNK]-(e:__Entity__) -RETURN node.text, score, collect(e.name) AS entities -``` diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/module.adoc b/asciidoc/courses/workshop-genai/modules/1-generative-ai/module.adoc index 07821fde6..03a16f7b5 100644 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/module.adoc +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/module.adoc @@ -1,12 +1,19 @@ = Generative AI :order: 1 -Welcome to the Neo4j Generative AI workshop! This hands-on workshop will introduce you to the fundamental concepts Generative AI and GraphRAG. +== Module Overview -In this module, you will: +In this module, you will learn: -* Recap some key concepts -* Explore a knowledge graph of structured and unstructured data -* Search the graph using embeddings and vector indexes +* What Generative AI is and how it works, including: +** What Large Language Models (LLMs) are and how they differ from other AI models. +** The limitations of Generative AI models, including _hallucination_ and _access to data_. +** How providing context can improve the responses from Generative AI models. +* How you can use Retrieval Augmented Generation (RAG) to improve GenerativeAI model responses. +* The benefits of GraphRAG techniques for enhancing information retrieval. +* How knowledge graphs structure data to represent real-world entities and their relationships. + + +If you are ready, let's get going! link:./1-what-is-genai/[Ready? Let's go →, role=btn] diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/1-knowledge-graph-construction/images/neo4j-wiki.png b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/1-knowledge-graph-construction/images/neo4j-wiki.png new file mode 100644 index 0000000000000000000000000000000000000000..ad16f46d1fc1b53060fb937c23b898169028eded GIT binary patch literal 110167 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�SOI$GLOLeiHB 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 literal 0 HcmV?d00001 diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/1-knowledge-graph-construction/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/1-knowledge-graph-construction/lesson.adoc new file mode 100644 index 000000000..148803336 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/1-knowledge-graph-construction/lesson.adoc @@ -0,0 +1,218 @@ += Constructing knowledge graphs +:type: lesson +:order: 1 + +[.slide.discrete] +== Lesson Overview + +In this lesson, you will review the process of constructing knowledge graphs from unstructured text using an LLM. + +[.slide] +== The construction process + +When constructing a knowledge graph from unstructured text, you typically follow these steps: + +. Gather the data +. Chunk the data +. _Vectorize_ the data +. Pass the data to an LLM to extract nodes and relationships +. Use the output to generate the graph + +[.transcript-only] +=== Gather your data sources + +The first step is to gather your unstructured data. +The data can be in the form of text documents, PDFs, publicly available data, or any other source of information. + +Depending on the format, you may need to reformat the data into a format (typically text) that the LLM can process. + +The data sources should contain the information you want to include in your knowledge graph. + +[.transcript-only] +=== Chunk the data + +The next step is to break down the data into _right-sized_ parts. +This process is known as _chunking_. + +The size of the chunks depends on the LLM you are using, the complexity of the data, and what you want to extract from the data. + +You may not need to chunk the data if the LLM can process the entire document at once and it fits your requirements. + +[.transcript-only] +=== Vectorize the data + +Depending on your requirements for querying and searching the data, you may need to create *vector embeddings*. +You can use any embedding model to create embeddings for each data chunk, but the same model must be used for all embeddings. + +Placing these vectors into a link:https://neo4j.com/docs/cypher-manual/current/indexes/semantic-indexes/vector-indexes/[Vector index^] allows you to perform semantic searches, similarity searches, and clustering on the data. + +[TIP] +.Chunking, Vectors, and Similarity Search +You can learn more about how to chunk documents, vectors, similarity search, and embeddings in the GraphAcademy course link:https://graphacademy.neo4j.com/courses/llm-vectors-unstructured/1-introduction/2-semantic-search/[Introduction to Vector Indexes and Unstructured Data^]. + +[.transcript-only] +=== Extract nodes and relationships + +The next step is to pass the unstructured text data to the LLM to extract the nodes and relationships. + +You should provide a suitable prompt that will instruct the LLM to: + +- Identify the entities in the text. +- Extract the relationships between the entities. +- Format the output so you can use it to generate the graph, for example, as JSON or another structured format. + +Optionally, you may also provide additional context or constraints for the extraction, such as the type of entities or relationships you are interested in extracting. + +[.transcript-only] +=== Generate the graph + +Finally, you can use the output from the LLM to generate the graph by creating the nodes and relationships within Neo4j. + +The entity and relationship types would become labels and relationship types in the graph. +The _names_ would be the node and relationship identifiers. + +[.slide.col-40-60] +== Example + +[.col] +==== +If you wanted to construct a knowledge graph based on the link:https://en.wikipedia.org/wiki/Neo4j[Neo4j Wikipedia page^], you would: +==== + +[.col] +image::images/neo4j-wiki.png["A screenshot of the Neo4j wiki page", width=80%] + +[.slide.discrete] +== Gather + +. **Gather** the text from the page. + + Neo4j is a graph database management system (GDBMS) developed by + Neo4j Inc. + + The data elements Neo4j stores are nodes, edges connecting them + and attributes of nodes and edges. Described by its developers + as an ACID-compliant transactional database with native graph + storage and processing... + +[.slide.discrete] +== Chunk +[start=2] +. Split the text into **chunks**. ++ + Neo4j is a graph database management system (GDBMS) developed + by Neo4j Inc. ++ +{sp} ++ + The data elements Neo4j stores are nodes, edges connecting them + and attributes of nodes and edges. ++ +{sp} ++ + Described by its developers as an ACID-compliant transactional + database with native graph storage and processing... + +[.slide.discrete] +== Embeddings +[start=3] +. Generate **embeddings** and **vectors** for each chunk. ++ + [0.21972137987, 0.12345678901, 0.98765432109, ...] ++ +{sp} ++ + [0.34567890123, 0.23456789012, 0.87654321098, ...] ++ +{sp} ++ + [0.45678901234, 0.34567890123, 0.76543210987, ...] + +[.slide.discrete] +== Extract +[start=4] +. **Extract** the entities and relationships using an **LLM**. ++ +Send the text to the LLM with an appropriate prompt, for example: ++ + Your task is to identify the entities and relations requested + with the user prompt from a given text. You must generate the + output in a JSON format containing a list with JSON objects. + + Text: + {text} ++ +Parse the entities and relationships output by the LLM. ++ +[.transcript-only] +==== +[source, json] +---- +{ + "node_types": [ + { + "label": "GraphDatabase", + "properties": [ + { + "name": "Neo4j", "type": "STRING" + } + ] + }, + { + "label": "Company", + "properties": [ + { + "name": "Neo4j Inc", "type": "STRING" + } + ] + }, + { + "label": "Programming Language", + "properties": [ + { + "name": "Java", "type": "STRING" + } + ] + } + ], + "relationship_types": [ + { + "label": "DEVELOPED_BY" + }, + { + "label": "IMPLEMENTED_IN" + } + ], + "patterns": [ + ["Neo4j", "DEVELOPED_BY", "Neo4j Inc"], + ["Neo4j", "IMPLEMENTED_IN", "Java"], + ] +} +---- +==== + +[.slide.discrete] +== Generate +[start=5] +. **Generate** the graph. ++ +Use the data to construct the graph in Neo4j by creating nodes and relationships based on the entities and relationships extracted by the LLM. ++ +[source, cypher, role=noplay nocopy] +.Generate the graph +---- +MERGE (neo4jInc:Company {id: 'Neo4j Inc'}) +MERGE (neo4j:GraphDatabase {id: 'Neo4j'}) +MERGE (java:ProgrammingLanguage {id: 'Java'}) +MERGE (neo4j)-[:DEVELOPED_BY]->(neo4jInc) +MERGE (neo4j)-[:IMPLEMENTED_IN]->(java) +---- + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you learned about how to construct a knowledge graph. + +In the next lesson, you will extract a graph schema from a piece of text and review the results. diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/images/neo4j_graphdatabase.json b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/images/neo4j_graphdatabase.json new file mode 100644 index 000000000..cdd281bf0 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/images/neo4j_graphdatabase.json @@ -0,0 +1,97 @@ +{ + "style": { + "font-family": "sans-serif", + "background-color": "#ffffff", + "background-image": "", + "background-size": "100%", + "node-color": "#ffffff", + "border-width": 4, + "border-color": "#000000", + "radius": 50, + "node-padding": 5, + "node-margin": 2, + "outside-position": "auto", + "node-icon-image": "", + "node-background-image": "", + "icon-position": "inside", + "icon-size": 64, + "caption-position": "inside", + "caption-max-width": 200, + "caption-color": "#000000", + "caption-font-size": 50, + "caption-font-weight": "normal", + "label-position": "inside", + "label-display": "pill", + "label-color": "#000000", + "label-background-color": "#ffffff", + "label-border-color": "#000000", + "label-border-width": 4, + "label-font-size": 40, + "label-padding": 5, + "label-margin": 4, + "directionality": "directed", + "detail-position": "inline", + "detail-orientation": "parallel", + "arrow-width": 5, + "arrow-color": "#000000", + "margin-start": 5, + "margin-end": 5, + "margin-peer": 20, + "attachment-start": "normal", + "attachment-end": "normal", + "relationship-icon-image": "", + "type-color": "#000000", + "type-background-color": "#ffffff", + "type-border-color": "#000000", + "type-border-width": 0, + "type-font-size": 16, + "type-padding": 5, + "property-position": "outside", + "property-alignment": "colon", + "property-color": "#000000", + "property-font-size": 16, + "property-font-weight": "normal" + }, + "nodes": [ + { + "id": "n0", + "position": { + "x": -223, + "y": 0 + }, + "caption": "Neo4j", + "style": { + "radius": 100 + }, + "labels": [ + "GraphDatabase" + ], + "properties": {} + }, + { + "id": "n1", + "position": { + "x": 286.5, + "y": 0 + }, + "caption": "Neo4j", + "style": { + "radius": 100 + }, + "labels": [ + "Company" + ], + "properties": {} + } + ], + "relationships": [ + { + "id": "n0", + "type": "DEVELOPED_BY", + "style": {}, + "properties": {}, + "fromId": "n0", + "toId": "n1" + } + ] +} \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/images/neo4j_graphdatabase.svg b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/images/neo4j_graphdatabase.svg new file mode 100644 index 000000000..73b4ebbf5 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/images/neo4j_graphdatabase.svg @@ -0,0 +1 @@ +DEVELOPED_BYNeo4jGraphDatabaseNeo4jCompany \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/lesson.adoc new file mode 100644 index 000000000..bfe15c839 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/lesson.adoc @@ -0,0 +1,102 @@ += Extracting a schema from text +:type: lesson +:order: 2 +:branch: new-workshop + +[.slide.discrete] +== Overview + +The link:https://neo4j.com/docs/neo4j-graphrag-python/current/[GraphRAG for Python^] package (`neo4j-graphrag`) allows you to access Neo4j Generative AI functions. + +During this course you will use the `neo4j_graphrag` package to build a knowledge graph and retrievers to extract information from the graph using LLMs. + +In this lesson you will review how a graph schema can be extracted from text using an LLM. + +[.slide.discrete] +== Using the SchemaFromTextExtractor + +Open `workshop-genai/extract_schema.py` + +[.transcript-only] +==== +[source, python] +.extract_entities.py +---- +include::{repository-raw}/{branch}/workshop-genai/extract_schema.py[] +---- +==== + +The code uses the `SchemaFromTextExtractor` class to extract a schema from a given text input. + +The extractor: + +. Creates a prompt instructing the LLM to: +.. Identify entities and relationships in any given text +.. Format the output as JSON +. Passes the prompt and text to the LLM for processing +. Parses the JSON response to create a schema object + +[.slide.discrete.col-40-60] +== Output + +[.col] +==== +Given the text, _"Neo4j is a graph database management system (GDBMS) developed by Neo4j Inc."_, a simplified version of the extracted schema would be: +==== + +[.col] +==== +[source,text] +.Extracted Schema +---- +node_types=( + NodeType(label='GraphDatabase), + NodeType(label='Company') +) +relationship_types=( + RelationshipType(label='DEVELOPED_BY'), +) +patterns=( + ('GraphDatabaseManagementSystem', 'DEVELOPED_BY', 'Company') +) +---- +==== + +[.slide.discrete.col-40-60] +== Execute + +[.col] +==== +Run the program and observe the output. You will see a more detailed schema based on the text provided. + +This schema can be used to store the data held within the text. +==== + +[.col] +image::images/neo4j_graphdatabase.svg["a graph schema with a Neo4j GraphDatabase node connected to a Neo4j Inc Company node via a DEVELOPED_BY relationship"] + +[.slide.discrete] +== Experiment + +Experiment with different text inputs to see how the schema extraction varies based on the content provided, for example: + +* "Python is a programming language created by Guido van Rossum." +* "The Eiffel Tower is a wrought-iron lattice tower on the Champ de Mars in Paris, France." +* "Large Language Models (LLMs) are a type of artificial intelligence model designed to understand and generate human-like text." + +[.transcript-only] +==== +When you have experimented with the schema extraction, you can continue. +==== + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you: + +* Learned how to extract a graph schema from unstructured text using an LLM. +* Explored how different text inputs can lead to different schema extractions. + +In the next lesson, you will create a knowledge graph construction pipeline using the `SimpleKGPipeline` class. diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/entities-graph.png b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/entities-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ec1a2703718f30ea346441d21e05e1b573fe3b GIT binary patch literal 61655 zcmeFYbx>W+(l@$rcXxMpcMnboF2UX1cYxr800|y65Q4iq1PJb~K@tcK!R0QV=bZDN zQ}?U->aDu>zq5g2?^!)P-M{YX>6xA#t)ZrXhD?kM005ejqO2AGK%)Qv)CM9v*uuig zjt&0n_1D(()H3s-bai*JwsW+i^z?JJqO|h0vjza)B_|C-^j=ETyKyG(@V4AdK~JkG z=c+9ZUdoTUgW8MH~CiD z*X6FA@nFZx{7QGv+;W_2VP0yo*ik}05uuP_|CUhRiV$f45+N0DW5(WKoKq!WWagHe zyhMC=9B_U}_Wg-wL{)J@zmFPnkt|t)F_`}CKHpT>%N;*mDUix1AOphT9INlGm>I$W z>K1M%Bcq`tBlAynKqaz*62%mIB}u=TzLfilhaghyIjHgJAfNhOVT@dr#u9S5aGKFA zoGNh=E`dUK{l>{HRyjWmhd+ZtOu}8=|slwOXT@2U*Y0i3m zBz?7+DPw*)f_+0t(t&ECb`x;X6wU0d_x;V=Rb4zX^88}zq}2Gz#;iVEEF{dQsBW^F zd_x58>?~Q0f~B*<4(rLCoO%;F+(uuBFBw9f66~8ByxTd&2nqyT{Z&vCSoVYVzrr45PXP>ZNxV)-%YE%QBcw7s;?(69} zuax`?3gq5F@|-q)v=n>~=-NT&Jo~I1v8@=KAzh8wmNO}^^JdeKvTFBoZf#%>=6zvB ziVGx6=5@a8;&1ZfqvNB)b)Lh=U?4Tqz22ygsSnZ{|03~p5Tn*p)u5Ddakrx6 zW#?t*WRvr?^X8@&N2U~Yx3m`4l9m4l3-FT|wXLV8t1t(LkB<+#4-dPGyA21IkdP1u zCpQN-HycR7=Hch;Y39r3>_PL);%^?ZRvs4acCMawF3yzCJk88qygbFIsln%z|CGzxVL)l=B9e{6nDsV-F8)aF%jtS$Vj4xm#Gt zd0RPq()>FMON)Q?clC02{7W563l1wsD<_cD100p>KZaCLQq}lZk7o#M?3`Tx>IH)R zAC#VU*8c<6f5`Uy-c&^Ye1C@$&FnvhkX83bF}V@bR(nSy)(D32|ERTU(g@8!IJe4^J~^3#(^V zAaiy*kPp8#pEx>4p(QJzaBgTE-a;?Bu356&iOwr8jfb3)?f#44%j(cy7+kf&m(O+C##p9 zX3uzX3GnmsaP#r;@N#kT@^JoJe;q4#56~B%xpHx`^Zc#PvtfimbwFs%o;?+0@E2Q9 z8(|rDD>F|QcWoCJM=|PWp(vkw{_C+SIH4@fJk4ayJgq>coZNiETwKE3g4$f1!r*%z zUKUPH;eQD5%udzC($3oN|3>{heJDjideG>Kb{^pPet$LnJ*Qq;x&8g=?~jgle@!Mz z%D<+Cu$jf*DtMTATUq`kC&=sXM;5kb&NfzH{P>5%{ttiL;3lGu12>va^fc^e%149=W2|4~13jcxE zbI|$!@%0Zo{Qo!t$ojv7{IBr+FI@kH>wks7|BCp(-t}L&{#OY6uZaKaUH_lKh5SF8 zDJy3%1M&g4N>Vxmd*C(;-dtHh7I=F8$!-6V47MP-D(ZUx01D3Y9~6+0MF=(`cq*yN zA?%@$A`?+h`)FSR041O#E2ZtbbnwZ~=+*3Pe~!;#?`KAIA*-UVi?5AY>bv*XNT5`+oglzT-?t2gg2t zYF*hGtTKZID>V{IIYT8V*t9vBltdo$wG@6Gb;AICds4fV3!%_p>|FAX_Z|vRLqH}<5I*Yy^ZwsNC0utoenoFuzhSH8=62c|6w9WD zlG3Z$e@MA}w;e%=XpRq?m*IAO(}hSKhcIz{wvJX=LnyEE;CJ4jGzQ`Tj>FC~00VRE z!)1-_>hOofSG3g3V2SWMofKvtD`Jn;4_Cj?q=@WM|PIDvzQCLz@aGRgBJynEf7F!a9i!^*5JJDW3T9QahWIPILr#adu768=qMqJmUhj($4N68OIq7 z0{Lu!=8iHx6I?vkfyAGtzc{%6Hrd#QqGT5tpTqaP7rd&L;w;SnXbvAVl@(-yv)y=v zKy>oM|CXU{+)hs}{Aqy9KDYQEBYppV17{F}Z8eG`K}-F2Up2VmniUS_EU3+3bi`r? zX~a;CS9-G0dHx}?=RtVQ?{62zB?gu|AA;vDbxcfre;<+C?ryqC%`XRUBhm++(&4YH zJ%o<8@J@M znb#Lk_h(hTvP(1g+u<@wF9g)nqr~361t5`?_VGlD=; z?j0x4zgme;z##3rq*18aO9)zcsS)M$aBFVZ*&%r3Zg!VQV?*@z-5T1-uCdRL_0D7Y zQh$?$&7ZMXcNhH#cb8@%Zf}p@1)%UzYMA-qz2=MP27%gAf z+Vwt+850*TT-Ne=1c046a^CZku1ud*{mCF=;i^^k9bHgNsSK)cdz7%seCEed)sTbU zSUud(mpdT&I6L(c&Glfzrj)rR3P|4Sp+_yh``xdp@LH10u6gbfk{4n+K+?g!6 zV_~k6LwunTBlB?q0kAdf6o(e^?rI;+w73*l|3EHLpqx7On>OfbReuyeHRj8luHuKk z9Hn^K`b}~7&izAU$Q_x)&z~@W$-|}sXqoe=Ahea$iIwvU>$lH#b9qPJ3&PBKc|Lx+ zk0FtAbY87Du`*pNeO%ecOY-6$+@?8e6+kQTU|^uyE#q_S?rcUJkdpc|pI}f>9I!C= zzi-gBP?w@|9vqXJ_d4E4k&jpZUF*7kpZH1GY;IoU#C+hL-r4zh6O{mM(l?hwJiFK1fd__P1z0SCK$rH{bJcQK5| zKI1Empd*3fe_8o$++>&=giQ?&497hls^MhTQ`r>0n2ln@4r=t?YkbwlOTG+Qn9nxK zE8r@Nzq6;MJz(Oi6dbDgYxdLNosaF$LO)BvpWz+KKE{UIWaMk+K;A$q8WkV##P|vK z>%lGh7kZr~aL$D`1VL}eCalNm2i1tS2snivCy=v!Dz*!8yKn=NB&mLj+>1qR_XIA?7^S35ip)R(NS zeR5?QCQ|tY=g&Dq7S9wpm*MCie`Ysnel6w;bqEK-mhb!J6@FpxChz2}%|%+KlMdhS zDP!YkII>X+8aDtd5 zaE;pRF>SE3GbKktWCb)TsVf@KueqKbVpLRg0`&I>gZe%YE6y@w5ngv635TS@7*3Qc zehDsB&vE?GYUg9}3x`Ey2~vsR@AEn;%e2zr!%FvaA0B0YVdM(ry1;H(ax`(n=Kxvu z%9aqscqpT9aqM5-ar40(Ij6Pr?Z_~eF-Ut~J9YczSAoH(39#kq3S$4m498CJjAg;q zlREO^WGj?6xdc3L;^t9$LWB>sQNfa7zBcyhT1bLoom4Es>~QH-ls-i2DR}|2BtwYe zi>C#QIR!A3*IL5h3}0Se?BI3b455>FiUY&I0_Zezhl{bnY=*D)ALeWI zT$Ky@6<3>auJ~Qv`KKsXj=YR%c_3Iau4o6O|{ZjFo7BYqNIn|qtQSc+@w zE2YzA$CyF|rQRRUY&^7;+z>!D3i&$kUm+84AR3JNJPEs^Co#ngc_k`mDc2tluckC{ zyQ1X^32*K-ubVYx);tnYRC72% zq+FfZKjeF|=a!1TjT;*YpEx8%JtDJ8|QGzHZHH%4z86=d9DVm?HbXwQ# zBC7ZOENo*HVzrhkreXbV;M3l_c_Qr5${*(@Tl`X)hsV}DOxJXkN|Q<(w*ucD3&v-r zzYgo<$3fc%#P3#IDAH{7tBD?4Nh4W!BfIagUpFaCw&P{kXSwx9P4vuHe^F&T!)k%^4>rrYEa~bEHqiBSDpC&c!kx>*eUaObt!c zLWq;5g5pr}M8uN=Enxzf?@Jr-{rWi5Hshc48!t@diZx4sW+1^uid~t)_K}NA{F3HF zg;>C8+n(O)k~F@^YjLy|Fmnu{$s22|c|3oK8EDZ-bfr{yesy z^tX0NO&j?c%!y4wf^jHLY4;B43*7K?PUJ*Qa9Wb)&O`YtVinSk)RHLdr{r}^H}KHY z`nHV*3(Ta8X+vokyg74kiG?Mm3){Bp3N1Z{F81y?b~4Zhmgw21EC>;yH=qUI#M+Hb zQMVW^GMFIY z8OL%42cj@nkHEUIyfpJX&6DV;n6KJ_rZ+;$o&7FBAo*3vE%{I|VK?gHA}eCMdlPsI zRfWkp-(z1idfC;j+`bN`zdl?Re2^kOlR){H@z5E}Xz4s@2fVW+0^q{PSXCk{``s^m z+FH>VeN5(<3B7{rK|zBM~TC zR__Axq@%}`o3kOpVizghrm~(Wd(@Mzr-}#)P~F|#YQ%9{I&0HrK z@BTz^+tB2MFzu}f#hs6OlYhI0>ykRGK)}?{xc-@gFm8su@~Na7k>UIr$MpUpBG&lw ziz7^MWgIWBzt>uW%y@@qj#<+bQPUTA@v$Cac17h6wz$lju_tnqkjKQTKRZ%ptENLq zQSUS0HmM1PmL4(n5@5DqFpsR{5@Wv7=?(DswtkJ*^srg(go3>1x+MSn#{p=AYAcM@ zR(TQgP}c#U$?sHiADrtd2&MVD4!&x}l4f7YursHGSv3*{W;*IL5X~>@(E1mUQ&;C0 zEuWXKG^$+g6Q_)h+5K{+t3`7)lme3ov^IgF-a`1?lKJPZ(Ld6QMd49VQMYPm2JrD| zpBJkQO$kLBsxvRsiuH~a<6?vA+Z+}Ty=V7|L?SpB(B%Uly7oF-k&Cw>0YX#W7dKer zoNm+*_}K<_sKGj0o`t(v-KY1U+F{{N9x%M~qfAr7z2A2KShPe2v%D}8oI=$cKqPZ; z`J(zs#ku0=ruHG!5QhV9nNI1ZyI*UyT&EiHmb|>$5_<9-CnG->JO5P~0XdJA^T*xzjIVlW$2v#cbSwmsqfU%#TzQNJCMb#Q|D zF0jdjs-*+Gl#NDFuy!qj(JR-1VQ@&qwpsAOn#9P5WxqxfKr=3+LXQl&~(xK@kFJC5sj=>OPLkMvb-ut$IHFH z+}E@q07x?V>t_mg+wF4rFjO87?%~6~h6ea^Z-E6om&Rk56K%hF!ykit-@=)QZ`nD; z&GW@&${z%D<}dC(7wrOrLZpO(h$>RBkGgp4J#O&3&A4>NToQkLq80O)Ib*dY>}v9_S&Qxr8s{OnemiiR#uq&MF@r1-}R+p8iC6=o|cR#Cu05)+e) zuz$l?SD%)g%~bMCL_jQncg(5&M>B3;W@#<0e5O^91i6+rc;FS#>Tk=xRuHoWvn-1r zxJlflFJp*{{BVxVi{$#{2E;QTcZXx(Y4&f*n7Gt^S7H26j9ZczW~pd+etOZbX{~k8SB^emc0~g6 zq-dz5x#@Q-8tU*BoqaiMz)6R7nLzG5uTj;8NVMXndtQ3L`#_BBhqo%81OOL`IsQI7 z71m{D)E{ZBd+i@1X&g|LmYx@`F#Wi(Qq^j6OlD>{bF{Q7t4`R$I39Kb{bwpY<_bq% z$f9`R1He7(#@A1#E=rBdhfAFq_EnyH%ewZl%jQ5kuI=nP**Yhm7awF6sCr7bskm_U z=~T@O{&bIn=V_N*WlSKLrR@T- z%aG0ewlumR%+0+d7l((>o~E(pMF1|T1%r4p4Dwh9@Y7K&nSLE>wKnRyUUL?9b1fou z{5-DiW=wN!zoo}qE^mLgLLI%EQx|j z?!fIivhtzS=TJ`v0a52k*56cMAR8MSUq0Au2`Du;!c3-uQyluleIc!Q%)kSs=_280 z%UnL*?+lV62WZJRsJNIfXSg_Y-8Uc^r}?VmBSdhn_e7ajItT?-o_5Y6sZ;8y^OIVb z%%@%p^1RovOK{VR@Q^e(E|mI&XLtReQy^tjoMm4}f27i9`e`XADM^bI+b%=~OJbj! zsavCsk(Rq9XU@^~7eNwsQT8iN{0gJR!POlu{30UM_us?Q8G9U`@*WcAqM*miQY?39 z0YQh4^3aFn=vTjLnwFRdletM9bncePKZv7A}D}O_KRX)*I(r^FOW4_bTZOaafNfn#ptOm_=!g*T& z#S2i4YRfyyaS#|UTC$Eme(^R#M>HOP*y)mZRbXf`IuQhnBt_wu6j?)&H-*0$y@@fMWr^_{qs--`eq2N=6JQdl*T8cYlJP#0PSp5`1W2 z$SgKpj4O3}&^noTthS|(pxu0c%ahXH5|By27eKH}0@ z`#Sr8_K#6LQWtrd{K=m-{HQDr#G-@BdN~KhS24;i#^S@6-W2oE1Xk-jN;8*FLb=Ncyi4@p z{VXo6>^iZFWZ7noJ+3cqN-tTTF(>AAiNYr{*tiW@gXDBBc&XI_ z0O&ONb?`qvO#YhLy49*Z85omzPu7W?ph6hMFVNWCX_0DSvG0F@@u#f)nLwJUsig<)!*S)F;Nqif=xA7v1{$wWzPB~nXYX+fA)&x( zAjQ_hgQO{-x!^ZVYAHX?GAg^j@9dE8`>J^fQ<%( zRpXgb6Ysuj7jq*OY5+Yt?opMgj{Zx!y@56b3egSHwD}Xj z$!a^HY*i5M`hlZ{i26xGJos*3H?Z9QT&Pfgre?U2$LLo%E@Ua5fh4eg=m# zHIh>ed;xWVx|YWmjv-gd2kZ3|jbaOjbq}hQEzqrJ!J_3wdDp&JE21kK)AuVuXv3FI z#fqr?!O=-5GAYFs^0c%I7}&l@Tw1DyyA1u`ME&ih7-|*S=r!oaxX77lSmu4exCW-D zP=bBPK4|rq$EJqyJ<$Z52t2;$6H>wF>Q3j4V%NloF0Vvrihc1QMQbyXDX93&5^Iok z_T9Fm9_)jmJFLT&dWl20)r%6AlV#mb&@zug<4$)8-q-fMsV8MW-}IN0#j~Xp&`gNI4`=gQ zy)_%nHz9r)KjVk#JXjS+rAPZ^K9;dg9VHk71Vg-BSw<&&wLA%?KL*<)yWL)QBqLEI zYhB%81iqGWnzysl8RN-tqsWENIfRU7QDY(z613D?QG?C=vuRl+9>Dl#u#kATtj9Za14> z6yPaZF#LqhjNmX^ATzc0dB$6&-@W7!`2$eFxRP`#hujx~HJ9PyR@Ah^Yr$He*LGM85~KVz14L7@HDVUd`rxhnvARcn zvgf=7!1A8%05OTB*s0 zG(6v+Rd)Cq6~Q&?&7SJMg^8*jdrOV4hrTyMZ`VLy-OT##ow=%tjKB3|7_5P+tZ@YD z{?l90(C{JZ=R-BVbcrbJFVz;>jTwTI8iacbKcj@_3>GKdJ{rn!Q3jHX33hS`gpIF68_3XkMOrTvJrV9lp)_C0J zcRDB{Es`5i-fkX93j#g>M{9M4bM0)_PJU_soIz;UJxTM6-MRapjm;T(yY1ll*e%mC zkWMOJ%xh#KAE8;iC5Hq-d_w7@5mf)s6vu~BP11Y#Vv`L}wO4GpBc=}`ZKXPRGi-xR zYNAZqoT$dU@+}+*D9ntQ99!QfVUpkUoZ|7g4fP|0VhTf$Xlw14s1p^P$Lt=39)3t_ zmA2w;IadyVV#THdFimi<*bDU2YN+n{pw&y>u-6JyyOqJdUKtg!3wbWI}JsgypL&`OBy-&39RU@b*N_Y z>vNMfj|+dl3&2bQ);{YSOZ4sE9lUIa3{KQw&H3hHwJb^472XV<@_oh^>(a%V5aHt+ zS9RAfR+0BYyFm=!@zRH(fALc zQ)G)W-cR~XFnyJwr${``Xh z8kR2XWL5RBUM+u>>!RR=_TmF$6RNe@P=D3DL%im7h*ps!a(gim)O703%2&i%sB6He zWx>CN=4z5ozu6R96P{3lvB&9=e_bJRDX=qT;w}Kx6$-T@mB_=va49?RM|UM~Z~Nk9 zxCWf;3V93O2*>=lI)}MrI%xJ!DCB5ZtyH4$8=Lh!C5%B!5ml!BS4!6#ZKk%v^L3HY zun>`K&uWEd%i}QOZ&Uz}!{DMx_UkS&eEDX})$!7OYLgOhh*%0-FZmd4X`(7S^FFNi#(#vqd=Exf!}4-J?CWCzEju{!Q1% zp7jlkK-AKh5Y#8Bhxyq#PxR`W4&~e}6@v`waAvBSfC+BQ-MP1Q+`n_9mP3P6j4I7* zUuS$k?E0bxOLWpVgO&#s;-%6;6Mzpn%dlXDjZ+&R%06=4=1s#J^#6tSu}2RC*5X^&8Ab(NK}0f9>R{&phsugc`tY zWPf|N@_T4mjJxMCVPa6}D-BISh)2?+iC?-5-HUK!-wrXb3WB~!-xCw%EQOUcj5oaQ z?ONyJzl38jkWXBO`05*Pjo!$2z(jDA(b5{jW>ol=g6(w~2HH;jwf-8gg@R&UcqoUW;|1*=v66x%;!pKJ2bL6gj$%*-FJ55tYAR zA-UouecY!GP>Ol1hROOqx2bi0SY&wbVMH5m2xmvL4LJ!!wOaBxc8-Hb*c!aAz{`$EaM}bBOiM1)Hm<5c|sQ z1xH~OJZvTLF%IFA2R>2o)=|*u`)xVj(Bb$goV1=A?uzH)+He*0UsjuM7!&MB@E@&JE70n)M0Ot3zQ!j&;F%8`@QXGR z^xZFdpGm9DoSN+M5|w_pSzT=Ir=;_9TH>Py2v3PJ!#<2s9!THCC6SC9 zLo~yEhef}xCE?Dyn5O-bG4Y{-(}~2y$;^*7TNFy?H5+bQmY?G_-1tye6@tAk(%b~F zgzWV`_H2X4(hqb99AJ>YbxuQ*bVx)5reAtDuwdmUiKEoGBf$I`_p-eAX||58LJqv0 z8K)}9Z+RCNx0c6tD?y1$|JqHXj;jxogJjDk?f?ZfUsb!=a_3`yD%5^xeMoQvEpyI{&2$Qj1j52zN z*XNEFJ|^~EYbSSFnECAMwEU;ETtiy-@S)dWy5P&XF5e|GJEaFxY1{ZC6AbK0j~1^K zo5@HIGfgfc`U|MX?L?6!cL^(BbJw_=09)*#HM3S^@P>CzV}m2B3gO~_I}{}yUE%di za9A-NOpwC6Y~N2)OR6}l?2|M`p3TD}#z0kL=d6!wb3|Ui;1}R_bnWtN`n4FAWaO|j zHX;eGrsFRssbghy9h}4cM~iv;EX3NZmF*ASFzoW2P^Aw}4?J{z7xtW=`2KkK zHnk^z_2eZ~g7_=oAnQ%mVoUXWBYK?jS4#|h zakv=X`jFf-Y@6`$pg{KNrn2N77XIX2$*tyGXDe!Q`F?0Zz&b@k4UZuP2uqXQ%DJFF}t9#UNq@V)z*9o(d>&a# zIupbdLvk$)7Ue34>QYXNdyBPda$C7=RL_UfWcZnBK$>X#sU4m?S1;U~7{jKaqt zn|UJBgmvAzk5@a3fSbXPBnL>(&fNX+f2D2fb7e|XA9nQlL*rIJZ3$HQvoozdzGY;{ z(v1(L37}2uhfdpdIah8;bBJpZyJiDiM%T{VNpxxi1*Vqt9Rd!U(>gE1N zst&4eNe;7-wbrg#H|vvVS>MJAs8#*UCp#G~vT1^Zm?3oOLOeu- zY1HKFsM$uF#Y3usf=HJBUd!UBaH7jk-HA9Nj79oG=5b1CW~qxZZ#%h=o7Ka7sUSDt zIz_;Iw&dMV8j-`>Z0N8LzhO=7NuA3E!#4atX@$#eCO{~GWriRV(%olB-5L>dTCT*0 zGWH`s6H4X-69W8`jCPYJm@)|P2okDzAQ*mQ%p$kYL!&%Y9VjWysS&$CajjvJF33@0 zX0+;$w#$C`qv)QKo7%q6E+YYmBG?J{AU-cUcr$WO9F}^EaTZja&p=m|Yz%X~vAu3b z8}eaAV}9P`n_BM)w1`-pLh$RWF6i$c4PN8t#yRB4rFl%Ob*vsaA3JhjF|m_t;lj#S zyB93x_wNy^8C0^N#@1Xzr6B-tFPd3Y-~K5+Saij?{@}#acOeOrEEM{%jt(_%o{fS7m+|J#RBbBQcKkVId#w`m4E9!e!-K zaWpU>aB)%Lf~~w;h&GvLcn+<$FDv1;hAm8rOgDhcnFwS&2YlXQu2)kDANdgOLWILV zzFe1CPd#Ft=e+-z&Y1A~$S!sbYL&&9Q_hyw%)^cK`w&sr2tPEnV?*|UT%t!B+=(!K zhWS_B6HEXB7)j^(qYGSh@H!j4bSXEcqce%%zbF8gaRDCN0QVJ3{Z3f`U^Prx{m%PG z9_akggm;BTdQyCWg~|S~syo)`(Oz=BX+6&?->Bfy_p^DuTYtMmD28h`xvE)lk5H=b z{syzO^5WGs3V2X63}cq6wf|VNEYq*jvgFzl&&(}$Rwws_5aSHpjl-aWLaV8!*WzhR zGM%dmyi1Fibhs`^Ajf|d{(=hywxk9wd1+;VR1R*8*b1Mw78S1!{d!K(FSjMr%Ww?GWw!*J8__kr6( zoLAv7Kgz5T;aiI{0zYrl2Kp{Nl~=mJub;GT?)qI)zH@oHJGXnlXa9_}6}s|~`b+qz zoFp^i#uIAwZ9B7h7C|#5EXUYLyGvUAQvmRuo8fYL~l$I>#W$qkUR=a4xaPfukSny@6I5A3=h@ z_O{lOi$CxEl;Gm2^&k!ND}lQp#QgOvM$1oES5Ia*@!{ zFDb|6yJ7A3q~wxqMl-w)j0P%(1;1(<0&r(qko9c3HnqmYInu9`olzXjDGwnB}+311z(t#DBp{5TL?F<^qj$}yZl7b+>$r+kcN`OcEHh_HE_K{O`%7&!LTGAsF5{jpGO zo;j|e(R%LFO7n?d?4`3)(lR%shKLZ4TX;##PiLh6Mmar(-CJ_;=h=^j z>PxRPH^z9O{2}%;*9&ziBs0Ye!c(h}k%p(t%~mpLwCkqZVz-lywZtDdkN`n2fDpK6GV`Ln$(RJ^Olo_=c(WptHJ1bd;BLDJ@HI z`0@C;8pk=98YLm(WfZaX$xxCMR%1vbb3GMXm_T1LT{l^)J+;gv2o812N9Pt@v+(kD ziy9;BtPF(f21c`UEx;mGgB&?7vCln6qGXVD2CnTOP{?7uE*GN;U)PiNOE%cOG_E+puyqcbnC`cHKtZxo-1**HCW0y@Nj`G(Ic88Y9#9r_0hg~ z_V_drOH&4K^JjR|0)}jQhVrjpzX+|_sd^RXi%ewuhP(PX%C1p3aLLkzJa!XnOZBcL}+SF^pVJOXg8#tRxFD zxrBK6fg7i~UkHLcD14V4H0$2dFyW+7O_C zRAb2|;9SQ(UxpYW&jAY+SR3?@I-Q1e_RQ}tMzSQJEYaCsK9FJ)@e$|#*ltRjYWNLq z%xLsHYxZ_YKXM1P5I))~>ZP?uH>A06+xAXAbbh|&brB(p+im%^!DBOr$Tn&;EhFP( zIl*ugSoURg?CsoOvjcY-!r55D3ty zRZt~*We2pUG0I67^%y@eL;L5vdVv&@^3d6bmYp#%$VeMotP@njK}&r*IWc)TAU&|O z+-!t!=9Rdq-qkKXx+F_Gnjwlja@^d^=VW;K`5Vie_oRkH^v$yQRT4rUBO z%zg+yh?ppsooOFS^_=Kw$?)9SnO5u7drSS91w)K{f=IT%>9hW29wU$8R*`BZYwHyO zJkF-rlT=5g@?^Op6k|8>J z`ZCIXHf&?#wU5?`#hlp253-?JH=Fm)h_5-){Nv-Ywi9s$gh~#ChEuG3xK-P+!o}2j z3$AK0?#OWH-r5_~0*r5OsIg*xGkr23z#$hF_UEqie^qVrMRX)G>4!ys3L)Lq`?)Y_ zd39l@{6era2mi*Ego{pbP+Rois2&T@+ly3lQcklPr|EY%D!L1iQCOycf_%PSz>P2= z#>Wx^is^?3=FFsN@*h6fB+q;0d5}iUNqsf-oXlfasx_~;`1~V#Vr87u&TY{nh240* zpVt-#5pKwC?`Fm#2t6vPXXnZGkpy(RJNPayFTLD!9Djzma)&*15}a9m2R;J=GSn(x z{+3Vak4i;1@GGxyyeD754O}`4*7s~C(Un%d7TB`D>^Py=zAMHp9ir+@OjZpq0zPnJ;g9rV;|=L>*?2-8+-JESNyt2Uaap(oODyjN#`xivjPCtXi4wwHcmkQ>^Fog{@GZSHb!tWs3&t% z)1$nUZ!(*apVnlzSonT%6dN|T-JC`(M!PU+xQi^7w6ubW54>miq?H}tDPf1(AT@pV zS)Z!|l&16>qc)155Ia4QiZbgTR{e_5BunU!g0_q{EPVXkSC?IHS#OjKXsWH z;*EU~$SLL`)vbJbdU|6+-nsx%Q$KLQltvl^<)l!*@?$k<*oE)aFb%W){FM9n-R1~` zT%aP|tYw@pK8cbD$?XP_#NoKu*guckS9VcfRY6`>VqCV7VL%m~RLtM=p+>p&ONEK? zcDHgagP!Z#}E6WyA>7MIsCH&D*42(mE;s_#k`gtGtF55`F!dJ5z2hr#{`Sa4^AED-u$KW@k(%SZeEODXv*uTT~3u9IP;yAG72sfylN$xP8-ck zn`xz|*&gy1XtQzKa};22>h9^!n6}ENd@sBWk4Gc-wFH^f33kKUcMs}I!`rv2wui5B zJ?iHg-}r)wr%Eztrt8{Rj7I0>8`FG)Sur6nhTwBfQZwu|uI4^zFOf=)VCgornqfpG z954PEJ(vnh{~Er}0l%Rj+Z$o~AC{fO2he75<@p;iPhm^o@=^mR~*k6$A50hxk&%K&Y z#5^gLhcM;yFuaTFOY7`%U-t)Hx9_2Q?!fJNo>ik^xlVyqD@g#$4-KFZaw^X9F-vs1 zLtneJ&mBj&l@A&FgVU)G*;@z{_H--WQQwQGqH8Y2x7t$=)3NZje;p z;PFT2jkskILTFf+n3@yU>L!}JW?pN6orpsVjSXfOMwpO(%!Jh--HANF29^Mnzl2;m zu9V=VeR>;tC7RCbFx2?oEcuoEnaZ7Y;Wg9LJv`!}*JL*#kR{4uT`>IPK>eG7caAkK z=^_nO2BP$oM(MhzrbaQ6(ailR&K>PodJWYGN%;4A*~mcZhhGaON_Y*he;`mW$iPVO zVSVFtTi}WUryFJMBeNLKe4e5zF?aF0z%1SAU+D<%>YdQ})sEi2K!Bbf{}57qRE8q_ zJBM#f@*l1q>lFTELg3Ih(c|2KXN3+ov zQ~ibBVan25?^QPSbRWAFgFrOj6%bV3A?- z$ih;w_mm#P-~&UN;RuC<_vNg8a}G)+%@Q@QZ1c^4+-Os^bRt9h{1i)TiGf@=AmY|A zi03n+F*!H42iZvAv_|G}JUAoYy?bZY9}k4|GX z<=FM~^fJ_Op;<8TFfa@Z2oGh~(y|0l@(6Y5-8{@2I(oMn$0kXC;so8<>*cj_nV&P7 z>Qm$A>u4k~9EsAJ$iV)Lepg)%01?)eFKk-r^z$&Eq2d4BJ`QE3jrHcC7yAA6MEBrw z3tUfJH>K4R;MpXg&)At&#_bJ&bw z*G|E?CEBEa8>zf_$!PK`i`CXWL&(TyI1*6vzeAq{Qer9KnG zTX6n={nVI$r*{0)_JM{rpLF)IzX44ca~j=G6`&e=l`#HZLu1)5Gkc3tc{_3JC?V>o zAYZbvq~|X-Z<7u@99_i}mdk#Lrux`;52CSb`P!xxIADkwn9++pR#=*@4 z_D_mK)Wln($(Wd?Woiy=fW*XtMM#dtC?U}IL4#H$O4#+9za_+KsSX@sHsy$M1$!#w zlc|=Z>3!jTS6zlnu$6TAd->16qp1jBaD8hh&^a2jKQ20gGKU1W8~}n3siX6GUQzUa zUvY>h6zU6Oc6WH$Z+q-JT{z#WBb9|Xia{^oG2M#AiOh zrzVu4CbRWC`4FxUM_}28&zS0BaAp{LW*b=#28NRPPLy?$tRx)TsQghLPivRO*g~0u zffc?z3py(7AQoc2LsR}usvYnW>zS`8NyUTRk{MQN;7)Eg3G_V=ud8&swa<{4IN{F7 zh}!k_gCC%Q(&ql&a8e3Uf7jvOPcmA8Gb*jd&BKyQ$XFCOC(?&7ae;u+?!kt{zRVgY zTyYDWWuq^4ZqTkBQP*&@KEAl%6?8e6qWCn3Uu~VozNJ8w-*4IY>gl+>S)5L4zDqc4 zk9aO23@QB1lA%CKiUxAMTnYcl&rbbvJn2%Wnyqi@NE%2@I<;I{jzsVTq^h9c;aL;& z;*wF5on2sFf|z$SQ*p^<&Nzm4O98vTrYmv$gTUp%3=C4jH|p>{5Mfy^3k z>2S+*-i?ZF?qIBa*B{l00dynfFdKnaeVH!RQtQKLcKiqx7hg|h(~W9AW0-l&m0(!m ztO-%$ufKSh{eb)jFvRAWPUn!A!5jyB@NzcpXx$omj!hP z{VkJIsbHDx#MsFYP9>KtdKuVhCA}D$DjO+4y5$9rP9r*_{y#4Oz_(JKlN8kG@gDki zJ+~ylzu{k7=?-QlQPrJwKL~P_&K8{hrMH#;cGwVk1O{mM=gkPW>O&}mOFE&F6iLhu zi!pqGF(JsI`k4@NgvR<ok9rW9P;()O-p znWgWk*yg^xHv1^6b4F3|4mtOZY?Jt8e$jeSHm@qfP$RU`+jcNBK+6UEe6{JnkhyoEBmj~<9_&B>O@@ej?ifPQ-I z`#vYfY*rAKL?Ok?q}?)B&Zsd4fx%UVCE}9@B!YXIGoO7=5OL8G7Zq$2iF$3vJmXZCAgvtU-N-roVm|^$JF>yoWdxrP$jla<<^!8%Yba)DlQVXB&(@_DV zL@1agqwYS=R1=hDJ)N$p_7&vqCtbA$VmR`V3udf>_@2&FSEz4rqy^@7q6}PEaV&|0 zJ%jMA<`|Dg(kq9sK6Hpn?wl8gSiDK~3Oh5sv#3*11LIdtbfBfNyo#tu5kEq->^Pg; z1Vk`xVo(6YT-2BIxm~fzPr>^~*T8N$bTB|XT>5ROUaV=zM-Amdx9ig=zWapC=XpDX z+pHeX_B7VlikfeBP_Qn4i_0CL;HgFWc84>H1 zNdC?4go!eBWwx$hl%r`e)qY;hnH<7Kb!Y#4(@%lL9PS72+r#%)^MgIzY=j+uaHYE%spcnCAIg4f&AH;Zn9rq8J~X6Whz{X<*q1fvEA%gX2D zL4vPz7p$t=;L`xT3Jb6)b?DA4Vhqlf6h{7<5z(uMZ!tJh!Sde>0lcJP2}ItBCjn8%~qz5^U@CFCH@UUFr-)(|BP>{XHs-1^YHCH}BACM?BwTL*DeR+B5pqHQfz{Re#z;PZ# z7V>fi6*xDi>_O1U1ToLosItg?`0j21nQleuL;|}UsbZ(^xMY{r;0*JT$Eb*F^7P(S2NtPpn1rrVUjsPcfHc&ASFFiLbW8}P!TusSl8 zWg?hJVy>lX?EtO{@SX3d%c4SWxM^Ml^B4)n%OqI&C0`HcxTrB>|OBU=J zUc&~u$#eXcB(6x;S=fShA%!40K!5^7Mn#P~8{1)K>LbF%j5VmV_8NX9M|rS5fq~nZ zj17f_iW)$djZR1N|4`kTArE2#2s3+1YL&Q(4o*V=)@KixdBN_gQ@Yi**N(>M7@s+f z3cn0{>r|WHGB9F(r?fi~0rEnhx0rX`Yy5A-&`TJurG5t|#|H|5MaRU&=W0J)PJXWt zgqIP4B%T0B8{dHHtt@fM`c3v6E}Z1Y6k%#PYV;*-wnNm)9MbER4O*A3rjNXz#*LQW zZ+H;r0w7|yX6a&5NijvIl|-*_o8~h+U8XI>2Fs^Y89iJsI^Du(Sh3BIv*S?U_3SAQ zwwv|N5)zKKKZ~16MWdi3(kLwlmuAE(1~Cw8Xm%h&yhkOZ;zNItUDY-4f4zq=f69s# z%%8xQIPJojHqXG%dI6Bbqh-S;x<5n0eu6&{3ZsA-CgNfdn0;^v%}u1y*}28Fg*g6V z&hN6dy-||U;9xUG z-x#f*q#9AuC2`a~Hi-CfF~sQ3RP3U$1RXaDvHKIRckKHq1vTOVx!DeDsyGq`qp?7c zAM(Kj+tq+aOvKyrNHUT9FX14M!%s>Y$T&lwg`wQu#xoxkX{#0(7Lx|TfbmG~j2TI8 zKg#(iN>@J1P+wpX5PdD{&>(xdUnKxqONRsR)+SR5+&G}i7j4rcsrJ7mM0?-*-d zd%$$;q(pKJZ*JkfVS@#WRv?q1&yEq|r}W=i&WXFANPo?6BPJ5E7o_&@aNmvH1jMTUjIrA#SHXy0!EAz~(}w`MIX*F9p-8 zG2`R4k#@)8WL1Ae4fw&mxm!JELO=etX7fftEvyh(qrfAfq%I?t)y;b_-hI{gJ8$JB zGeWx^QDklJ)=pk1LBDAp%&_iS+|#~TqjmF#3)OoT9kArEmK{#V+5!*PD5fe)DbX1O zydgG}6SxXFS8*bVd)waKaRN~PO%vOz?W4)(?{>b=j|9PACnv^kTd;*x2q(3n!JXJ7BY+8A&n%-LbCF*0u8q6zZ?OYR}a4{kbJG0sP9BT zlScv_u3)7;=ZZFin`w>dpTBO~_UVUK3w9xqy_Oo#+qn9^7$Qa?2@MV1rHhRmog<#n zL&f698DSubhhZW}b@s~;43Ro0e$amx2@{_>CLv)~K~{DF%y zq}QWrqf~j18wWnZRLgmydYGdCb{6^eRx6-+H$z+X#hNl0Zv$uN-LS{(=1~tG({>M2 zzVP<8xPk>&Xlvs;_t+yWc|P9PKtv-E77P367Si4k9 zqQYA607_`?Iw?hBuhm*_0B{Hhy|LC67*gB#nC!mN$lhc%LGVRKayF#fTm7P%GG*Gv zohwEq#k{Fl?#QaqfBbdgr&?0#LV_?E-~-MO1#P;b*S&;H>8ON)0X$}|DV~Mc z1A^k&12)9zU*qxsaKPWeX+6qQ_FNvH4uy`D=s54cfF(iXRZ}a~Un$@{X;cYto{B^T zz6wTZxx6T`hSbC*|9FqA87nc_t^obJ*q_g$U;vIdDYS+enJz8}CjkrHi2_s^-dkGoa|k|-Q$*}46R`@< zs?;8?S%Thv(;ZT)(l-CT?_ScfIna`5{gMla#DWnRC(5Wg`lBg3nO#kz1FH=cMjg{ zwG>U|!v3M67TV58mB57G*HYf2X*0(~U^SEbvai^C`+VrDk@Mz93{ffsmJBO1nXLMe zlbOm@S^9b?nYEbJ$|~|lY*+h~8~W3*|L)P8JTvl00Npnh@}z6U_9*~xb@=JOZcdT^ zQ&DkK9Uf;0sQ`j!7Il{11oMWLvh2>}pvR)>GgRFvM0KbcDf3wN z>T~DZP;jcogGjBJ&M*Z$>YihVd~g`6#!2ru@cd3HRh3zuj=67DHk>O}#agnQ()D?b7nW+n)H=SK~$-$}s1sr~{B1eRx zJ)Ql0Z;FG03W>D+c5YKO?gl6f6-8?URQ7HpKV%O1V1BP~!`i`wF4JM(d|@amRNmmR z{*yv+$DE@2a+pUhGk~?9!^~2x3%a{CI4f~sYt*<^0R~Uq6SYd%A^DLgA@z7C_|5ys z^lt%aVKq85xnUN$qPVC8HWD>DeQ8UXtzsKUxM#+|dZK0I$rSE33pycCG2*Oi>nGK- zmsjE(A^NX?8)O{`b^`7l5^2l}PMhAza6Ef?grl-Fq~2#c8C7rQUbtp&grWFf+A_iPxB{{B9rAAeAZwxW^19nrVcW!3U z-d_#AeHAPEM|LC4su#jTj;vOAn#cnxtQ@z?z&`r&fN$uT1afrTpouJ}tdqT^^LP06 zZAk)vNM_-5vHlG}x`PS1S)$q_-UisP-_K5Mi^smkVi2@J#5M>{WUvj-AA%9^(>8|@=$?%N5{@`vfIY(&bCVg{Uf8J zhX?PeubEXLviHgGoo!G6*SzSOXwCH0wjcDPKI7T5r_wa9-&u8qZ^nzne5&p0vHnH= zPb-%IYtlewd`oMy*9QP7!7E4>JV1VMNB&|}(JrRCPcf6J>XqyI^c?vpOSTM>y|2cz zK5Hfd<3SB7l(S5>7Ntz~b+})Xlf<(jKT%AkA-vzj5i2hJhKaBgK?gQ>@8IVDnr0 z!f(ixcVMwNv)E`gtsQ;fg9?8$+TOw#o?-@;iIS z@7re|>;ntLMeNOX#)AF#iMe7oaW=W?iV>Gar@e|z-oO~9(iUEAkFLBOA z-(gC3E2sVWT`snYB8)38KKn1?XlH}};4|v=UK^3^BZD8Hu)oB*q2)qs{Iuc^N|fubl8-D4kMO*1>=`tT(sP z#bY{vGBXIX7ZJt(g7H(4eWqmQJ~Wm%xY)8i=)oj*miDh_{TMzFkCLfU8-Rr#tNB+M zfx_{$VI%nk6Qd2)Xo6L!fSc$SwoDZUE-b_x05}THW>nd@?LKsCoMRfUWOOTZ)xBq#7Q2vSOy9F0SRlyQb* zvS`T+8)n<%>2Mbwz&8Xx+v}{5^l_ICzm;Kyj$4UkeN7r*fQaoI`ev^|Yfoa0TYSO+ z86u2JD(m!>j~;YC+LV4J0ds#O`Pt-Q?#UEYA?Y_$6K<*IusSm#^~wxK$@+a=I%*zm z&>A*i0#|$aa;plUo5{WJnK*|3M>Pln2Z8|SB<6RD$}6-Y98a$^|F9R3IR!La+mGJ| z1qhQ)*2=Pq?bTqRNCoauN`}GJs+@q&_ooyb4D^LOTl{E3`Zf-_a~bejYQr213*?8# z$5nM?4cb&qW!(s@@hTRKE6SwY;u+qy*E68dj6r82;N=UoWP9-) z0g40CjGarQ&ikQ5%m#F0%&Hf=;2q&{h4fvQ{odc-Yw0x@FxyEuEsBy&8Z~q6_WB^? zwWtFMMpGs1|()y-1 zkMAN{2N#V?$?o-}TcB;Yu02^5z!R%%v>zwGGFsy=|~!5(UXiunBUr zAzQ8(uJdk5a7<(%o;U)mCdbsQPXfho0k^YVVl7o^Eu8ccSP~4ZqT#q<5>oOZ&=oy7 zJ~83c&cL~IDw!=Ratj(@Zi=?s(_oW;O!Vupa-udmIzEi)*Zds@(ZEtVr@aK~^gt7t z^b*8cUX~slC7f#z*=)!$WJr9_m5|7d282<-+>l5BU1K3_#FpcUD?rUnPw;9m(cdRc zVj^NP0!@P4!PWr6q|ZJPjs@|DHrK&)8_mGYC-4n6P!WK?E$&DVSO6%6=ppJ{lb!7% zqBCer?8<>fG5DYZ%ZDC;-oIA)_U+(8cTNWWVrEAQ_6UCGgN^@!C-4&NEVT68wB4R$ z+r+mGw9s;l$0t(TvcrkQHSKP0-!q!V?2hm>AHM2HNR|d>j!i*260%c)a{8OD71W?b zC&U0Q;uSl4}4OPOjXwS$FAgB;9ZD&0c+j z>ENxQA*$u1kMu$;v;wfyqfqu}6TDUfku%s8y9t89KO^*urAs`};I&h6`ZtdPMU2jT z5+OgQ6^YHE2f>aYhkv_uRyJ{{_JrjC?TL`CCb^FVXb}iVuZg|7{k<82Fqo>~NMm~x z&s)dny|O1hqq_&rh@4Ocg+UJs*csq^I#C0xgjk-3&X`=T1zE{5eiKD!I_(Z>Ap)3# zWPy}ai3>!MfSz$ZmlX3rF)+<2%Rc7DBd>r<1BOy*>E0#GY*-jn&&R%C_dwPh?{3OX z%gC~7ZZ7mGp`cF1sB3U@zUD>5fKUBH^}25xR(}@$YOiPJ(*zk!S-PxFa8pD?erNlg z5#f%sUIQAdbz@@g!Zxxm2QD)%1#xH z4HA4en^kDwZ{+M<8ih))A%O{YH7xmSoO^9EbVKE#n3IchD5jKnSb_%TU^rbKdK0V;;JD zc0e!l=M<&k2y2N_>V#8tx5U)N+RU&qVjvpUJpta6Dk>A1HE}#iO=ugitH5nxMz)j ziSa$^atmrJ85#A`{;)vS1{Y??hxFnw#C&5+XE89y$U`&_G=Opp7ltz(EiMx4Wsl~H z1SNoJmzN5o7Y6iUNi;>rcE022fuXqX--w6B9(8;e{98ki&x#SGp`tp zKu4Vs?wwF?c@m?JMm|UHFo=SZvW-n%_!u%&N|`?tF^h|y9JS$EUM;nUHbD&R2V-n% z7BK4gY?fl?j${F7f{)Or^v@=;EyEGiqJTSN!9IRhv{9kFclrVm_|y3M>hW>*+gE9) z_N=V@ony#T@xAj_RjpZNZMi9jgiHJuwJ0bU^7&*g^kF!}^DKZ#0n!9HRzU(I9a5f1 zQbq>g1IiH`L6%fz6Rb^_Iq(t*l)rnZiW=4*a7+D|gx%;{i=>BD9S%{`Ofa#6vN6nk&rC{r^*$GI~bObP_pWAcswnG37K%`M9O@bbWVa0DnQ`;^H@QwhK z0qB6~UemHpe|h#%>YyvS$~q@W^u~u>t`1GYy{)RZDV$)6?v@et7HyT+qyP*3o+XWD zXPQSY+TGh#&6uDf^-Tl3#+4Zr2$2mmHH(`Vo%`thWX1FQoCcqUm8K&H?Plru<}5ey zL}0JMz3(2_5};}pDyrXZ#^^BNud|Q+bCWWq)<|8J765QDSa@n(yWD14%tr;qxnp|W z)>?l7UU z1@%+UNYVSvQW*;aUITJSxVuG3v%xJW0v$meQ{g1Ykb|O0NoA$7hthscnPEQprVlb8 zUKKfm>}tWRT8*R^L}o9f0KDIf)P7!<=jzjs(q2?5ui^d92!aFf|FEUZlG^`vsDu3% z^n`}r>((7fLPpS^@}gV#3ja`t1yk8UHnrN3f;L59M(jw8zn5b?%}G5|AIn2DEQH8p z4B{@h{`OVMi6*nxMTA}E4nA;2U8s$a$Kvr#=Z6?5!huKbXt0I6I$B;>^k1k0E>Utd z1)0K*rgkiV9I~?Ul!FnZFS)QVfQimC{Yo2Bru!e{AM0fS!Z!rS#!cyo_Koz1v=^|V zA32fvPKj$=#)f;jB-mSb<^I;3;!tLtRJD8<4m5*zM*f0}sS-c9E_Jw8+|wUMpe-sS z6Pp@M*Li?PI;^`1-1{Fml}~(QX)LCtg3ROe9<=s2F77NxlZ--;b7Mua*p|PZm`y4e z8kM0yY@&&<&>vJb;ZNYlBL$>mAdc|E#JS1g1T(tGj=94duY+sKqZ8j%6 z|GWUNY^wz?Tee(sW)eSHg+KymxRiwMfb3V_dG13I%n=?EROf*+xs9CZPQU$O=Uz#6Q=r=*s)j$;eh{RBP< zjq}^Nd%s;mYLZ&5KiQi+(p57=V{W&|ZKf&HhVB&sKviWbUR-N_O{geY2G~2uj`1`2 zh7r^F;sS~q&L7IxVzrrl(HmAD_19O&6j>;ct*Jbh7GN}it|1TJ@vTBIwM@Q<7NL3Z zuMilkuvT&4E$Z8FXhewrxBReEv;58LSu~Sm)Ai#ESU!K~SPKyH22kTVB%I*c~uh+=BL0Es{IV29oO;tB}#9(nb0mNY1WtIsFlzB|N_Q z8pxbcBFN6gd()bD1&blqlM_G!2o05}F)NI!9`o~FsnI%&>F1;59~_P~%Lw=w2=0Oi zOe8!ccaAuWfJ4q{`zEYp8ac13to)DnKW{4z`(#x?0F@5=Ep*qGMyZCS$+yPjiHu7q z3>Z2{e7Ad!j79+joIcrYJfHZurf#ik*;{s0s# z>7cjGY!N+*+$A8KR`Z_~>K!qCtp)n_H;Fq9T`i_*ypoY}dGqRhtg5py??(mpfXXQ; z(by>*c=61PPj2w-3>qE)_LG?C6F_)w*lHTj5`4#4=8_PH>)y#+-b{qaxTFFDZ7^)F zgH60dj=B4e;XHwC7mXTFSqT#UTxkxOA(vFcj_D^|ySIpt8L-VOW&;%9p9Ro*81&1e zS!}poXPZ5K_7<`=LKyFlUM^J!Z=(zaw=fWG2;lk5d%KQS*SR6R3!U*aAow@Sue}Z7 zaNoy6S;e5f`FF-v^6T%X=<|9&T7LFa9!EW|mKKtNZ_|K!aaJ@zmpMF6#TADBgoW>r zy0phy=z|fk>^HrTx5ec&vLYh*ruRB`=kmsq(*K4fhfTf2y*;F?f;LQ~4yBfiJo{*z z7C(d}HlhUhDcHG*TTu2=Del2Cpd>fqb)N<4uZt`Ur+OJLl zIa;W}0!>ZflLfhzzvu#ryt#A*qUJLqxr2>*<}V|2u)HWO|Fj%HUSw0~%|Jy+>;)K7 z!$z&H!1F*4@=M2pDL*wdm!r3!14ps8e}+6Lm-tX+hVc%UjNCcTj`r*?zwNKvX3$?UwPqJmliQX^pswR2k} z<{K41GE`dvg(q#ccSyxA^|2vegz?B_s@IP!MuZcgjvO zRAtjmSt4){z8v31AYfP1dvRzdG7IH2^IbTl)lOz4nY*+$?jDQ)Se^HzD|Q;J5JHBg zXScAj8nOhy=x?=9>%9|(uTcURZZ3Daedgw?#gbk(^fpyCry+j(uj}u~SS~kEy|`VE zgx_(P?(0vuxV88elFHAk)>A}G!*QG53)ctkA*%eg%<|?pfCMJP|9mAYxlfH@SlD_w;pV&X$f5A zGlBw^yXNuxKgz$NBW!vuFCKHxD>YV*;a6-KR%SHgPVQ}he0vj?591*;jaL5n&`Rv& zx31LRd;18Hbhw8Dt3r0q4s%-i!vil%AGaXYA>d^OB30?`n601=4}mu1pg(-gh!(K2}?8hvYZHV-Ca) zxy3@)UgVZ0zBlYrra>JUiOmoD8GB83t7rACFc=-dK%`?U%|<3TF%oWUPn;j!UOPJl z{W!3ZHMt9qV%j~N^_fJThcF;SH4*t$OpZY_**H<}SK?8p*ccjA=fk8+C|XR?CkXL zv<|M~`0%7J23zo~FD=_H*!z(*FyY$EV&J|=V|a0da&Enu~yn{?PAE@+Qy7{G{uYz8}ebB ztMOAKe0|nLOBnvKnlY4aBNpe)$;$Zh3=Wpe#R4Vduo>aabeeHw#nZ*2)Pb1Ek6YW- zO7BB8>F6du8%#vPs$2no_%3zm+rHxmprH2=kCiN0sg!tq%?(of^5vjfcNkO?BpEI( zxeQy1arWZLJ?ks4rS4AoriOh_96`)QqdWyXrIEpR%_je}0<#xZ^rl`Hr^Xw0waU2V zJicqE^t1#u&W;%|Mi36LyQl?;xo7x2K`mAVgmANJRRe7N<&0z@q^rm0=K}!*){WyV zaZrFBZM=}#Zr-XV?S|9*5(*!WO3JiF?Dxliz>TCbpe#OT$eSxwG=Y4HAL$|@_y_!L zaoRYZUnh)`O`_aZR3}GPAU9D+DKbgQt0B3VnyouqhHtD~Xn*hzy%z{Lw^{^6J*_<2 zPx0o2#Z)jC8s&svRh|bqF#R@~Zc9J8sbB12_J5ycIoiwf7@jP6{S=O<;KPm#t7+DH zay_8&bd^SNCAfoKI4C2fdQn5n9B9~;THaPg!Fhz@CM={kfKTi~;5-R_~sGwx>#DE82Ly2VB*!hT-EKG$+9z`CNel zb+zvRfrSlKhnf4Q14d{LAUV8lQXUT7xdb5KS0+_dV1Zs|-<6*tr%0T*}7dVaIf^Od~~wB8f#6KzK0*ikyP22ihZXCpwp$}Os5Kad7bx}#?Pk~*-x zQRq2$DXE>d7j?9JOb1FJ-_TT&_^&4__5EhO*9f1j1}^jF4Y1%o-%`X7@?GABobi)) ziXUX;WeFe~&=MsBTNYyAVQ|M#3$s;5NkRUZpz$MtHp|(p8Z)nhsBOhU?{|F1`h8@Y z)gG_pun4^9#Rdh6x0eC~!^uXnTUYb^Kud2kOePR)>hkN(_gU!oAME<;HC&u4{X>IX z!5ePkJ1v&b#NYAZ}OB{c$i=r=h9)I8eQfKMN>0OExG9z-B{$b&H-H?J7Bl57C!^pa4Vr<2t zv@|uTf0de8toVdl)o#taN@&EGBAF?$+hWQ573`QDRd;fqzR=p7|KAL4E z_t9aioY`3qKv{}Z`qFG+X<6wbFE5|YoFs;SrlO*P6Eak;huLMzW-$}%ASybYB+n*; zn|s3k6e|(}0~iLG0tg9-o#a>NaNAi4(G2g1@-kC@Apyk@`4RqDzzKs|_y&d_n5f&S z^u&=YRkxdU<7GN3GogN)*Ycbm%S0?`_XTy;`Sy1 zgCeddX!R*m8q2>&X)}6H z^dQPBx5mkPVGi&eG_OBob|jkqI^z6^?`Ls!7r#JEMtbcIEFF?1xV!olDM07y)ku2F zpQ>xW9cGZosUnZ*ZPN5kAHr}N94ruindf}+U7v|k%0 z;B`eA|KW-W)*OKo8S;jO`kWt>Z27x{=)u1arZem75r5%tb>qRGL#>e&WQWGcxw^T^ zz5a2k1;>AOqXT6iKxbh^xTiby@!jG@p#9^`)ZlxbJ^>i{pc0bV$@j4EciRSwhUXG` zB9TmFp%?o!%x!%{r~=>A)Zw3!>Ct~s53-b1lr7~&iN6k>0&$qMO%ad_UZ8OEM0}Hj zVuGv0cAlzGz|O!UH%Tw_-+G(Pr+G=xv6Cj`lZuLpSj_McXKMa#m;MzXxc(BiW>vbb zYnQa{E7P@>V97O<(E6*Ln{d0`L0qlgT>w{GpsB>+!*Q_Z2#*BY|0B44ThNc;;pxA& zOkS__k$z$^6oNfmI1YPHK1MB968mU1?|hc?q@(aIIrwT zYUl`wDR5;XdAM93ccRYann_*PS7mcgRI(JR4{CH2(K%?5n{7Z|#8LuA6#Ba*$WGOd zLCAGqoc6=-Z_QswP|2HTw*?E3ESXR3cfD~Q5~@(1vunrS-k)6MB((_1U>-*Z#TLJ! zr-be)JhdkU&D5VBf!82Jk*BzU91(H|#KTD>O&Lm%kITRB$r{_cd}OLc6Q^B=7NpLKR4Me&$pEEBS6w z3^4gYCz5T#^WzL$M(i59Q-3sH_K&rh<2?V)kL|_faKUY=T`%kF&kc1Nxwr3Rgzan5 zWUOCPKKBA`?*>f4Z?OWYN{-69vvX)Vez}0TEAv6E=GrmoPa+WL(6MFB_onk@yIY2D z+ISR4RPFWNl?(|$@S4|B7sWl*zcR#yTFHc&&Quo zl`8eny!?J@|uju^G_F{2poe(u#U;BQ8JT_av*Lc3BWl z)J{f(d+2;{gjWTim<uM;c-0EM} zhwLW_|6B3dalD&EAX?1g)otH(e5c>JE2w}0hL{V-`ZD!hp~8gCM`I&{)LT@mIMiDz z+P-L0e^b3o00Hh8PBCi%|L7`enjafzhk-!KD_b~!TRa5?@y}fQK^J5JAmy@tIVik} zEO%GvyENrSOvE2K&elaI#8x2z(xvmef7srBfcWEwmke(|3CNzu2@>@Rn(gh|Bo6R0 z06m1b_V)Pb#Md>cmP*0e!DeEx*?4?5FAAKfVFD21SKvE8Nm+vLz$+z;W&!)He+~hr zs8>4F7p|#Gs#vm8U}>R+7Z~Q45C$mkF0^ zvtH}n#L`d^vKrn&JA8au0<9ei% zaez$GF<{UenJS+9S6bi}s7E-^6+zPcnhQ;V)hR zUVp<6^bC7^OWIefRd7Jdt=bT`@ajs~3I6g&X1}hp(ultN)6oR%7KmDl|JLBedb3xp za2mivE6aO!e7hs@wA@Gwf!)mAbo_HRenT8RR=9N$ka|xhOUuIy`3u5L(oIHS`jT3Z z>)JRC2LaGusLCfaee9KLRP&)NZOHH?I#-X?q5LZZFeXfBH$46qQ`j3^1h$;)kW~KN z1G$X;@KrKpZ{#?Fmwqrd7ck8>>yiEeg7TVgA-|BilBAGp-k9w8N z*c&;95X=7sXsNG>$O;C@3qcC8<42k#`aA@g%$}R%Hn+XqKUh>|KS_(n-wb2b){dIs>n!oIa4?7fzwr z?JMifyg$?s;JNqh&)y}lgVatX$q2e1bS##;dCjF3iUU;Uu7DqDAcG5D-Ts$K&_9>` zU4@3Yl%K#KAlV8&-8}w;9sJ)I)DAxf87{+j^5$=E+yi^EddWlc%cI+i88dyd&q1Qn z=TL@6kU9Y1ZoOQ88CQ2#O=flZe{RAPx)NEqu<)Laq;lLPWqe`!!9l1T+R4tgB{J(C=m81!GnvjqpPD zwTqj^rjTO7GEaD6WEO1P7Op$!P*KnlC!NQ@_NDPY_J6n_ECNL{0c1HlN z_NO5bh5_?N;Qooj5ClV z#oijPZe8!Z4nwP^p(BiHUD$$m**Tc6_LT8D;N09e#?UDhE<*EWo`9cM%c&w|ZuKvu z!$cI!P6t6e8g9d^MyH5MeyoqB{K(neGd2L!x5%{ebK?p4gK8WkZ1=5=1!=wQ2`i=G zvOiUiUI!=AgmgT}gQo20W-U^tsN+ZYl2_T>6(gbBac^R^q#Lo@(Ch5ClXp5=hvK|q z%4Jy9wkmi9GnRG=K>u!G=Mx9*DHF(U*B;U!1^y`oRE3HA7|p_&sp+D#Q_(WXPR!pK z7S3xDq_NY7XRNOeQTIP#!x!IBNC2Z;#qch`P9%IF?JSmKx`^^asbU>y}D_5=mb*K)lyus{B zGfQPyMU~ zi%*E<)0N7^2QvC@KTIqtrYJCYj|R&M6_V93`g^SQ<=CR2~G;!KVm= z=M(cG^ifC@-SnVS3ro*-11;QD4K0+kY#&eP`!-SE=xKq142X zxcv|MO3~n=gh_3f>@!ceP{Xv7Xug4tnIHpDhlGXFFdxE|KmEYje2^(Bb^_n3%_*x- zV4HoexCH0d<5?hR%({#F2EF!fxk7Gz!jyztDM6Cw_(Pq)(m>mEQQATSAnOnZKu?o| zeoOanl0ff(oaz81=r^r3%GZl3?2DxV{|V-_QOcZRZ)I7(z(t!KlhVq# zdrR=HtzbO>s#<@n)(2tq=h5E#C;VDgnXM*fn>EEo!w>s83eq~~yo9-Vy1$mJLrl*# zxQYFHb`T4X?rr$SYrp~9oBh7pPB>yn20!RLGyK#*IQ@(w|PJhlC%6X_; zKG6D$DMF}+1_H+8E&Pd0;(xe$%do7v=Z|;afOMB2Al;pUbhk9p-HjmKC8cyX(%m54 zNOwvJ(%lVb^Zd^L#W`=exb9tRt(p1EcV_q%z$^#lWP>Cx;X*s{`+9zd=NWgmnKPQ( zG{%9Di^2+cF7prOs+CzEvi^E}e`%o9H~bSzFDi9&W1}w?x||!{T2$g!va9Q`IG(kI z4E+=F*j9m9g?N5mjgI~pmQ+`QC~WZ;NovrsW`c{W$vT>_o0Hd0XT7QWr+geFEaEgb zN0<9YLO)%5E}OYUhR5W4?--spn&!1tAK4J7(J~pxpb$YgBnl#NtcUhngsay5uC}=Z zmH#&kxS&%I&Dj2`RA{MdlJ}ywe}nz}!z;Y9wP_Ez+e-`Qg^mu-qs6B`%_%GJUkOLV z1J?c~n@)bkh8^b8(X6hMYoCI7fWLoXiIDBt2jO2rW}wR ziof%mw_*}k=fkGAO{_9ak`T0Fgva+)Huh5h4q4bF7-4Aomr!Nzd7xylVA*jll zExj^sy+IYi#B`$ELdy0-`^XluKwYJYn%1iXYUia!gCX++Vry9*{T(>V#!#VOl^!;)7vD98`&aQf54C`148bb!f;a;B+yIY_}@m%R{ zkwQ9O;hB=R_WmO;ExQ;~trv5aME7o%mApsU==do;ifceI%=-1>vzU(sE50+zk(0c9 zLdUT#to{%Q@!*8hkDNfLl6vq$QAfV)1}})ZwMSeu2cx%nvNxP-CYK@EI## zFoYbTYuV;^T(8ji9%Tru4X>yT)1y-3zvW)jecaM^6*{LuZ(IE&*8SN)E*i6uP%a1k zI_3>Pqp5txp~S1|@y+!*F=p0WE`?1jC@hEv>7HGQ7URn7^mB1To{G;`LihY<8J6#F zqTTQ^9LfDK_lX~N{h!4X1Wys5cj}3-+{;N)DT7YY2>8~qwot-*-kEBAJmQ9ySBD^* zWv>}xtOdQ}icCF3noc5&%_Ia%^?J^`C@d;K;ok&0 zxLVJHac;*3U+hM|DWoRLUkuD(%XOgS~$7VIaS`h1FwfWl>I*=Gi<#2-Kb zt7H2Its*I;BDo0dohu}Kt&P3}y>FwcsGcgIdEEY1V0B6PXOkKu?CBkR4u{H7?q zn%s55df`dYtNmy3F=X{-tfxlpBU^8G>^Ut-^XFgmz(z~WeV)8Z2)w=7o&G+xhEt%y z;(+a5m1dnFr!WFXIwDrZn+qI37iN7%@RXGo!tiFYCAu{fw)e@DzKZ_IpAZUBTepOI zVgU1z)_>Ju0rP1{7W*h+LxIl2lJpKOaf1*35_Z}W$hs$pTk?RNLomPzR1ettVmKu* z#Qn1BQe8U=z8G>TKE^H?29|~lJl{k1lF|@n_8mq(Ej$TSh~`7w`AG6jA!k12u`Hku zl?)3!a#3fqI^#x8&;nP$rWE=|2umPIR}q{AQm8Lbh1|_Vv8Fs< ztryvBW?rlu?GpcS2X6<|DURQccEw)AWs_Y-6tC8hfqC@dZzvJ0RKuXiXus-&z*fqG zsS)`jm-p{zzq7k9#=lK*S5$?=@snhK_;~VJmy@r!0%4iXKZ4{A8$AQcAPWgE%*`U4 zbMWonbQV{y>aKEDXIjgV(zM4@X~*kn26dbv>6q6 z%My8suJaBExrU3U(7jX15thxkGWdGGOo*HwSw@gyJU}Yo04JL=93dP(O+Ec}yDi37 z`M+;y8PY)O4|UQk8k<2$C#KdL&#ftpnY>gTSO?1ze#_qRj%*DPF|Vq2cCnE1r_jQ@ zd;?Yg>Ry4}RC|@OupR_A*q{OM^Eq#k{`YeZ4mfv8_^JkF?5=;Iw#H%t=ZSBb{XTwU zq^)&NlusDd@<-k87JyweyT`q@5*%ZEgtuC<=C zyX2E|p{WvRc^R2=Maw)QK>^IC+?_-eaO_$Y(%W}j@W(%iLt6y;IVZeFmqrdVN>+7v`q?NUg!2w=`;Gq$gopwoc;p|JFjIO zk9No*>@rIy1QI`GCW&ZEDm{GA{7NCqJ5`jUFI)CJ#C1g?^&Q9WVAon7I+FNyJkRp3 z?J8B%@{uDwJDXaDh~2_dq}^k{`kZb^oRj~BE-cxzWITea$<64q^e;yf63&ZvEP@AB znus_2XG!3rN}Yzzy?js^x%z9s{%wUV0iltVrKF_5E)f&?zbA}1Y#&4P8zNVy0W252 z(~%O8Bw-VtJFS7l6pY$6wdWq&z-MokcF*h9H*JtQ_p43@d-%71^0gQhpz%;i^1)yF zQE?#R9{;~PnstqgfUhO5FbevX+80em2EP4h$#nq{i#?Zzui9u=Hw4Np&_a)T0$fEN z&-DD=eIcW8oRf-x=qJIQT=xiEMmE}UWv~c@+kowXI}Xx{E-YjCMV)vjaOf*}V2Qgw zeHaTQGSbBQ1r7D;=E1Adf0`~L3CR=#T{f|LqJ5c`Zb<$T0cHp3KUWm)&Cp3juK1DsG=6#QKh4vxsqmA?h zeiNj#KBL*b2nhzNdT9E!UKEwDd%|@@5w_bU0*AfdOn05IREO&e{8S<{ka<$2dCaS0 zO43bK{=CA)8sFPlQgSyCl&1T-I$$ZGZs!v-9!th|B0jIa-jhS8$<5bQBt^H;k(5U0 zDs%mH2Ib>-Jm9Jvg;Hde+o&Sa*4ZnSH|)nJ(GuxZM}&PiLZw|s?WaTkShKh+2oBM( zlJ(LR(HY2Y7k2hA-W~}iN|>hwR~I3RruTqcVvsf9^&WOIXr4rTt*rgiOFP^{=VHRM z(629>r@75k4sh&+u~buN`=qiRvv*;~ejKrcbG=9^WztTIatHv4QT@knD_^Lv-b4NL zZCY|~vhDoC;J^vLV|8{uIy5Adw03cWkMH4{#5r1Z=iWJ7$>s z%zh2AIx8BCi(7sI{A_a_k$^lcMl_k&sL`~WC5*pTCo`mpH(lp4ehP&etxqEtp$&AE2?|O%u5cXB?H=sB!uW1CO-ovO0N-Z6yWAd}cmao%hkWPJO?- z=Ixf(Y8Mw5i2`T-@~}KrJs;p$QfInJpowCQ2ka^-C_R@BMc~lYpa+}WwB2MJBBjq` zOd0_8#9ZHnk_T9r#`iY~eX>F6qHzj}+XD*7>OJiH!(!M#3bv zQexU>8OcA!<0nD5`%O3)GkNU)3b^`lXN)b7eDw-|r-xs@YszdpN#VQ8`6{n9F(gJW z8TG!r!I&;yBh-xTA<|u-wDJOR(2K}#U-Yv6Pv>LuMDJaSce-fJLqW%dq(HA>?Fh{9 zAB3j*DgB!uE3iA25)EuqA$t6(9nxSrfSE>KkD`2(h(of83FvZ?U;2E#Vn)lzy$#X< ztcSzT2ME5Wod6C6!xG5MbNFj1E57ys*_KlR%UPKc&AXIOH{UgIGxE==wTSv1ax#DN%J%52?M zLHc=mR9EY@oC+eeBVI5jo2ZYl5dld@>s|!15EV!4ANNp!(k_j$PDu(kNA;|_8?=4D z6QoE;PJn-nY8s_z{p#Pool<@-sY@b^bCt5hvm@Snr5(tv^S4o>uuB*Bv6~HPDz-M1 zP8ha(p0YsomsG{*RIgxv_soq)hQeul@{MM}!I6t0+4HQ=dKKV(oR!A6>AOTmvJ+Wy z@fH?o`{1NvDV0+qzh;)raMc#mzSZ%_L7%E5SfxP<#86W~K;z|VXYGx}#57o=E$T`CIeb)ET}{Ot_UG>dG#DbTVeVP2Z<#W_ z1_FNe6BH-N5m4;ZfCd5MQCzy$(|yVXu3i~_Kd+cuBe)rcu&p-=%d;j)Dk#?t6{?@V zEG?YT2X!%D?=JG@sLL<0fM`qmgSg!;@GwPaQ1DA|rHMU_iq%0b+JErRoJ6k`Iy~UDFG}o+3 zy6^HmXVwjr%G=K_6{7APU?p;2)&t~hHq+CM3^~!uj|xh4{R&Q%tRygUys-$&@{!b^ zPT3~RFrg{Z{}_D|N7I6obGBx*=`yWR=IA-X@sfxJrb~f z^MFG7kAckb*FNO63fVV#e?OQSbFwhO2|9@=6JFGa$xj4`Qoo0$>$?)BkZMWvyQ|06 zHqvTJ$nb-~kJZktKaz;t?U;@v`i$jP?B@mUVpsWths@Z3q4U^)MKLibw_4j7;Y$M& zQ~(@&2zw>-TE@F^GgV(&4FP_4-hC@YMorrifTF@s+$b-WS1CWA-@JNL0GXksaI|kq z@LrN-{tBR%DmhEwYE}I?x?1@-^%YnpbEmMh(vDVW$lmox0sT$ z`RQ=7_GaVquoX@<3bbt5x4Ie(i4wp;vP1u02FdWzSQJH`WWHD5ahA!vH<;Ac$@Au!CW5goqsVliwGCtcS zZyB)&j^<2ADq|@?!TX=Z?EhEF?Hi;9lkVPx^tXz#xicBDdsFQ>$^P@``A%_(`yK<3 zAm+x>m&);h@Ia`BhyQC?=t`LucGJaJd)Ir({xv|6QRt%e`J?u5TX=Z5go3osCn+S< zqyU+BA44yKbKV$m@l*TH3t!fUxwPe%6}|53Z@o~cP9}y?236X}qz15}W2g64_Db>> zJ3i(q^)Hx8rs1>aiVNx@?392|m8e66)s$I9^M1+1{uVJZEX&(<9zEaeQM+#g@7+y| z-TwyF6E%{3N{##_#+OF&5!1p>T6*wPp~^{YV#bX_GjHYco^wB41bDnFK2jlQ({1Xmoe^`&xSzxwV8 zoc`Lrh960pjrvss>*j$=F_q~SrkmSub=*A)LC=`CHMzOD(wZu-%carWPOKDIFNAgX z@T86FN##KFdn;tBHahGwE7PGub9>+{)vhR$_svt6!yg7n3zMRhxHnzf0?!Bss7%s+ z70=2W+O&B6&w9%1Skb8HS;MRag&K;CaSJet*{$3igmi!7UpE*8rJqy}0Z7fsn9Lm7 zs?t;zPVQmYaeG37l{`4lR<}EVzRrUtzWxnvy{y6RMr+54ItoXa-%!i z)|vo$Smc#M#5A_v_V<^2T?UdlmHM?J;@Gbx;m=jSKC?xzFBuOWx_GK2xf$c(*|Ys4 zJV}2uFCklseugN#>p(KDes@qJWWmDv9X_JD+A)u#y3mxfefnv=nBU{tM;q(>`t^E3 z;<%_B-3GGhokFnCd#kBJ2gYsEe}e6NI`ofKT1~gErJZ)X*T3v|AAi~5|LeT38_$Vj z$eKulMfj1<+A1P+PyO5I7ZXp$pW`=H^CYQOLe2uLA$bdo_7XTfKFH1hF)G(1%8Lt{}{!m&gsFq-aldROs>ZcRL(Tabjfoco1-(!Z;XF`Bl%aJ znHyHBbKKem)4XZ{_6t)|nk*_SR*ZQgURw>eO(8s+dA!T`V~u}webAsRMTND?j&An( z;jP{~%cJOwj1^WhBsmfuVLurl1#!YxQ;`d42p4Q<@VmG?xO*gZDIzr(YAYy45dacV z(#}&HpfEnMUR0D`s$jU6#fFQbIm39H!UoKb)HPDMUGII+@GDDoW=5V#c)gnR| zr65Ls7j=y-uY=&n-*x{+63k#-bP_h4&MKJy` ze=`+~F^j78NNbZ=301&8+FDA?nhI8Yx=tpZcOzKKA|VN+DYKoGChlapKi}ECn|^@d z%K$AfYLdr~xhvGy4KAkB&0u6>oc$S|XiC@4dwrqWxTWE{V3h~T8Ju*zRwgV9p^%K4 z{7O356fb2c{Jf3io^&*W7Z<2DOCRhEnd%O}Vf1y4s2G6KsqC{zJ864)CZFk&f3;r# zz__rG&hEE2a;>M{!oTNoDIC11n|e{H!$BrO{j2%YV&Y8!*Hf@sjKe(@v*C18iaXg$)fvl zIkSl^eV^Ck(!$AR=Y3&Zm@6Q}_pSjK7uRkjN}mgJl96_<*J@VwMee1d4I}#N zHg!z#1@NmoTs9PI3dF0A-Nk04I1hEm%NeATirGuaEA_%e#L-kdOzHB5^r!q)))|QQ ze*qh~jzmiIuxuZGO2u|r&OLBMVJncSdX(y=^x7U8)MnnmYKK|}SfqLf!H!ra_XXvO z8Z3C($gphP@-&AjC>Awn(mwGNNgThE7nxjFZ06!cS286*x$N{T|i0UXx>g^ zgyh{JF9Yl0jJ$VhS>tclzErm68E}nAgu~2PrqcXj#NG}dSqM^;jmtOR(W|*}`5Y`F zj+@I|qlmE12ObJ~+zBlu+gnb_-`^Q=AhM(2yVPzCJDfY2|L|$8HtxZ7DkL8UIvHGl zf%AP_o;|#`d=W0C!Wqx}9d3BjMhl4M56XB$_aIb0w=I?J$$vqo$>4@m1#=CZAgN#h zj#0hsa$IGvvL&RG+5aqTGFz9|NbH5Hor~(BOYfZ+C5$tpi5Ds78HMZ->D<5K-t>1% zI5qYQryY!pwt0$0zeO&qF>j9oQ$YX7B}!ZH`sTf;SCv#Xss^eATimWi5X+w(&#OEK z*4x*O0{@#@F5^dP)z_XS){$EZsWYVXV>pGC`HTBpajL;DtdMcZ07a?cp`+=a<|lm= z#f3KLzVys=Zn>jT(Ua+7bQIF!xX)zDwqcdEowFqArG3L6=;@(t$5cqT`U3l&GIJk4 zQ!DuF5@1>PkeVQ{+94ewF3O*6cMW7MKNM>_^M3*@G8xh&_vY!F5KKcZm>Xwg>HBvU zt3&e?A2ot|Ib%=Jpnkxj!&K?|oiH#mxwW*#cQh9?RGO3+_PeHH5XPo^ZQeUnwM_3t z=HDKp#r<;{K_`DVxXTzS^QKofU;O@??VlnSe{^S=@L9|`?WOcjZ4tQig)Dy=M$wDo zs1Hi7uhL!Zj&Pzc3$SwsPD!ELRoX5qdk(ZG;3!sss)E58x2>Wy`_)1cYrS!y#)#-D z0yB4Vyq|T^O~rMpYk8o{6cbD%hNbZaFsb{_gl-IHse|l*gHiM9-3PcKV%3-8d)07S z(y~%wIm8;Wjb7hDNj_C*9&0>JT^=r9iej)XJ`uqHI5;@px5Tk(AQi~5=?WrVlm{R5 zYmQ5|Y{v+TF5$ieq2o%uBf8Gu6>ui}U>>7`HD&Uhp4z?*3>wC^#vYpFRmH6k0CZ~` zm6+fTyl>v?Y-G)Zozkp13$9tOc)?RJE;A!ZEQpt*2d|zvXWjXu@qgzWX!5>c#j$ne zJ!yghJ_0B}{9r#`&@s@8?TP(5r1Dw^JVpx;Mu zo=wZ>gOAi|%9e^dp5Az>{~BJMUXU;(`o$~@X}NyivKU1tr*6bVBxCx^gONK6d`aMZ zaTig ztSa-rUnbFs_Rm&d^Rv;W_T*LSw@W`WU^J9c$HC27ofT z-4gtqo6=JKy~!_?d17md%DMI|NSic%&-3Tazd^59S?7ip@ZO`%WD!`&aCPlpSat#* zN`^rU0lAD~^@ePKHtv#{q)5l&ONq&0_}}}1rK89}J9lWYL4)?PFqctO7^nw6|FMKP zS0W@H{PnElJ^)}@aEldsyYuhgdW^_VnIzs5$0ScLh~Mx= zUH_u(%$sR?n8!bcwaY}bKI(e$9lur5*M?Q%*LuKsGP02SMGBto1IM&jonB>cdZ!{j zHCl6L1FDv7l?$s-^%S<&WBN%SS0$dY*mNO@KsR_Fx-Kp*k{DU1c&zr1CWC34pkMT6 zgoZ88rS-M%Xz;EfPVe)$)+zQjGqPn@SMQ^jqH`1WksE1APij+i*C0%@*#+vz^_`dP z9GS^-VHWJRoahi~jo~oR#l5yQc9AN@2R(5PyYEl|ZjD2I_ZeG5!@ug99q#ZDD#nUG z5!E6Ob0aNGCjF%&k1;6+N9AbLCFk>_z)xAlh-!&;#r$!E<*$be)w(|I{VU+9^eqVE z`dL4i+Zh2!{$1x*U~gDC=VP6?fy-itr2K8Xt93gr-=6>W2B~6%vfGkm1_9B#ysU_u zuxJJS8^m5-7dDxi+F49z7{T7s_)1oKC=3{bOyES?<2@3S^(rY6=&2Vp9;E22$*)tH z%>W$ZhO%`hCp@5m$e6e&lcluQ&Nrm6c;`;x#_8X#1M&}FE0n-dvuT$?*zIlCwv{Xx z?o5C7&^uHG=`Oeqn#K+n?7&PjF4)2)IDX>2_N2r(R~*)r4cbfxBo}kB%X_Of5@*MS zSlHrKcZ;G5pZsqeZ`Q!-`QNumJs&Nu+WXCucwGre#^S|ptkGe(e+Q|o*2&7fmpJ^*COF*LFL@mDGf=FA`QowC4wi8KFA& zZ3WBkvX&@wz{4BfEb(M(8fI`7Kyh5a+=2M9v)_2-OlD+~QT2QOpB7-_v1Mxc9;j-~ zZl&nx+W5rcSc~iPT}Iy)5yKra;=I5>esd+~(XbjNjqA?}-HC1(8vpem(Vo9z zM-x9o9AG9^7iNMebxoRq(rKK!zgzf3WlZ3|)AFSHPw?YHJm#sPC4%$7B znL!1J#wKm%sR6-Rp&}v7%-mp)5JQ7Eju`dNQ8LN6YjO>j@xj5p<)DdqKNog@<=^(T z%UpM5jFm#k`8_lhFb?L;15m9uj>=EW!Tm*rvPT*kV@i4NtHa}NO@Tk2;n2-PE*o(b zJ2K)(UC`phOi$0`b|cim&d59eNh}y>M@k6@lnZGRGe3=Q0Z_ub)>EJLo*aqi|~@5a@kWysI$K8_@I;Dq&Q;98@~{@d&}mEll#T@ z{>1QZ6n$p2D*P9xikkSlBGs3$o#xe@^~ItLCyiGZXTiup4bQh~FIhHV@DRYrQthR3b~ir>s0@VBh%$-FJwPx%)0>T%C(M9vG{wgl}8E^`^2e2)6}B`OO( zyAWLbrJ?f4bfH-YNuT4xPbC-~_~fKE5@76{=0tS(pM}Lf0S08E#*w9K_fL+l6>*J;e380v zJ2PQ|1HWnVw4DYKpav13Rfr?MpPd-%_YSLp=pv)ezs@^)i(ljen^Kcs=I?(Ak)YG3 zyoGY>Gn5U#4few4xeo@9Lb}hNRz1k_u#g*vGj?R1qO$&uOe$EokA+&w06?Hx|KK$^ z_Nek?E~Wzd6xIKL?#aJ5(epolv(F+`w>k`fND#P|;#{4-zxd`^J<#Qt~xY<@dphMHt;sd)lpg%YZAp`9ofk8p`dv z-`h0(j3Z8;WTPJeLNruVb)uSbIlUqhV{A%OQ9EhALB9OtNX&od9Tu zC$)9wp8qgwMho@I@%4PmS3Q+%=U1Kx@21#?mMEv$>n^V|T-%v=OoY;1G4@Qcc@pw?@Ua~t|O`}KdGh3P-? z7OcpOf>|h&J}L#-bqmMfTS)bB3#YyurZ6iMrsm$FN5_-*vvCw(%~`eNd&>*E_9&Lo{@BOL`g_O*kX7BtKcmMNd|(V59&)*j`#tJ=L^d zQYuoK`ybAgg?ZVSz_H`OKxdF|p81Yh zQ;pL!Ses!xu_Xilpc@q)jw10donUD)tevizI4)=>xUF2$i z!}M?Zi+yp48P=|*d!GTnSDXP4?`NT2s~ARxyvdC&u#k~T04S;}SK*<*_z&LR&AyF* zAq$dN@k+o%Izrc-Hx1`>q=Ag1Z_-vWJ2cjWgYVxWuqyl}oT2w5_7mvudM5GOx8a{V zQN5={2ncGj0S7;C!($--0uUj5T52k3ziw=3Y5qCD3Leo8`dU5BXGKAiv=F*)$WxeL zNi|I`|55;Rm->YMM__&y_)9TP(Z&-%(x=0c$Xymjo;zAE0_y_I{H(89Iuaac&=Y1R zZK+kor~Y%rBHT;MHEc^F_vY`Jj4z3L`FhA#wFvM-~dTHK|LfC)u-o=AcQRluOKV-9*| zVhpD0`mM~5Q!WZu=uYIj3MzC^DVQ&o)JSCjd+L_(vSko%+nLE2b+hY1eZizDYxCR! z;}WptDiOHHk1_s6WFk)aONQTq4FI1K@GEmel1u$TzgwS#nj)TaARFt z#ZE5SG2wRz61$g=elW^0!KeG|T(Wxkf>j7Y#f?(B!W>O;`=%}pYCeV$U8TS3B0PyXe!R_hpYD;<*l_iA=^>dTWO*g5m}B(j%e=Z+t@ zE{GRNe^r`*Ej^7*MSE_vbQ;^MzvuRhxFbbzk?6x#bsE+-C44&~5Pio_>V8A24_Y;N zQDxgiHkM<^<}sb`I<1+ybZ!yDDHv)2h8f*_5`8}`i2ZG;Tf2XA%^p#@o1;~)+ zIUH-dY8q{@%`qIKrIt|w91o@2>`s=;BWhI&KSh;mzZ}UA75hM2rcbrjV*=#eX)kbErJ!86|JNB_!wElA9mav62;keb5UVzoLf zy6Wp&-FeJ0j6l?<12{cg?qStBeq(jt`H>;$Q~R6-U^qGqM5*X5x`WeL?(t^Ul$Dih z*q6Mlh7%c49CeKasdE34@RbJldRca_bxM3N?EbMG{Im1%?t=HkB0#$6at4D8FLwL$ zJ@f~3mJXF0l&}6mB*mssxr&c_YjmaoJ+ei2WpAYJE=ofOgdTE68GiGjK0WTbE`}=x)wl=L#URetWqM_60 zQx&p15pxmLn?~(hYh_y797Y3xa(>|tJa8BPf2CIHN?<$y={5TE89=U{uO8nD#+vg0 zeV0wKO(GGgtmt#CSEK{-s=FAoz*n{C2aoAHI~KWh1?#aAD2SV^JW_%`n-B0QHEpSFZf0ovds$?D8Ra z_{esTT401?*y~Uj-W{e77P@N_Bat4T9HUU}Zv2*XM{EB0bNcTdeif?u&e~!YZ65~*qeabAW1cgSjn(JDzkC`B%@=oPF zDQD&Jh>8iUTv_PlLtcL&NAZDbgE?&l0ZI-SqG7SiQiWsX*fz#Rt3&Qg_`zyjPq7F=BF_!Y9R$)f*jp{A0xVE=+R$&q6*s-N?1WepG)V-!lLwEt7>tnr zzqm~0zqQlPQiV8k&Dr~&6r=Pj+y$+?e8DGWtTmZ#$C%uhk5q(Cuvp_JiJQ~4PV8Zh zg__~Mp!2B^eU;{EN$RLFOse|xP_5^jv zPPl#lS3aWC6GSzN{y}MT?rL%Ie)2Zqat=e(VHi<*;{ZpkBDnlI>L+My z)EOTkbj{5PGf%0Oj$Y^u(lz*T118CEj=z2y9wZQ#`#c;X-Ic3gx^P0hvC2w9HxpE53?a7axK>4i-Oh~Ch77&EO zqw&;1R1j{G^`)7ZFCm*>Xq_JN97#!)s6eMNH<#&e1N=fw%P-vzj*-u2cHqKTg{qPc zl6wLPl^_Fk*C*|dqpd{pg#mkF!d}>c%>n4cvC`=8QmVcq-^B@Q6cSl`rMMfJwOR3l z>9IPwQy6uKkj-zePY1;9(FLT?(v~GhdWkwntf%`vh?bQLMm90EUYtnWH*Qp z;Yhw1*h1adV8n=YA0}-47Ve_r^`8{@Ibc^2V~m%q{|C_@H5qJ-u(166dozrA{wNZ{ae)ULQTNFp z8w(m+p`y|KBP(BBL0CaZ05zzQab2j&QxnTE@#CNstu+@U=B~fGAjQ8A3Xrh+otF`F zJVqadA)f`69v$=Z#-D0lYI~FHjzUh9{ZMRa<~;XN{PlQEOu%MHRCWsJ{rXcfitEH( zk?4w0jT;oq5tQj7cbbq*Z=|#bx1sjm#CvJD2oJ`d=MKsidUXZ7v}nWRLG3=l2^@2n zHLx4kz%ZxP)omO|%hJ&e38a1rwo(EEDAd;^Gw>(H2N&sVrcRg*2aG)D(nQPzr6Pe{ zViKKv3?hPxuZ#=~%ZO72(upe5U;2{(?!lt9M@8A_K9%GShu5#Dm6^qPv$aXF0JklU zT1wfr`rvXv^)13xneZ`c6ly9Ue2kxfm}e5w76DNjvbF}YbP(;}Xv@T!E6v{+V< zG&Tj7kA?T3$-1ZC0Tw2v53V#Q-vmz*`N*o97rNdYS-@`Qx7(Wb#nhhfths^~+tyqx zCC*9Aga8HEhrn?@cr|W>Al8t7A7m2~ec3E6-9aZ|dZffOK_iq(9r4*c#u$_@xF{&K zgBH=3FZl${Q6JXUek%1@lZ&>4DV=_wc1j;+P?hxVoza~m$g-w=h-RX301;Hrsael8 z0xq{sYLQbGKvG!w>(%3DkGiMPe=q2__piFGzMxfTbT|OijG>V&#%LHNP#D%P+Gq`P z;*;CM8f$|OJ2z(pQQRy3`90>EVD4S&o)MtkwX^}Im<|Om+~blGqEhPW9_i5q#e-x~ zQ>b7w;G)gp0uE#o;{^>ao(@mK0}buPTRIQWRH3-%4Qn6Uwo>V}1<_36*}`66#5a43 zqXgb5LAOj7yJ9$=Yoc?dY%$HRO0s)C`FjDsM!2cLO;g=5UVPr>j1Z>|-Te}&i_(BW z4r_1mD+x@}^+LUg-bK!(Q#gYmD#vsdC*w+!KbX8Ia|BjUPrrc8=iR=;Tas%tA70)c z2mr%4;2WWth5i|}v)$$rG-%<0B!ouR49cQz_fEnoyi{3XV5$5ZKJgY$eL&AMe{vd` zF8K<61dS3ee?BU{^(xH`t&03#Uy-^Tpt0flcNk8oYQ1(IIO*pP?FWRo?+vs*t{1gXE~ z1eHeFT(f3_iu^1e-9e<=(idd31~Y-hPzeHEribzl+6S9{Rte)C6M*)pP74BCQ}gh# zLy@rz1UM47`ymh=qK%0`@}m!BD-X}fgl*r#zC$pbsUZW^*}e&HKWPwzH58>kZM?}# z5rD}VGOXwJ`L^Diioj{$Wg*czYu8~V$#EY$oWTo~JqQTkkQ#CtHDR$Lc0C3Za{GRw zuRbO3R3U80Lnwih_+m_Ob`nwD={#FYjhj zgRiI1d+8yad3}eP|B@3E{tST0S1_~HsAtR*6~=_SZaLE3-NN;R4puL)O$2jHs{qdz zo+V)-n z5M^|T`~rfEi^Pxx13~n?4k~Oa<_tCnCZ{0@HqeP&uossYub{;EIG_DRv<|D;r89h# z7h<+42UJ2jk42rwtgi4@Hs_*9os3VbV}Fl0303RB7EFJxygfyu>~KUTYN}egIcJgn zVkb9nZ8d?6+Jcc05Z=wHru#@(*ZQuD6F2Z0fW#_c)aX`=Et8|aW=$?vO$I<$cV~? z`xaNU-*;g!HR>7_0l)RR{$oIhAwfg&@NL?7p}dyX8KxhGp$>}d4%7K;&G^s{CB~9o z5tGikSkk4?H?dySSYKq2kknZ=b&SRW{vng`aL1MiSbtil0-~Ve(~KHh@5}|6`>fm{ z(Sv}^YO3D{tB-Z0QPiEUN|W(OL>3g+Ul(4M$7k%IZ;RlW$v!~E5%EUZNVr;`>A2ny z;^+TYuwldK=cMYxspOVqvAUWODO6p6j(D^ukx4gie*DV^m%{}ns9g%qGe*nSz+^JB zhqaMKBo8FvSpx>=1x)H^wXB0GluIlnL_AtO-}PS>r#UsT0ezt4+L%xLj(HKN z{*7sE-jv2K^7$5xEyUtlbNg}YbPiGz(@EhaFmWT4Cp9y zt&77Q@PdU|a#gKFa*giRP%7k$-#`b%Zx8@5ITYX7;{I+pzC!>ExQsw`Xx(=jhH{61 z-BtLCT-&Ld@UW76Ut&7K=^xQ#O^9W}G6K+Gw7Jm6T|SE7Ilk{9N-@(|Q*fe_3E0`>mGITA|61EnQXZlr_$RDP&Rir}9sUN2Za2 zn4#ufpFzB&mpJ~WOrko&=<$J#cwqVxlXgo4)n!eLqa4U@87Hn`=t+cXfu zb*dG&D!uWtyC{0|zts|g+At$v6X09Fn%`5Rk--AK&eZ0bF8qc2*?28caSnj1)*hL< z49a0fV!&*M%D%4ZA$_}n(SXmJ$VWQu80M$$3 zqlh2jq&1}3>b!>b1HA&sBwLqVz~lw0@bn@ECAJwH6VO*K9@%cSdPkNntN`Kmk%qzI4afP-F&fTn`TqR4K_%B8-RseJ)Ff1U^OfhIwCy`;&*L`2g z0A3o;ol%_>YD}xBq?ib5ozyH+p@H(5mvHD16pafdBld45I6=9J<$78YaV9t_`~O!# z)M+_{$>^YC(V~b%l%N4mot0np7Kz=Q`IdlP9`3@r*hSWdJ7LAJei`~Sj)G<7ptOZ@ zqpm1Y8UO~B!-9(>sAvfeIWO7h(?AHJUIv4%t=o3m>%j0>XE{BRN;TBU@LGAW88?Z{TA`-Cpe^|KqbUry2nO`Uovx+vdkpb)cNd<5 z*noKs$WDk8FG$jV0&Wmh^?N8$a*O+T07xBt#m}@)O?3qD-U*b~>WbWE=TqTM38e8F z@JK&GlZL_0;J1|V=W{a!7`yNN4u7V)x&(2ercowz36QCJK79=&&zq+Pgs|kmgcq&E zZ!iCvZlAh35>o>3KA5#WpCC zkw%oI3&JUkE!7BZj2$QzEsYL?37@i4(y~U(YAT{kVNz!JGWUhCc&7ZL>q+I<(^&gX zrl^pS#l$j$=b)s9;yRh%>Kkt3&F%CDn~o1bXc!B#+&UuxKV2U4KE=>z2&omyp!YH? zAj1%v(lF8?+1rh^|5E2ft?$1!GqE8;QO8Q=@pX(|J)Wa2YJC)i$NQt&UvQ<#<7BI? zbJ#;C6Bzikzm>F|{nOkaSFCI5B+!Rc7`@gYp-ew(vwm+Sy_#`^@s_uHypfd4WGl!j z`I--t?Ic<))sYc1)IvwYVg37cGI?OvgrcSqBIKeF#>B?$fjljPu%K!K`c2Jdo~S;W zWt~`8Zd|io0Et-_9RgT8UP{$$E2=*B@DFMPntHe@u}>jC<$T;xz4%R#6aJsFt|}_7 zrr8ee9$Z531h+u&5ZqmYySuvumq~DUmjrir26qj?GPo05{=>J{eY$JS!#wmkU0uCv zS9SO4Dh4evV`}prZ|!!+6H<^m1FD^VPLfMxnNz$xoLBo|Gba_uxPlYykY`t5qT7M^ z$`lZr$K3%4shtZ{@L+QTb4RpZ+$Wew+f{A@&B`p0N=99B6pr|VG(!wNZ=UxO{Bn>V z9_;kEPJa>he@4w*^2ndBIlt62v=P1L4zT#@$x$v-&eU1bSxk|}YFd9kVbi@mPo_Ph zJQj>!0Q1Y9?A8br_&rBId-2L6$qTGb9NOe!j-$#EC~x%HMU!79o5F7|Z_68s9jF+O zLQKjbj9OizdSFG&ejcI$x;Qrz{xw4UVGc6ZlB9CWf{ zn}!~CZ_?l5RK^6A$=@lTh71e8-nXIM+Sphf4#vJkr@=>oXFYp?Sy1io@OF{uL2n5<-t09q@)d zBO4KPBz0G)6FjSA!x8zPtXN2sPna9(RnH<(^JAJz-;*vSL3v7vpXw|ofm+F(6eyi9 zJ_V6qh;$Xjh)H=I>YgQMkcF5sq(1S@X9-pV7}y18_LaVm-TsEcN#96v-o%AAL3AvP zIAFmFW7&?tZe%{1BYlpQ!lo{aaUyg=Bw)`rIGGt(&=!|l+lhs+I@+lHy!RG>#fYG4$i={dJphBFA`G-n0{?@hvYm%A~OgeMQ*x22| zRAX#LT}axwMc}q5;aUdcGAsoKioi-U8CS=+EkrBjPI;=Y=Z2zbu+e_$%xJq4J8CV= z(UORk68&H-k5)K&<7%bV51+>uB5Jl;E~hl@DH5MLE^*Vk$0tw!jjz@v48nE z4$T7w3!sCD%{lk(2~Gl23>cM?R|~FNQUk%NbMXc`?ibvz^#ys2quVLze>qbYBcuQ@ z2zqyP+CM?7&imUN_qj0=f#|jRBnw!MW^#v`bFasOS6CHkfcYKLGw z7}iur7{-DuVCRP67K)_?QUSp6CKIVZb#x@)pAp5Y0$UVc+COhEe6xMCLm}Gzg{Mgn zL;{5a@z!5r>prw}Tcm=$j0@{BI0gJVzN(Xex(m9(TjHk(x-yR!^U39*1IsXv%-w>Zq_*(1PhfTZu6;g@Yt?-pS_o>eqvBywy^$z$26*DRfBj^ zUxpajb+B@Bs?J)(a(!+rApl8~#MlDJ1MoO|@Ub`W2b|M~)4~C?2B7~iIkKn@?Kbw6 z0CXUgkPdlHjtfYgR{hnIOxog%d&eTrh@o(c{wxf`f~Fro$R~v7RC}uq!ZRGWuqhoUnmx1t(#F$ZN6Qv@B62NfD ze32Q*v5>L2=Ar z=r*AvG=q}>OwQ&@31q_^b0JU1JDVCO67qtNPpRy^U*d6;9hQs1AVLGO5|YH;cd zeFUx#TS~N!Gwx6`*2js_pzt81FN6msG^C4z)IIlEAZA#TWZA5b+Z{KJu^?=C(1%&7 z$nR5{0^2WRUf7*UQuVdU_@fSA8x^+z??;D%fq9ew2_A`n2W@`|xvK5*p+`ZR38<`n z|1ILAyj+uq=RtKUIj0;Wc#4PG^5{EdJ!({cKkUU`VUlWt>;6>O%E~+VaYJk`_B#GI z3nH|5IP<}CDh1^PZB`8y_q6mLtEgboI_Kw!ZUHLXf~h24|L^?R-1Bt!kC;Eax`0qq zU3>S@ru*VzUGLyxYb!C{WjD+wGK}3N0K}IxEM9<{CdG}zm=sthH*d*e$(??wU!j37 z+emg)JG>+VUq;l(z~mSQ-y>>C1HbTPI-dTgi?cPdQtq16w-NMP7$Ugt2I?+9*iMr( zWo&X&^(T@s1Fw>jfPkvw;iXKxJPwsKPphTgZuR)IxXVdq9RWQX?q{Hm5#=r3#$-$l z!FnermsEg-hp&T|>lLe(dI{%ctQZ%u93JRoDS>gUh>{O;uu05SiT3$x$@Edtd<7$I z!L|Hj$}jxjWlgH-h=ktG(PGv%h95uxG^K0ZSm}c0j2mOCaTeqOnfK7q2I7sgYJ~f`_@WadKMe(R_GiRkAJVSw zovG0KJxmWvC#RJtmtAO(6$KtFjPBxP2Scaf7Mc3I?~<_Key-`9zbEZ!!~Ta`*+_WM z;Nwz;@s5)UJKDl$Y0o+Gs9-}_0uE25w>0g^#A$)G(kaRH>KrrC#hX=FeIgJvvD7P< zm;NG*7-=9HXl(1Z6<1TMmi{Xae>G2nF_c=9hTr}-AwHg!xB*MUKP|N{rX|krU17-R zQwrpfi5<;v@^5MBNL0BHx)K9SUnS+`U&G1}QHO*0gulvp`c+(}lhi8Nu$OwmPslmi zWQB^=SI;vMdu?yT{Zfg+T0*VD*=rPP=Y4F)*1UnVLB?mpQ@Pz5{AX%m z;aDH7xDeS$K_u3pg0^uGsejUn%T&wtc3YRY!my6uknCrknrC)ZF$80R`xuT8BY{Br z9xYT6lW{vULk#4K4pkM?f3^D1arw6j?h6dmqQO@>0YB-))`}P)cw?SZkPHLlvkwcF z`j-kaAAZ=bSh~G)n74!f#~I#^jLZC0$fT@NfzdqAfq|Roga)b=XuGe!u?rt}BO~vp z$g$*+C@Cg5(LXwUyH{z~?WtOzz9krM3R`%rL8z~Xp;RA|b?pO4hb42pDyiXk1oHts zOuS#q$V37LWN)J6Yh{}FxpoO@akZJZh^zO^hc2$^eZds(k!QcDnr32{B#^s)g>G;q z{SVGr2wavkoZJ=vNV^)r{kQmth#~xZVHhq*nBq2vNWgp%T^AMcF>OJ$X{1eB-Qio5 z$6&i0eZ1)#F`Pvlz!V!3lYDetJwkIY$m#DOS+avQ^;VXO+CtXd4s7vc z;*Ztszsrns>}=vym#lE;rHW2ABd@h1aqh#aVVX= zM&RzN&B`X*DWx!ABJ@!#8rvWz#M|#tGqs0j9g3G#=)_C8` zFX&amkb9XZE*8q+L;_=vIXB%di81jb+Xk043f49u$)NL|j#JRqq;)hbW0iXJsh3q2 zv8Z-RGDwxeovi=_GLceFk-FwroS!NBLj2fFO$^lZ+klxbdnfnCu#G9F<_L%Cxe9~( z&SCV)1RAM~T{mTsNP_Nx*Ynw8Zl=%d$B$@ngsi@~sp?c@%vMMq$yW;EPs(bBvtgSr zx#e}pOEw*YiCrOKuqIC?`rl(Bwf9zY%e4Bt4UsT=^4o`{=#_i9)5p%v4%6QEJ5h^p zroPuoG+gaR6lkz%2^eDr31W4xxR*ca9L1zc*UTnErHcERuH4i&6_T)bmXvcJhB#TV zxplX}v0P}N?9D02J0>P@L@K3qHQek**OeK<#3Cp4G-_glMqhd)V0f(9II`}oZ>zp- ztW2>%%K`;>6u91Y(b~6v)tbi`zCLduuBO7yW_S-@urN3mJC%nc_Z5QLAYDNTqJGrEF4Ny1%H_ z(9bV(a9;s7TG_HcA&4I)LVGX5oya4alLt%rgoWS39y1V3OLQ%1D>CK{I@H9kyeO^G zI1LKs?{>8zwD0kQGsLQRJoRQ4@;AEY@Oso33vRe^Vj|t<0wc|mgPwJ$oZMvc^Cc1> z9#S;^5{nR#y1 zO*++_9DsX-b8^5}c=XD4TwBw>eZK2x&23(DlPCCZneOK28X=#SX zmMEJ1t+zUx-3Ni5>c2kv-E(D@mG!J|jaEsx6CNI%bz9^VNX{j z6zMv-Z(fST8&9t(jE;75i@3XB^wrdl6E`^O9cXRUP_LrP;#Md4S$OyGtJ0in-{Sm4 zkl`?Dgfg8576+ak&HanG(WVxxg!}bv{>oR+PoIoxn}Fp)h^{U+Tdr`U9`B!@%dhXO z%>0NE4)+h4XzJ~xzZ)pU+NNe}wGX)d77z?xz4@e}H7};20qM6i z$i@UmW{#F5D@ohY)`v>#Q&Z4CgI=DEK96}bg9oAs%buQBmOydMQVn_LbsnE;2Syi1 z+95{9YR@?abZ4ia9EEV7Fx|zU+Ez`Y^s{WrkqF0Zv3q5cjfK%4RAu#U_g#mxI9GM& zNe(xi<|lvql@U?@UUTed5ZFPP)b6=K(vP>uYqcaf!!aY=cWpYkSIjzXCXfl0>2tG#ht%K5gDZG>D+jL z_E#QbtP5~T4%hI^TMtQ}Z=Cpw+(F11i=y*aRy2kL0aP+u1aQ6Z z=LWn~_)m6@rm&l=PL5KdJGt}~-M4Do?|=A5_m>Z}E6(t`U3dN9Q|+O7?_;2;naIPn zp=3pDj&(gS(8_nj%rZC*hiGVUZuU4m`7731j2V)yPW>};Zy__wg=8@b0vKkU0lCPG z{IgwSL5@cByQj4kF2;R&1*+#^98m1dK;MviyZ29QuV@)2zA}3~`YwoRZ(2Hui(7X* zOFFcbYd?Q~p@))?aEE}v=y;@JQr+s1fFKZ%&>5-FOc5uNa;ZC4TXYJhPUL7kX&b4f z+3>tnS<8PTum$gB@6qeg`T-LjeechfbZD^-Y#S?nL47BMh)G(@U11|Y0_+wREOBaT z^{Md7b7=;4$&b8PinaoNB!I;!DQSe+?XqrUABIu-9ubjY&TTv9KBvcsZf~TmiPI8f znKup60fUHfbm<$1yVsc;n5Rgo{7ACOjoO4s7T7V6GT!PfB>YEU}A|A$d&es`1eV{!EN_m{0g3Au&DE^+>YVtjUFk&_BGbJw;les_sA_M2 zJAX~?IB$9OSSUSwyBV(GLYfXR(iy#QmqzPB$^0wZ*|tqtx`sEm81+Q_lpkRW;-FHV?6+F1ZDN;HSJd`dbQwUed1RiP0*Ol?WT03I8}$8CqmbJRDhHrf5lH7dHqE{3{Uk zn`z!v$9y=i5pWLkmS@!0{;FIr!TEWjl1p#D{^8kkz_DI7;T#v*;OCRtZ)(xxe3`(DyCPtwayt zy~S|-%6zS7Pv%&4eREnPpWBLtaY?Kk89Mrov7{vg&ATXvciDKeaG*ef$~z!i8*M!2 z8$iLmcwSzhuR;heW=Z+`(iz1=RvEuaoZ4$)S>>}NWSW8w`uSzZ(WL_4QuNf^y@tEX;4dl?12Xcxwq*tDz-Ko4x_4Z7WvC z!K&s&0(g-58sj|!W8VcFQuWH8u6ZGB5S#RFWM9xd1$!m>y}}!+S9Yvg6kZ}V*gigr z(Lwsia=+;72X7M^^h;VIoZuWNAJWZ}_365(Om)11q1A?qXcKBaZOYYE^xgUK+ugrw zhVrVuH(8iGSbGlZNX7s^=$1RkS$VJ=ua#fEBf||v4o*dA3+^$v8NAuc%-lFUu>L|3 z)rIS(ODj}XhB3xFm1dIRAS`IIIs{$C0m$u4Sk+zxfPPiucl#BD3tu<+Hazm6!8^3^ z7U#DK*B`SEP|G7b3I2QU0|#2v1ua}{wn#H4}~oo#@eKqy1mRDE9a z1bAmp*BgpU1nQ>hQt?l%np-`I{Cocv8O4Z?iN+HXeT|RyhJA*-JYU(=R^SOPIfgjo zmRgeSJwMVaOXkqyW}jnzEv`QwITV9D3UDDo(#xN2D@&21C1Y*RKfUU8?i-5M`SE6j zb+2McAH-_*OiVx93oA;vp$5%bheTG`X{Md7Kk43f(GvHW7D&oY+WIVw%%@P+v!NIR zhPjpE0;%i?{o2{VqQyN{B_M8ivmq7<-!0Nv+;e9?$sI{ZOA<_(gwWQXR-S(@vzH=}V% zZ&(GFeXm(QQm^plzt)writC6CaOx(BsnF%NuqXLaBn8QDd-#vRIX?s0gc27H)2xS|&gd-*V1mq=7{DT}!i{$~G2BbhBPkYHQ`Mwkh>@~U^t9=rj%*Um$ z&uGIe1h%c{j+rd9;vdIxf$@s!+?tuq`(Th>P=&mJy3L#H>CRADflUU_!V*Fm4Id=% z;7Gv>LhWyEA|l`P&#ZeYs(3U7!G;FI1oMJo;=pDJ!VoNx!u5z#_vMjYs4m)p|Tb5PM*UoRj3 ziE&E7bVnsHdHLHijcIpbd%3LQ3UwOZtCSXee!w;oClxX>(uPT>yc&#*@^a!qLh^Nk z>6rI_`#_YqF@}tGTkl~@ltX0Gchmc$s)#dN(au`*y(EgPl z`R=AtYZ}?Kb=3Y%M3yMkT3l~P!u;!Y7BH8!uW{?Q6E5`WX(3Y%X2fYKHv7}Q;vF2` zSrpGvX6}DTBQY4Mh#^Mhh+6$}pF!ZmJ_>52ZXNwEVYY?MyalEbuahmz| z;uY|1&S%)>?v}#FFbiW1YFDe~$3c$qM$~+-6xGNY6AuD`Sf#~2s}Wo0iMlS7meY4+ qWyZ}O%qQV~{)`R(|9;+)FGy#1`x9hAN0z{&AZc+0v7e%b!T$q?>TYZR literal 0 HcmV?d00001 diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg-builder-default-model.json b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg-builder-default-model.json new file mode 100644 index 000000000..7ce5bca1d --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg-builder-default-model.json @@ -0,0 +1,130 @@ +{ + "style": { + "font-family": "sans-serif", + "background-color": "#ffffff", + "background-image": "", + "background-size": "100%", + "node-color": "#ffffff", + "border-width": 4, + "border-color": "#000000", + "radius": 50, + "node-padding": 5, + "node-margin": 2, + "outside-position": "auto", + "node-icon-image": "", + "node-background-image": "", + "icon-position": "inside", + "icon-size": 64, + "caption-position": "inside", + "caption-max-width": 200, + "caption-color": "#000000", + "caption-font-size": 50, + "caption-font-weight": "normal", + "label-position": "inside", + "label-display": "pill", + "label-color": "#000000", + "label-background-color": "#ffffff", + "label-border-color": "#000000", + "label-border-width": 4, + "label-font-size": 40, + "label-padding": 5, + "label-margin": 4, + "directionality": "directed", + "detail-position": "inline", + "detail-orientation": "parallel", + "arrow-width": 5, + "arrow-color": "#000000", + "margin-start": 5, + "margin-end": 5, + "margin-peer": 20, + "attachment-start": "normal", + "attachment-end": "normal", + "relationship-icon-image": "", + "type-color": "#000000", + "type-background-color": "#ffffff", + "type-border-color": "#000000", + "type-border-width": 0, + "type-font-size": 16, + "type-padding": 5, + "property-position": "outside", + "property-alignment": "colon", + "property-color": "#000000", + "property-font-size": 16, + "property-font-weight": "normal" + }, + "nodes": [ + { + "id": "n0", + "position": { + "x": 3.8117408928910077e-32, + "y": 47.03686581561153 + }, + "caption": "Document", + "style": {}, + "labels": [], + "properties": { + "path": "", + "createdAt": "" + } + }, + { + "id": "n1", + "position": { + "x": -1.1723460390943958e-32, + "y": 378.9796534081454 + }, + "caption": "Chunk", + "style": {}, + "labels": [], + "properties": { + "index": "", + "text": "", + "embedding": "" + } + }, + { + "id": "n2", + "position": { + "x": 331.942787592534, + "y": 378.9796534081454 + }, + "caption": "Entity", + "style": { + "property-position": "outside" + }, + "labels": [ + "__Entity__" + ], + "properties": {} + } + ], + "relationships": [ + { + "id": "n0", + "type": "FROM_DOCUMENT", + "style": {}, + "properties": {}, + "fromId": "n1", + "toId": "n0" + }, + { + "id": "n1", + "type": "FROM_CHUNK", + "style": {}, + "properties": {}, + "fromId": "n2", + "toId": "n1" + }, + { + "id": "n2", + "type": "", + "style": { + "attachment-start": "right", + "attachment-end": "top" + }, + "properties": {}, + "fromId": "n2", + "toId": "n2" + } + ] +} \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg-builder-default-model.svg b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg-builder-default-model.svg new file mode 100644 index 000000000..8c3c63f56 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg-builder-default-model.svg @@ -0,0 +1,444 @@ + + + + + + + + + + + + + + + + + FROM_DOCUMENT + + + + + + + + + + + + + + FROM_CHUNK + + + + + + + + + + + + + + + Document + + + + + + + + + path: + + createdAt: + + + + + + + + + + + + + + + + Chunk + + + + + + + + + index: + + text: + + embedding: + + + + + + + + + + + + + + + + Entity + + + + + + + __Entity__ + + + + + + + + diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg_builder_pipeline.png b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/images/kg_builder_pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..5237da994b1ce7ed031b372ae9f8b2a4e3a6e6ec GIT binary patch literal 203548 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 z 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%0D2M85=QSk z?0vO0cbPraL(f6Y`Zq%)Q;>aStm9qCW?^L`GPr7b!%&h}ri`c~XoL}g z);CZhvBYD#b0c1fnZd8$$0;vF3kimd@_6^#g1oLV%Wokjr9&(2Hj;Jo^imOrfXNeV z+V#gmh;0+czxVG(Ku78Ys1Z{;Nt$lY2_=lMO;jSNFRvI=!pU0ub z`%Yyw^K8klroX=jk??^qI$e%v4$i$ilV6`3qS)9BDGCqNlt9(;nqKM+7PT!=bG&sJcF4kKce$-(Jw z$Mm0l(nACX;PaWR+P@JSeBVe{49KR*h!Se-XJ1O>y(YwiG6dZMhq zdMM2v%78dD>#=6j6n~J7emf2F*0xmlPrpC2Oaqrs@a46Nx&<2hTyfe{Z?j0}?Nj(y zYt*vx1)HXsf{)IYTPn5De1`l(r{rvWs(k^fO~DuvkWS2M83iD|wLPap#01&pH+zww z1R@wUh}-@QF*CCJY{;l9mlSD5E0E={Xpvbpk`S>9a*F9kgUI%AMY^S&b|+Z>o}J=4 z9EAuyht)bWdD?jUM=UC|RP;@85Y?m$gUvSTlrfEZh|$4uU5~d|GBH3K^^})%xA1HYIp&hzysmkta(0!0YP(Toe{hm~na@1;UgqOPgCMs$Jaww~4hY-R*YGMAOj#1l-{ueP; ztoA7NQmL{xK+Vy|9pajh^*DeuC+rw5`ZaP+ybwc|R;m9@zKX1JdjmLFo>z16MaEDW zW<-O1iTCst`vkEw5aK-)4Y?j?<7GAj&d3c znoX;j?Jj&Nk8=+Y!jxWE<@6y^5gv)2FR+7khhv;*u|E)km*_G8CL8A&MrlO44{It$I{E|G^SHz0>rhrhF-;_+@Ws<@IzV+r$lHK>kKAE)oC*n@X zsiT-ikc;?|ez1yMyW`U7eNpwFxS0RE@d4WnLN`KBF#I6DD1n)U{$u*l6>t{F3Kl$p zL_1#u&;HG%GYh9(O;Fw%y80Cd>y?kl$Oa*(`f+x!{N#1?7;Wy6w^Rkl{r)le10v*2 zStdqbTGPk>(m(?8)v!M>XV!6Zh#M$hFF}6ghg6B345KNtm+XUQa^2)VX!CwSZdhJc zCS*UdAyPT|5p^#V>n2IhfrnIvq*umo^hEt4MH|hgg?#a*w@-wJkpU}A4Z^OQjr}{-(hcL-345wrJv^nv7KMCUCS3+gZonS`CO&a7CFPj65EPsA2bW3 zXiKeLbZ}N)QdG|%or|m-c+qRc8LH-Ri>|}x%god`u!xUj2lw82GuZN1-z{%?Q__Sp z5N!V0{GI&d@lW5j)j=G$M4DK=J#c&QmZV{RC9a4C^Y}fT@3Wky8OYqvk040}=ReOs zrhk1Yy&4<#=W!#wS9TYS9Yh-%bOU!h|66{$UuT-y58`)@)wM&vV45k?``y=02d96B6!RtGO{vtJiZ-GUTX2y0F#JyuEK|~ zQHp#sbokW(V5lDm_v|p6FgPn<2GVEwS%tCFOj1Xlys7wy06BIc*}d2R(|ZT)8D_A7 zn^k+_@2{x{8r1F4tj8dI%! zj=O5%FOYlOr?opTh^3jjs0v7qD#Ws&%VSV+VR)3yokTDHaZ@{4=jK?hLD?Oohh$Ae z{iY1h0DgFebUu7xrput8%ET)N>(J2An$YTPaT*y|D-~%%++m}|$|Bn#n!Q)+n?27S zyx<2-g5}nsG^~JO1@l^yWHD7Zd51cj{bSc>a%FS!B5hnA{#Wy6{s9E=Um>uA`acBN z-j@s?> zfI7E|M9C>hdxcaM)@TbGEIWT;K5|b~7g6wXFNzq1O4;mmNJ?308EdIXS=i>%95S#M zRVsHJc~*H49UnJ73xxJQ)H(^%>vacO890TYF{d zddx-9&|^mkY|X2Ldbb#HZSIHU$|d^yf}G>0$o;L+!lWJRD%sfYWv9@(X&hvZ7y5vL z(ocF9N?_j{W@o>Y_e#64MTz^KBfk9MkWdYO|F zBML#8?opNoQAp74%VQ35>_b9MDY3J(#;5y@h|5+v3zBQ$BXcHVQKgpzj$kNa+p*cX9?Puge{tOw1Mh=m*F_+ zW8ZHAYNX!VncSOaJP|KvufW$r-TDJTMk*sQJ^TW~4$fs(_Tto~>y*&uOwj2|VbNC^xI`NvjIx&qf2nHI~8zOQS8%%o{t zVxq|WRU{uTAV9xczVNoWmm58`R`74+3q^UKNE?CC(0gp~1qmA$*WYB&zd*;jObT>> zypFpF7OWuHT*u#`phtzTlV{J%?xx0@RN_OcM0zo0&*YA+G=Rug8Et-^Y^7gpiW0`M z{=P?}a>wRQ?z&Y!idLaqVs_B`d(fr%D-FS3V9xwk?9WT1IWlbpPIw7Q8OzVw2FZf> zq2N8|9U*TUU$NlKgxU0Zc`u6<)^4K|HQN?1kWa}iO?N*}(MGncbGQS zed8gAx=kUm zEmgKrOjO#i*K_9OG?xWIxR3 zt3dE2aJx$G`Y(O$-fHoL?l;ll&l+loI!BZQ-74Klw7j|pEwASq=g_g73n4~&V4thm$7gmc^m|1>%CW_u~ad!J+iz#hzOi*&?;^>EQC7i z1TPK7N%b}*865-12@`hm6Bbt54T3i;-0~fw0=sE$h-?}zrHje+MAaptP#bE71&>HC zF0-U6VdxC~z@HW7a+QGfHH=U9(Hf!^9kk_G;7fH?)#72fPMKm@Ml0||pxtKVEPMop z*kba6lOkWI3~rAd8R1LpsZagJ(J;ctV_SQ35xHHw?&7$DPaY+t8P#NXi7~d~5xER` zZn7#-R)-Kw&Mi`oWBAWo-PzfFE-Aoalp{-j`?4R|!Ed#U)>F*0NK z14b#QwLiFsURw#0PuH^v-44GN!I6o#nxE313*C-jn^I>K8^evr9_V{4qVX6tQqXe! zib|^l*EkvJax5Fl;?LeD1OQ0w8p=;P5_$>gEyAr*+0K-ybUK{Pb{~T`IHXcUzmlDq zj?BTHK^xJ`U%F+)u^Nzl1q0!AjkqET%)xbhc!wF)C-3Z=jeS_vACWr@+q1{2y9GP< ztSc1XpJ|lpwly0>^EN63IzMU{xg}rhY}SW4qJO3LRs^*yi|wKPp+(~v!?bkS(Lwo; zPREQ%ZHIh*C$oX2%u}i?w+|gfwhWhku=ge;gd3jXX|70KWo(hTBl??n@rYD+B_Zig z%y&%OV#HGZ3B(95%h!e;0c~@FT;@c?ck}{&m6KdvPj@YLS-8_eeIve*E=kS5+TZVX2)x}QZ1VDUp;Q*oEeLYmn%(rX==55{rK$4oz4*B z+8srE+s+UBN%5~Zg^tfUHS}kORlP{6PfwM7Mmb@}GvOiqiFda(<(PdyZ?1ap(?FiD zwwtFv;w$8on&mFo^k=(TYu|QN`s~cZ$T!z&g^7QZ5zM(5Ad5NENof-|!jjp-t?N>> z`PK6e)Hh!7bEYNowML0wIqkjgrY_!DiBZ2R=IbxRv1cz3?;PQ&d0J`ZVf=5?5xG?d zrW0}b{sWJihx%&&o-!zo-6%o;{2TXc5(wMAzVk8X3n^n>ZQ$3V8^^ZDKJgz? zJLm>J|L=_7g@f_q50+KypJ8P+2@h7h$=Sb-I`96rH42Uo-D2`aH=gaMT07HLkNPC+ zz*RA`x1;$#fX0gBwFOQnZqfTob;s zPqu~@i`w-FOl>AhS2(0^)T(n2K&>bJ5-cVsJP&0E4&vhtR+~0bU#&mV&FX0rA`{Zk z&B9AwH`g3lg${tQ01f4J{gW+m0rsQ>#hed0XKNA^M=YidKdAX`y37T~Gg}Qk43@NK ztJE#LM{B7`)oIoCbxF4|P3vOX8QvmBl9};3ZDdUt%y84x*K7Etnkh1eQgisHV2aDv zbzXb9#yBLIvp4s{u8LRf0zPgTZ1^oklIlt7FVr)-yOZOFn@0cQw}_n`q~@EP>VxWi zYafR)@Glm4QCGKfveRPRV^=@%-h3vNeS7-9o#kC!o?}Oxg(qT|m7rdT^U{&CsJf~$QEK{pqeHLZ{-f*32w`zxh~~9*j+PB! zo247a$rIQ^PN4lU5t`(U0NV|je0y;(%V<~)pj^XH(_gZ3PWSqAWUmVOQzPFqmRg-6*lRu;!19z38iNB6YKK}dc?8UAXhZ6;iV~XE}l!Fmtz}mWk+ZwQ07q_ z6^uSb7w^Z156vlXYHrPmiJ+qMBLy}$^X_5?nP{$d>(YgD)M*>cPc3pTU0h0c80sV> zw(yc`P(lz99VKV9e5HNP;LYUsJ*kJX2fY|U@>9{WbW1Lx6RrzSsKqZ!7A8Q8s|_oV0Byx4apRQ1g{#51wELgpU?IP{B)PU#(fTLQGk zp#6C1SK4Q~+Tb5L0nnVg4K{nO*TS1trY>jaGUeS)(Lm=Pdfrd!uFR-)3Ial^*qt!r zjA2dI@n?7xycamcNH`JU)9n}5qhxVhfMa)tZPCw3fQr~ZpI)e$|0z$?j*Ru@yAL+P zpcDn+Bl9QQ#*O$MCXt=9`|CuF#Si_r9#yfm%FL>Dnl)rJJkMRsTE3%Oq{r3RgdM_h zL~cneNraaLjtbDFYJLhV%Nk{r?X)k`|J1Bb*2?BhQN}lP7xK6Vf^i9r5x4GjgaWox zB-dH+H<#aTvq$ZW+S(Hn_YsQ~w)k^Q?4x%DeC&UnzS~J+x8qy9#A9zYd#CdacG;wR z{!yGPyWV7f-6MZ$dk2hf{6m2}Ip4_WPGznUPJ6emT9YSN>)4m^{`1{OS_PI(_?FEy z5)Wm4pI%R1E|N@qJxaM^T0`x{``P}wE>c&hsJ2l@8gJX^{AF;mp^CJL*=2ISh(is` z(VxobponLyJEAf0T@J-AdGJi6>oERleUo}zywX9V*OtGC|DS`%JuBH2eUrf#tp~w! zG>hboKazJIc~|4^@6g^s?@cUCqCloY9^Qb>|L@$I<(j?UH~+}r>3Ud0>-aFg&Spr2 z_!Kepcz4aXIpI&lDi_&tS5TZt3pM|2QO~>~>LoNQJWGFr*Fg6m**`9 zNgqB5{P>*bS-#k;9`=KBkKxdy@yLF9;N3?V`24xs?cXDAuy`LiG)r^dpO`t)c&7UV z2i0hk{3k62{ZH}LR1w0b)efy3@GsXM4dy!78|mMM(xSZ+jg*#au<4ON-RVaj*i7Bf zOwY-vylWULJ{c-U3R9UBf;fu7lP#Wi>x_d2XY^AH{z%=kYr$AZ{P$vwdyV|p$4B7G z5Q~Seref zmeS2FT%=t&C&==(RQQ4%h|j-A&Al#8dHBcY4}BNfY9``|+oin(b$G zX2>=SxbG=3_^)1k>4V)ixd*rX>7E zz&10@|BSqPt$Yj_GmHx=HakXeS>L?|~zQ5>Pe;|@F zOp&6M+@MzMojOfmOlUh14_lB}R z#pOF8EJ}nLw}{uN(PE#}sqbK^YbAm%pnHh%jGnc_jOq|BJRWvBCBAdi3kd=*I(4^y z#FG&$21F6x93{!u&Za37N&Mwf6ZL<&)F5$U7a9k*G@3=8nMs+N0KATUWZs4?AiAt6 zsRHx+hy%R7gu2L;V7UBe%)UR*NpjO4W+B0+XAXBk!gwFL&3wgCRl`=#1W)4H!zxFs zz8ZG7+@c!ifB)`yVe?Ie0M{9QLyQ=Z>6yk4FR!Tb&f6(g*P=LXo2;^jSI->h@?26- z+EA(?lS%Pp=4NiHS4Q(vT&}qJJ!T)}d&Vsq?=wX0jKuHEH+i@}s|?Sy4U{>u3Nh5_ z8Qhn0Bv)c`%s44MrBN!*$slWfpLo&X{guwN&W`lk4?8lyDs_^1N7)ogndCs%*H7Zb zr)o|?2iY2}!iQ&Az1Eo1l;?v>+phb^;5^mFAN(vARCVO3*$8$a4VC#$MDNi!m!R>%!83 zakGg)rmq)-n=kr?dnh_6+q_Ol5EW75iF(VclP9JAN<_*(HAE`?s70-iquP<+FaCsS z7PpdV`gvANQ;$!?HDm&}B@~ zS`STS*|OKLQ!`NHpuXP{=~Ejb*4dW1qej&pAhcRC)A)$4-g0$v=Ix`y?rQf=ZHW?T zn%L4stYuU`cv@QVfHFk^Z68jCJ3^LZ*o;2Ja$aOTNLAKnklVOxpG(?o?9Ba*54>GX zy0pHGzDy&&Ui*ejQkkzdHA~Iz8|7OJ@8nG9ce5mvqgtg{O0Vdt_Hy3mjS(y#f@vNhoEF$p_28kOODQZ}8%>+^qu^7f* zimDA_3Nultv3UPxG$2HR&W?!TYID?AX8m*xYo2z0RNWmaJ|^AnP|L*{i`zIFv<_b< zd6F&v!h_*bPPQ6L=+u@Xxh@?+)Y9=;CN1v1AcwY0)+sy;!;%c%rs$NCK!`tm#(@<)bj%w9CO__Q zD+h*lLQ~=pY)l2d8#?H2Hn&i(uK99}XaSa53yMdUA8UUSWC*y?e6CA~e8DYeov-9e z^O(ofnnM{mMl!VH^*)BBt8#TtO);{%jGtAua`}~xf2NEmz2yNRNmBhg!WW~29tt^v zy$LUjR~~H1@s1LhjW)d^GGClZrD>9jtso7s4yt`~|Nf@&tQfcM3Ne;6=St0h!ipz@ zeP;b9d39Xkx zRhNTIEt=cH_trMaCaRd_u2QpIlss1;L>VuMTmugWMxEn&j%5y-Z<~~CmNF$lGfUs? zPj|R*nzmK>_Ms{!l3g}HTbL^LiCJsRH7iAhaIq??)s4|xku;w&%%yyk5PYWjY*Yc4jbdYc=6-%UW$JeK zu;|_>qC^U@L;1=IsvONu&5=Ibm@`CS&jcb}jS7P?`vSz>0~W)z_sKB1KWLB2e01DZ z3@QN5rBpI3jt|}nxi{aAqT*&nnNM7Ej*42Z?HNnOGTiD2CMW(#v(9WpJ;ZBuyLt5! zPH|0LD(C`}huGxDI_AKQ$UI_UW><|=8uItGgi0Pk;W5+r-Uo*c5cf65h&bKE&?VAd zJ2Y`Z?s&7zyQAqHN?&Hb3lMM2*hR@?RDMcSz8RWFKTIjhf%v25Ow*kp?bdJfawQdP z9pc|5SLHDmu@Rxk;e>k5FU!AHq~8A^3vCAW+)rIuQ23I1#N8|?1&s^-V}UTnn21k7 z-~zVJzj+@oxe8OaD6yhq(`Pe!4}mYbA{Eb!iO!Q(G5wTzl!#*{2+?h+_eWV%29gq8 zC5Nj%%h0NDdIHAVRus4FVc=kV_ zCm_9>p^#vKJ$*O=Cl<&}q(=RmSwPelw8`#ybRnDw`bzRTrf|{ROa3 zeTi&CMoUetN57D)6HPj~7E+u}sg+t!sO1T5h^LfwJKwQ#vpCkK?8C>SJ-e~}US%Nt z1~s;Cq0TH#i+jdeI5>)Nj-J?yxsq@C46#R|PK9nS;fptqsHeUs3-*?mb9B7B5i~UV z`X}AbgtUMoUcDV%S@FQ2=C1k2a_KJ!G;9cqPJ`thy}2nb#y<74+12z=kON+f$TF(= zQ!{np#apKM|HpLo3jUZbPxHS`H=3lC6LUyWSZyg#DLPn2z*o05h?J8)Dt{g)(ZRz@ zFaNZtS>PV(QTMbh)xyOLyc0s^Z|ds~@7b4OTGPFJAvM)5N=)qPpeDK?f;lA zQy@0u)*F)lm@XNqE+3E0m`q(Ly_nKOuz*YS!OTvT+K@NV)9-%}FyLWtPc!Eav1Z5o zu}z$s3f6HK%>1%kr1J9Zw*T$%Z(iqm_`sHp1N@Pm_ucB~-unOk;WH=xvptLdU9s7F zlUzS^_io?8-oN9}C`nZ|n?XfP`o%cZ98*Zy%-&0D^wAU0Nb;XI->m_Ci}W`ZK<|}< z_TGHAHq?C_Ww%=|*nJq?6KK1e(%VQIVSeQoyA6j2%^o*F93X70FLN1`r34NNBSgyI zpOPzq5(J@+|Mi*w=fVH^rSxqYU9w*b2V}oo=CKW+Os3IDMU1<|m9F(azZ@~{yE;~g9`*mX z?7*2wzjS*Xdc7-&;kc6q;*a$lEV>12yz??Yl);F zW&8um$tz}AXr=UM>gLkiF<{i$A0X~F_-jSrl<2Y&=f?l*+5Y_SuT^1?wC8^Fvg`0;Nb}7IK zT!S(@@D@`p0ku5hr1;4%d`R1+N5lSeeJ}@=-iT`l+V@^#phZYXF`cjA?JDJBYPXf8 z{^fr!)9-zlRL36N`{Mt3-2Y+DpJ{PJm^qfq%b1ck7lC>73gKM=YdTEznG;COPuTpZ z%@kv327(oE_9GOJKVlzSwWZ)^im2V7rh|A&Nc&Sw|MH_(&{IUzGz;A6{6L1da+22F2xNEd1rDLymDzyI@s%R8JWCvA zqu)n#_h8hd6iijP4qW>MV1<-{JWXe8_9h~{;=V8-$zh7~WBLIKD0uP^e? z)BkUmisj{9?6ZvQ2hANTXm#;HzedQ42yc}B14tb5qq`Znb+w3JF1H?TT=$ArWhjDP zksdvuf^+LqBi}O(#O3ZwY(Ua1d>rZ8L@1AUAj5u2Zb@ZaT0ur~5%y>hR8g#eCOO#6 zOB1^Xv@I|hG>WHCjemjpah76qjfXJkU#3*^1|9I*P5)=7 zz{BJQ@13zdy8{(4&@<%WfiSE1%1G5|;i&z`!TSn88x?E~c0adn?^&c(FiTYq5v_KF zR{lmxYQz`%LL;U7u#;rIC`~Tw*air$Sb`HhGjRSVxPh(+86ZV$Uw}5A2#tK|mJqUG z=y0Sl;yVr&`r0-)82gsT|KK*#P6F4SY$bGQ@*W;DBm>=#tliPIaPs1_9iih~OLO@& z-=C+(KI2aR{(m>?F)I$dW0P~wd95DM^Yx}UT6 z1`G>BUFzzlBYvbW_*4e`kj;RLmk2QT)zB`Or~;S__UVy;50I4mK;pm}q!ZnCyVAmT zdtwmL?m=(?3%OYl#mHRmVxDcN9`pf!zAKaOX>qGy8F1hGV2r0F2q+}FgV4O{=Iq5k z77oV~C&rVW_Xh~=?lP90XAw@w0MZ}?Ee~nz(7YBMR|TeDL}~JvZx^MIs$g68wjEU3 zl<^1>oMqz8Z+KUN#vih=;&ss1DT#^fH4W6iu)F;fT#Fz<+XsWgEQepXmw-1NF@wF& z{eZOFOze#8Y?)8w=pC{jEPIO3;*m}ZY!6pwU8r_f-Q1JU%dqF7PZa=E_zt){3|w0n zR96|GJ0+bF(y+Xb!>h(na~S~~FZ5lM(jU{5gK7vOBqFTIKKm2qubr6#siX7oafqZ6 zG$0ILg06f=tDk9UG74B zBVeoYS74(mEqf3SG=cYS23t9F;UzL}ALz+AN`4+}tQ`@k97OWmK-A&f~M!u?U=9ZvWy#eDrBipQ%p25#tXG^0U-(c2dvjP0#osUi63uVvZ& zfr}p{d+4{jfRq~+Z<1}f`M%SOLt=(5VASfzI1qiVGT>U9Ak8X93iTmy@+B=#8O|Y- z62wx^WdHS^#w7UrLH!FlP*`w?cq|bWheOxNqbckl1VdC2t!*exhD(OQqPtH)f2#($ zYM>40)&lU2%igK6s*V^PmF@(qfRU@EKnk}+gkSoRnQWgpmvccgQ6gNgT$|Yc_%YIp z)ToO)fL+ZW#@v0%t9!J5Da~)Yf3Vvj?Wq~kX{r^|gpAld2Bw&la)c4#+%-yx`P>FY zTst5AFR#|ku0uEP0&G2(rY8F&f@BH{-)AWALncT%BAh3Kw!HGO(02x8K#07c+2+vw zrtqpC+&_bS_Z=?6vy_7N-=%02!O->9nF|6kK0iYBE(XyC+mPP7EDDXQb{;O;8oE`5 zcA@*9zHQfF{GYHh_ZYgH>z6&-lAsKUszFzM9uY1gpp@n+UM_89u~(^g4maTHQUIxr zc{qGw9`ZhL)gx@#!?_y73<&f6Ezs2oADrX)+c7}v9y>muil>n^a2#w5IdUeEqIAH{Rf>*YH^jHE=@?HJJ44@HF9esBq9?`ji>$;5@jm#>pFC;e8 zsH%96kfz^}Cc@aEb|z^h9;zJvCqy&x76QaTTVDmmfHY`!1+ zX@T@;mGw%)!J~Lz*;I*KP}d8We4ZKp|APW!cI4u$6EVPjq97h;vd3W~#Ad*oNltvw zCk^`qF0}wrqAP>;>_N~z9IEdln;k-A$vDEvYx3ZZSSmvOxz>K$sDw01vd?Ej*;yv{ zJ49nPQH`JG*g#)&4O#+dgrEl%`8^|Q?1xhD2u8rWBNu+i`XPAamg#4h8&QT&K-A|@ z^7ayRR~15F)%6AVv3wPqp5-khs(0yeNUXwh2T^EsshTgxuRR{23w@{E6fSHrPP7?Q z)J-i}z@ol6xdfg(_H~~q)9Y3@wrF0gFW3Gn#Vvf%*7WERnHW~Ir9lN(H)tGrmToEL zulBbi;%{Xg3O`gh%N#DtrOK{-9U0l+x@Ic8lO20XjJVS&R7-u?LR4ly)8g6cVQW||Ace9%yfbYxg8Kqt?&q$zd;A(C8Vzv=|x`yQd2+d zF+1}G#l}d7Zvcy(-uD5VTRJpb40KD&u$8Ud{q#~-i3CBU(8 zjcNp4Y)Rj5aojE+@r_)ZDCbQiez5hdgu9XJ6lE_BL8Wxv4U{+Ch_RI}$F#z+aYrB* z-w>$QCVmOWD*BVP70wKu?V_;*dLKT>PX0uYO#rRZBwsY4TH!FB(!9tf^bt}&m2Od& zZfso#Jz19MP-yUJ6A25b18rL=1qJHs;?EAB;p?7-+ouQ`*N%40=DAQm>UX;Eb7RS< z%XthA-!tg>4zQT#vZ&Nmh`@-{)G#QCACXm=LLIS>3HOL(KlWkQ#f~bAxr>ReQ|T!L ztwYN;%YyJ4^My9jd_*rguTvFmM%6qFO7QoQ(KH-!Q^#R?BuxgZcGDeJMk7HTEs;&U zCu11O1U83ds*EjYuqy~=vQSL(@%=$jcFnrdK>`yWl+0rFNQ16&Y89df@>KO>7&(KwbSU|as4K3N)?6nPPI0q- z?RmloeeM5!KkRuff0s7cvyX`Q>3ultjsWUKr!+9FPs4~F)7-h~KX4cg-VsdBvibJt za?um^U<@?>-6SWqd|}AkG$6h71yq8$2f=R&mAWoWFSd}G=lc-9gwEOM2QGP4*AMaB zIY#?*yqCg7jt;+E_r1GR?xyWLj4isH!yT-wcPcFT8lGqZRTF|+fIpthGAKtyD>8Vn z(9x#qrN;G6#eJ&vvr~5)zvaDXad&*!Bblx9K+j86Chs*HNJYN;kVT!u?P}ACcX;9T zEvlm!q0pjtd7`BKtqZ*)&44E$Muu!=T%Sovaknj6wc zVfVqUW{ovvD7F6fai!$==Y{^)mO-xw2)Nmkrk{E=x%RAoGLkWJ{D`_4u z=8aXQ+4XLY+%9sipvkQ&Id|SYPLZjJ3x7njxrzFZ4;Vub zx=8+Hg8i6Bc-{9yRH#K&L{5wD@=Li5h9rC0GtWAoJQg|67bDH^(8Rb$nNp@6gpcD( z9gybxz}swU7gdv})D=)tgIAU>)EOTQa8}R<8?Cw!a_wQ_CDM}cx|du?UJKB_xNQ3> zL1Lof#fNU)v(Tv@RwqmlqaW%b zj~HA4;j2KtUQ2oQi$~E&SoOTc8&kqR=MG4W`NO+dq&44*75dV}2B6`P;Ri(FN%c0N z(two0+j+g6Kt`h&WEc979@a{54|j@T&XR$0#k(AxG%MG@q2U9ruJr+A!qS^Zw{`%y zh4FZOgfeL=yR`{khV>H!-_}CxH#pVEVn~n(JFr8; z=Y6w?i~F=-AD6~qylyn@ne?sPOb5aTjHDD+{_(Byf+CSI z^cTWlQDJebsutOcXhLP-`SuC~&>DO*HFydA$SgrC6OyvKmoW4z+ExB}A6-9Ui*6b* zt4far2Shngn!6MkE?k4AaN)qFx*M(>+809FOHoBq*e(IPM0> zJ`zk+9tBdK#Yk{LGnHDY0Yhq+ZfF$%MD^lBxgEkp5QxN|T2%Igcry6bNla8uO0rL3 z3*UVv6J9HxeL4#4TgrN0Asc={ll6FL@^^wF*0w`Pn^8AY31ADUVkdTWZ3;xI!vl#5 zATT{H$v6D^#VQCMM>8ablrNBQ3HyOO?+vCOZ_m$0w_KBTj1+ID_E-7x;kgXOru>-{ zX+~LtM{FK_7cS_>iZJxwS0SRI&J{nz1!}b^&8Sl`Gn}S&7$S=da7^h6a%;|fuG{d* zmoTQyRxVpG0`hih9Aut{N^Wmy8}yFHGNTZg;-q>#k5~=Wf9(_e0L{^$tNzbceI~*| zYdc@D2<0YsEKN9sYkV;-NIyShC3nC@bNj&&VS{`CMXXne0okY*Jrzj+~6v)2E1OGxzR-8qy=~ zWed}8PaLD9Lc(mzCxP1T$uYuP_pYjQ`j#GS8HQv%Xa|hf!{zo|dtw7HOfRBzBz^uN z7Dm%x4it&!zPTGAZPvH5_0nj)3g@2{9Zyu1aM2`9wLvvo7lKmB&r{cavyfh^tILKcp+ z1h(dzgP=Yuzv=LO2gbb78$HsAeAXO8d05j(vSCem=jZhCu9!k4ej%O?#d5CN*!M2i z3=uJ>y~W+TBk!W{C%O0BXVGqA#1ZmUq7x&{-m$h8*@5R}AO+km!R)EQqRy8jF(30r zz3Hzv$;F@q&m-ZB?lp8_ZrhlND@c+YNJTPsyV5g=t}No8LGN;r9YoVQZog(s?T668 z0d(0L>+XXPt6Gl8awQ_`e_`t`0}gab-y!X_#8*0uvR%|OU2ni{O@n4MpTI@OftJRT zrx=(;;Vzkac@g5{Hm@o`!5)x2VYONeCn;8WsP{<2tE!IlaP|Y}Z#p(Mjz|qsUiXhX z;_z;^so&@J2q?1bCJa0#mR-++|WKu7K29S->c z!;n=FBkl)}>X>KHs$x8H;TC&LziN|VTqLSihi`6P8?E%l5D#J!R`j_Z^-mUvWU404ih&k#+>dBS|rvVe&U}*c`m3QJ!Kho8w z6mqMTYRhd(M7_n2(~4wC?zGyn#9^)1NsEgN^o{)Y4K#RkBb%6x%FUz) zzE9c(k1IK)8ow?=7J3}C(yJWne+6#mGBH^7P7!FcsktCGk0RSNp27$sx2>BWL|l`G zq%yk5M?)pdl>AK+&aN=M6~dI7-a7(Q(@z$+^MyObh-jfFEHS41I#7`L*^Bw1*Rb%Obz6IrGad52Tw_d~zroChkl+=H0h>L6j`k zz(0;?4mW3d0vZSpb}o~n7~d?n-1J3|64WcYr$EkPvGinu2=_ulATscb$&}7xpG=yf z7oWD=Nh!|53j)WBQ+5Cy7N>-cf%1bD^;lM5eFvQXG=|vO3Qesj>E_j;pWq8Z^iNU& zbh5qrxcjjA)_t?5Am$>4zPrmw-GgbrAwS}XklMr9@ET}IurRDeAm0K6_AQ2pR`PCY zmp|1jQwXGlPrk=qlLi+&=7phe*oVjy{bzGonDC`pFr5_K7Tb3x%7dourSl%|=3+_J z@Y*fF-_IlPv;g<@*6BXTVI7MIl!!Rpb4O~R`P$k%bJJm67Bt8^$P5B4D>V~>GECCG9n-S zl-(hZOqVY)zIltBO6Ft1_{WLXj;@NdmH?kV9E|nt$P5LY><l=rf{-mf z>V^LQBatPEjyeQQ$|4culCkrQyi5YqBCAE9abx8$2F}zeisR=5Z=@V;OT*UxxTMnG z(MZo`$HJW9W+iLP6L~nsUGg4m(@xI)`&X|beC(8iA^+Qm^F)jGsi(It_{W(;+3Pu#!pc&@)n02f|UIPAdj6EqO zny1V=bBb>cs=q}82bk03;D$+yJ*~>l3Hjuc8ehTTd#i9tnIcyMTxipT5<9>HeLWye|+wHD9AVsHxC4 zAJz1lJhZ4L_GR_N3iSVvTD$AWEd?#T@kTLR_WHA!IAZ+Y_wYY<0*4*@noGoI!+Gvq z)-5EnwgzdfqnABFBA!Bq|AgGclasXCcd+@)#_g|bwD`g%&cwDoAwui#`>&k{2GoEK z&r_HQ;nEKPwvruG_LyZvTzCj~UEN#N^w0w3sjDDk|F9?OE3a!V)Gp+OKHkZy+Zl3x zP0`gpn{Lh5AjyRHI~PC<`DXDC&##!1ZKm_wc~0Ktdj9;mdKb(IaC*yc>+Ienh`x(Y zfHPQDBvcEtG~z@#Z`UMhbV7;i>01!4x!h~~(XHpBQ&SkW0g85)4WUYd$5@^3%=e4F9X&bqmCW-6zgP z<`MqeCE-ko!(p&M;Xn}gU6@jERCA!p_c}s~h<1XJ*LJQ7;aD|UiyD7vQZd;RRnj0{ z$c5fcd-Ve^JaeEW$Te|`Q1V>=|Kew~P_>3s8~>!IzFUwPFdav}0W^y5sQlQ|uA9LP3)X4fKS z)b!OM(RhAmwc%MWXffr_d^9dBe)hG$q-i*wKA1()ZX>y|xaj_U!r>;riJ1|<9ii*! zh_?;jH`(UjSwymb%jJ7)t3dLKGIig%$NHLY?;l-vaJ`2J@Ot)>J~4O-m7QC8Gngrx zuXH)C9@bwUl&Gei%uotW#!ReT8v}GZv=E*j_1avXlmwF+ z_FW&2ctJ>PVh{s2@f-+>>Gl^}Lw?=!(djHT7EtfR*!H7drnFBRTDRWSd}{p6wOIZ7 zHs{lg;RVJMh6zU>`Nr1W5O83nqodoQ&T%qof%?grX;wxMsYt_UJuexb7v$kl3M8V4 zAI!7@F^^P{-NAD@7J=iBXLx!Q?hV!h=r z92td-typbjyqB{}zL~yFl58tU%C`P-3nM7lI-R^$dqSzd##gpcN$)GuO$f7zFkfqw`uvQNlnDGFPx zyDl7xWsq>H9bd|^U$Eaq3VQ$QC$qob(6I=__f6w5AXt& zc27@DBpPGz7=k7<-Xt;W&@r3QZ=bP*$X;9E;3PF)WJXv71x5&|q}U2=cE{#$yvjGw z!i#PQfZ3gk4u|iz?Y~XN@_eJI+>J(pga1>t$yWiJ9rm2-R$BLjdwy=Nr1)QHqjtjY z0Rf~KLJbrD4WK#*wvkr(Y`RV}+55qMNnWfcew%Xa95Bw@2Ixv&K&1vOg+bQ=|0Sbr zV^zaC&=fYVmMj?*m<^K{KCiLsn1p&r4;01ct;~vQCN^qc$GZ$n+0^ze={Qu^^Xa5w z+C13((g?#$oC}6cpL5N5EDW@4>ttAeh=Bh_u=@erUeJb-RG4<%D2|IgM?h%2aU1iua01{V0MV{8xS+R@@>Fc z%7uaurkIdmo@3|B9geze#n`cOaC~ulHP#SzEYXYhI>nEeptpzft6$xl|91OH+7;H3 z&hG<^)DEnEMMo4@=li>!^f!J7lF_wirxpJ)XnZv4tiQ|ejrK37xk`)rxe|6zm2{XJu?`YNyIdprKXpbY{?g zBjGbOW2!)IdJ5vsl^rUb<@f6f$nf_|J4G^h!DVh`^u+!{-Xq9*wgl8wUY+G3iz>VS z0b++DOkq#4m-*wDgi=(jQrd`~4u(kz=7@zToCR=UtyoIJZc*)niRyJT0>`g(K1HgH zYYTvB>bgtvnih~t6uJP4d}WL6{0zXNc!$?EGNWiG%NBoW?G9_@rh?m)c0W^l9L4a8 z4?~pWh*~N6=hOv8K@%zawhgCVw+hpU%MVV(y`(Ie?^z-kpu1)o^s4c4*F$$sd;E_0 z2gAeECWQ{mYmTjb7nS^m9oO)0RnnT=-id4hXT&)8d8_xM`9~qmGbM10{jW5-*pyP8 zlbdr{m>w`5F?ee1y-?=x#f)M)x9|E-NX~v6sI+XNoaXF@`>%ELy&~j3t{e$1<#sy)R7rvAljxgPWD5WgPDCd2ci))&4{&r5GNqYrLv296`!g`-Yn^bwr( zzEc`4ldg~4rrVQ%fA>avdegGDlcDoUVz*G|$fT>xE1}9Y*!x#i6>c+~+(sWFLhYreyjyYY%H{xOwa#vrGM=s^-t6rYJ9ZbnVM8vY1au2{)!;^Pw&2bYUI?Z zaGgy4F$-nS4-bYqR^`m|O)IQIL@`F8Hph_d`D6FQ9{5xD?xGm>Sry5;OqZ6^ka3K> zaJM(5gRRAKaS=W|d4K8vW5jW<>!IhBM1z-p7|EMg`IKF#(8kwFb}%<6{&CAChsRd# z6pu(5KAm(b$eACYd**LN7V|8;ox%AP;&Yc0JM{VdGv8}e4XN)7fWU@8~p_^8s zxQ)Ws+0gxm`R0CrduhE2|krrth*pzK8a{>G}J4G7uW2F5tA7&Qx#y&!x7#2#aY zRY%43)GeguW2F1?S^rO22>4ag8pK`>KELU(?V-@7^rh<%j;PI4!Fd#G)cJCuthc7j zC5%wHX-B<*BhIcM)~Ml|R_jy3$O7YMCzh)5llttlHDlF4H8-?N-ljeIl*f&nnA>r_ z1Ok5BKSO3V%^6t>2rGAbl}K=5)ai$RL!Ey%4_%EXPOgCiN#xelKHCu4GKc;#@qJ`p z$|m?dIDz5Gx!$is@b6b)Ka&{dMOaVVVXgiCZLS9(U%B0~gADTCQQ;_FwQyZ%xb(?i zguLt_VW)RC{1h!bi%^E#C%=J7dN5+`{)lJ2O#v%HGXrK{c~nE2w_Pen zYeVKCprW#Ey?dy*H&ZE?G(_&iiF?8+$hb048Bc6C;7y?%_;dwIfz_FSL*DXkl{Fnk&DssFs9rW%dZ(GltD zFN#LAT47nPM|H7W`1ncGi|Y74d@qrZ%QanE&&7N^Vp8Ui`u1+DQO!kXA(^Ms*2FC9 z-NebRHRuS|N7hA7{lyPrQ@#WF_C2Hm3qCwGu?Hmh9muCCc;kSp-;yLfvzWT{HmN1R zO^CqrU8bsg2KG{=nyXMe;b7J9Mcm8OHkef(i@8_2vtrXcu*V1o=lR6 zmVeRn@ihac`eFm=0)#Oyno$!eO0;?NWaza?k{`=;4XODj;so0}&M7tZcSJ5c$1JR= z-U2?FbcRzYHv%Wosd&6<|Ew1BH)0o@Y8b;KxGU{C({U>*Z#LN0R@JW4j)yagC*Np^ z4nMdp`G~&)k6-1l*WsvXfxH@cZT-tr2t!`jIBF6LO}!q*LI4qPnk#pz`|;VsMi#}> z*-*;h>wksmkZNr?B65Arp(p?R;GELhfMKR(ftnybH?=NqT*htcs^T%bn7v#8hm1x4 zBOztCj#PQ;YBppfDMHi4$4`A9c(uZ`xW>D3_KMMmw@%>o+u!<$myUjiWU+eu@F41r zP}Fd7oQc}PU5+Q!W*r|bArGn-@Oto>{k?gb<4|%bSm`4p%PXVOou|oBt|2y-7BV5|q;D^oH?A0XoUtn=C$^ZP~^B`*B; zX%#jb1zh73U7rS{}mx%1-SqDa;B&`*SQ31OFb!6zfO`@=cQcI2(0ekWT48t1wn zjY|pyG`^BX<Th)Mw4Hg3zgz~uQUh(KQTX4(DpB0VG}L6-ZR zN(VCb?jQ5ML54Moa1y!kS!7(Zr`{xHK>&5$IeBfN9l-SYLh}Lku zz-dhowLC$Iv)?^U$hXMguL-C5#{f0B@wIMWNSwxK1|5vim?=hN#=%p~TjiGIT;}V( zC52ckPK$b!de3aR2noSOjQ{jJZ`kL@eGy7=t}*)_j*67iBRl++_N9!F{7PcU6D_eUFxF?jB?M~PJ@2yAeQ%l+T~y79{PsjQ zBcS63%Wpq}t^4&N9G12mQimyT#$7DS>TkzmT_EOmIq86`Mm4ozxpT(6XZ%6=MYgD| z_Ro-1w4s}%r-sqXoL2ZhQt$C}mFK99#*?t={IplsL0csb+@fHeva*H!`l4$6N!TDS z0m?ltFy6={>6m9eBKrt}%xaJeQU0&X^FuTJ{$h%UL?D~bZ}AeaKV*t3JJ^KY1zU4J zzY*^^ltVzV2WGI&BqFQ`*2qRbK39+r?AspsX_)&x2ZKu7dJiGn`bfy4=qjiagm;J# zQLtp+GrQK3lX7!ne}bfayqV9EYC#ya#Fqw|&i$w+g71@-i;PF2B-Bkos__~erf*Qo zlZmV;ydoj#G-Qb6fsj6eb-gS#3JNx9U9EV`JCJA1=2pHbU9BsGCx2P34rqsaTk-pE zHRt>pb`Og*{*TTDm@#}7szs%)lda{K)}_FhJ_DD3#Y$yv`lBL}w%B`lHKT<;F_*I_ zilO&??rGk2Zpa^ot&D_zAwnz)D@dXZ8Nb@mMF0V^A=G-84Y{xP!@X+;Uw=L6xZ=1O z8@@TWv)rh;5?@pj3bGYl(493Q7gJl6c)6O3Uppbad=l{I>7K`D z=J02U7s*7F(bVM_9C(iw6bi%J1yQnZdz`4Hnxy@QHzZ8YZ-C4FHmm$^z!5c%GUZYw zoDX}ASpAQrweCZ0Q*%z~i1W@a^gn2Qa)yN1b$=|kb64=}2@n^4ju<8F2E^RSIgHoLBGO%S?u-i3 zNpqMM@R$6F)P?o@zwB-7?^q0nabBG{O~Ed!fA+EdI~X^96{4!N*&#@Hu>jHhCOLB^ z9M#SF9Bz7a0`I@JU@;8~X%VZ$rg5?F9LGGg8RV+m=RWMno>s!c;n6SdaPI)9djXY! zQj1ztLG3n-2I>NMxzM9_&>H<_3z%=qFPM;ns(6ls>;`69PaGTd|CAX!8WO59}Iy(e&G6_2`ftUzM*9OPeD9Y_~kN!zy}>+>Ga@4UMz zaw`QCD~)>TR^@3UFWfUwH0q@P(qGRQWr%~yq$#4;4Cpo&jAMh%AX|fG*Yhd(zCgyO z?mi`A0jYTB{=k=?nl;7S1NWlG8&?6LA-*f@NwF$;kr-`@_GFoBF!sl%-A3n_7kDJ! zfy){<5Jt5U3_MwTL5(cmy|YWxfh26})8}p#{l|XMF?g29JMBJn%-I?RiznvQRbU|x z;VK=THU_tF2JnD{Wg|H<&Y6^KoEMMt!0!v9+y}q?*A`%PN#tNScyZ0!a!n{SoDSSa z74hp4g-vR{obAao>YA1V=TpTZ3Sex(n{oeV{kr+LM z-OVr8oT)(_y)SWj%;_`mkrW`U>Y0Lqw{(7lf~?KyFa{wX%I6l#L1Ixqu4Z$$5F#k% zz{5p3QN{68mRfT@XSoe?%S$uA-)(QLb{8zb+@BfQU`3un@0CmLv+q>_RrJ7FqD}4r zLfr!puYUqb072tY+W=qNzhEVo0AT{$`Uf5%=y4*#6I-+%kH zdKnn!#Zg7%K0+)QMy6i3A%}=@x3Br~@P4Sov{6FvxxN~S%yVgH27oQHj$4oLkhI}I;P2y7!Mj?@&Hxo z0vL<@2bBETfO36&*nb#6-n0eCZhKQ5xTP;UXZs@IZOaKM*=4hV>8cE6{QH$}Nr4wy za${%9^Kfx?Kn;|vA41%B?R=s(SO@o6xCOJ#ocO|ay$M#2)LHoNrPw`)8iM$38gjYg=5?xw+QWC>;?Ez{Cs6SuePWS}!lr$Ra6U`E zfyX{(ZBUD;8KN%t!GVc>zRBve=&gs7Kih%2cVve&`I8=c{>DYHxtEj&ZHK~mCtwM0 z4QaIp{jm)y{LnqG_xqC`2`)kj{t+PAQ;lg2VT?b*8#q1sGh_J zD2mshmva2^mjw`|&Vqip$~k&k{wV!d3Y!yja3wd+UEQ@02gE*nXA`CW{^A?ac*=in zJZfSZ90CY|s;mo0CnbF`=;3)V$hXNdX8@t=;ZTIMpOsjV*JCY6MeO#zC|5c{QgT6> zaleRyfcI%KM&YZ!5G7gJl8`rrhAa!TVt)*+}yv$ zrTT_96Wia91|Kp?ETXsfA)`YmfCpVr&3z(x_Ob1JUlECi4*+XPz`ih`NFDOPCkmDBy3?3>H*y>E>a9c59{6TKohs zSR~@__V2D4`c#_2)7{Yf?2y}Mk2HIz`jJvmtvftS4nQF_0c74q!Qq(8Lt%lfM);_v z4y8gxJe)s`Mf%^Su=|m_X;qv*!v=6(S;MS6Myc*dh#Cnkf z^xs?^HRyVZ*PxM{#PVd@u`CXNI3N9Xe0On+lClM4=aCwRl+)0Rj&ivGyv!m zO$Nae>SzS-2K>keaH*gZ`2KCxH4n(G~KtALnyjN_olrFWW3Mpzz7jc`Jmr@N8V zYU+#WlE9nvbWCs_ko>8;Jc3PglVO*a+-f@ix}327#3I^%FQdi224Y z8*O%N_Mnl>_I938iEMulROB)sj6EzTCwGJK^FQl;gRjPU_YlSyq(d(Tv`yYhjvb(T zp#YWhUrVPo+E-*LX!f!ka>dh&ijKG?^ z3sW)Ye?OdQ5M&S-ajNG4@a)5H{MU`JyB@ViYRG9c1j_n_6uHJ!5NiYngywz zRc0$d84^%lOY>mSGpI2OglQ07=euu=D1dqdEGe}{9z0}7TqY;7df4|Q&U|}kdvB|$ ziErTW?tg+jo+PMz$S>8?v4~y_g3~=I9ta&w=fGLN18RqUnS;?k=kU*IrglYf(6!$` zS^%Agk0HuHCWF{PDzV87u7%M^6cj!Tz{q@WLPfIR(2c@k9e$RW^Wd!&bbIs9zsgtc zEN9#or$x=>{FAm*8vXkq9w7ghAA^4-W zeAf245xD&qbBta@!+_Om(_#G{Z(e$@bOSByaPdY3-fOax_+;eI`9C+LZ9y&d8`LYB zt~^YwLm}`B*xN7jPyBi^dgRGIN&oTv#3=lS|K94L(i)&m=I5l{FoqbS8~lV120Hic zre7yQTKf$NW_=b*fWmRt2>g8v@o@C}3;8|1!Q{${sk?{HSSjY73Wm$=Ku(Qn$`43h zAfD4FB2mgQX+=dLja?!;*I)ishD}GRS?>Wr_JOU|#MII^n7!CS|7?ao_A{9X>hBFM zH^f2Bq`@0~1uE35;QfEFr5-*f47uV{2onmb=RUu%O!iB>bALyeh3Hh@HKXb3r;gpg z8g<`h9c+b+e$;mq(BBh~Bx@S3?+glx-_rp9PLMWl7M~otcV#SJyVENfJ(vyqDR+oo zX5YVT)>#I{_A5$4o;ZpJg(Q{+N-vN9e{_9!Jl5^|e(osJP%ef4nG#IN37-tS0d|(Ke3Yp z|5p$+Gsi$l(+H&9{-bjFHpXZI#gq=A*_W&h1}x7HGrfhz*j_D1E>=ba`%V2=Oyuid zWWaHI)OXyJJP!GcbhjkO_E))877;q(-P?K&B-$7d={4i9JLNMCFB79%i z>~WHmt=&^Ta`YScV_y>EVOMt<+}AxAge}9DD1?)TBFRZ|IC;;`^B;qol)fYS&)nko zTmIRCs6N2~T`1&0$yfVvHsiLG55rPGDU<`+`dOW-!@{6=6Is>&+k9;O1QQ!}QW*@K z(K^y%u6s2j+I&-x!LHPXRUY@I#`tqa08T9uFa>2lC@_psKvu^&QS3i*u4eq>&)2#O zUaJqDpX}E83f6Eb{F^p^{RHJblW+;*#YYB^iTAgym9!v*bWqsvTVc&!LQ!uK<7O0nVPNB@Az^S)Z>R*O-|O5$HLJUqYsWqJo= zf{*fIug-h{C-7M;F^o19?!H9eM_c^e$0u@64#ZmsxKW^Ti>HQ$^U^%7!Jm6!|O)wqI zg*M_(*DGeQ$ISTeBQ(Xr3#`PbLGv32$&ZvR529%$Kpad7eF0ir%8WY-Yy3~f2e zKn|I=B!%%DnERnqE7+yEbcT)SiQ)-A7mArBA`-r->12|Df8Q(#AwFK&@8Dl~TC=@` zt;7zB2htibQ|QVsh4-04Z-ZKshNm_{0l<5UyGw%u45crHG*36*BBO;||0YQE#O|#NeEs z_?LSyb$hAte`5hmC!wz2bKa6llth#8|M!7i#WnjrK1NrU`mA0!9H5mNCKx!@?XL9a zsa&~u@#6A)#P)e1zN?Z;EWHar^01oNOV{Hi#-@7Cis9?4J_H9(lx@9-g=Jz`~y|a7Zf#t ze^$3!1x;6rKxT(e50J`<>Zs-{W0gU8G9N_FZo4Pwzh5riapEEX_Ms=qDewiMxkY|% zmb^eJn;{uNaTyRCFMsY*1PcSMDIj|%WDEnvzmFqTnI#?h*$qHq?atkjpesf3#@vD( zow`Q_J9hl9he*Lw0^39cXl>*ZZ_9%ngw%{uCodod2*>~5RXsH1hsmydc1P70Dx)l= zSEn~E9b>yj&1`r~zX~C*vpR~#`g5u0>0$^_mIJokkD6KN4jW-!hAOQw!m}_b24poC zp6LFgh|_Q-Ch`?z89E4mf_qy$3yd0_fWU2N zAU*?YqA=b?ZWpA-k>fN!9%y{VjrnHZ5^#u^&T`^LBr3^c; zHxHdwN(l#ObX2Mx^AX(Fl4D{{M~604VagNNQG*Q0H=)8+tbtHTVm&@7?}}bds?DoQ_}>7vbNBMeGV; zO_->LKSPcGBa!B+K<;Q*m=I6JeJ=)r8vUJ*C%2B6_*Iw6KQD|>^$`xH>q!9B2wrZZ zs0T{(rRd-WW_B|$E*O9zua&r(-UXm*PB?V{GqR6+(T&EwLNc!xz$Q7;7};n~CvYge zzi}V9?` zAG^6#)ASkO4Y1wLxarTT+;1D<`TMIbKig6AtD?jD9!_x}0-l&T`wy6i3Tp7#GS4cI zE4^V;ITsCeS1j}-KC<^7i_sB30DFP7Fzm8r$|GVRF+S~)5+)-6$R)NtUDx47I8@nj z3W-6AN67HkE&){Wso>E3-`T+LKlcaqmSmoR^BV^}9D>OJj`Hoz1sh5#G%WzV%#%H2 z%)Xkm+tG?EGI-Kkus6v~%%aXbWU)4?bb`lAV=dK84oR$f1AgZ~DW< z9oS|HKBu)D1Q0W7K4?q1lXk!ez-`3$gK(Zu;@2npiX@YB#QAQCxBd$lmm0U7h;0-RA4D>cK2oA%qy?m8;d=yN!15z zE8gUT^Hbd_P&~i9IeP&j#rn*pJ6E6^l*Y5!_P2hf4%B&+>>y9kGy{yUz1U`=t&iIW zo@j+@+WKY_b=@Jfalym7Pw?mY;2_=n&$e*vz~pznZ!zj+szmx?1K zBJE?mg#Iq1G4k>LK1TE#I3Vk@I9O<`!E$Uy=%aaR!$f-wcOXkx*4JGqBRidjr%PLO zdM_ei5SrlK`ws*NpZdcoyP5=Ot0-$U=j%DmTZw*e+t0`%4n(~(;*|DW85 z$LwuU!Vd7+lLNFGZP4EGQD`=wv&}BKVyv#nV=F4I_^~R>Kz^B{E(hH~G|WgE+lMnBUX9x$ z1o)J?#_iM(^COKHfDcgs#X4vKfnC+FbJzR#Cl>omY$owf;OLbhP)JaUP*lHPTKQH> z*{eT{5w3&5*Mi(Rr4f*mRM9XUD?VTiRVx)gkyk$2yRsLu1RF8V`1b^ft8`_-l%|uOEGx579gt){=KA+`N?jbIi!??2Ds!V}%8r;;V00&$ z?m=TY7nq+Z3T{PEgA{KjK`i1Mga(cO!+fl-dq)w0 zZz}P}L^!=XaLAZh6qDwuA9n9dgxigRc^%>MW)RMN)AyXIoXxlq#K3wc4eN&;=zXip`qJR1Xl@{XTN@vSQ_yfu$6qe-BVUcVBoH( ztsMzx@YL$ZJYDi3R^>E3sF0pNeQH*wy>tr7k8j#X>;2i@G~HuK^L&GG7bR+2&4Py@ za)DaNE=3)2q5*7B?1f^i71c1i8sA@|P`+me#9>0XkbwW%rH=f2rqKtfWYqLpO!wdf z1yevbr6V|VExhlc(YUoX<6PIP1fW|Y3=#Svbd44 zqy^YO$dXrKFc{MWFe(f z(H%uVHs`liImlQuPHfXGxWQt=x4Kubr5=ExVN7-wTua!OOJj2d2A$N8764WGHbwY^g`rUCCD zTdrZHl$6>=*Acc0p0$BGF1z+pdcS7qU1=LPohEar?_4#9Dxq$*{A!{oZ z-Mj3|3pCnC_`&K6W9$>gMkP4%bj{=vHk}R z{9*c{fbYGAQH73I{30&xxk`9qw{7NX#kon~oPfWB5z&Q>ja5_mBvoZ3C7ZPHhi@nk zU9(M9RvJf1r?3V~Ivwy}{rNsk5jc3#JFd*v=^jQjBwcPDQ4-{-oawY~pZwAa4z0gY z1u78mpg^$OQKYw*3fn-YIkf!+lT={HpDICB(G410=_e+{6JLv+iyf{4qtMp1g00C` zb#V&V4*bdmDygOPggra`5B6X_uo+qcCf6;h823!&Hx@uV%(4b?p^oAdYj|tgtjd%3 zz12ZhB6y1o(Kx6ubZEamDd>m?rlbB;&cA{d?h;`G8TJ#g zFG!aB%}PR>(O_y=>>B0Wr83qZuEJ*$;S)*cCr*5Y#2T15!rCQjNvZVyt&4DC{UJBI z{SkJv{b?NMzEua*rw69d5_Uniiwf=5D-)7wNNHy9&Q&aY4+$SlO!CnI#9rK{`GoiL zDA+|uI|k^5tR&{3BANQpdHq&?<-PXo$sy?NWkcRw{J6f8G}#Q?bp_b`?^HT@qO{iTrXziV1)p68 zm)5#8(pYl;sL5KwWt%u~-b9p0o6w|&NJ&zin%9j%^~EU^e<8kKKe=kqJ=WF3>$joh zXCE*Hii_oq_E+3(g=dNDGU+F~^A-F0`V_3lG3Cd0Da68PY1zD8m;MN^$$Va3p`!D0 z-|pmd%p3HYL@J0X$MYJ@VlTiwdW(`0Mj1K`F{cGe!JjE9_9X6C#}7^NCqkuj=J|m( zkoF*eD%a6NyDkguK96qQ(e~@N91_ANv&+v298;nv`G^4|P6hxfG&x`#PbY9y(Od?S z(75(M_PV(cd%!iMEpQ5DecH-(sdL~yTlFgfyz&Jtciazrh`&P*a-dr#1J`C%7}b9t zHSuZ)IivMt;!M4^==VONm0hQPV|Bkzv`aA&qWGaf3Q#!SK~2tA0^GL{hzjr!}mjV5CV~p&deCN-1l>Jty;Z>c!D|aa^`Qdj4so8rkk-c z3_#abMlcy@-TP}Ax!k9L;lUnI9qW)pcyy^bJh%(9=mc+N^#OYm;Mb6RyQ77PsQF5D z_8>>Wv>w{f=+toYYfrwlOHg4oNeGFbNOJD}Q!+sulXX!>P|gNZigx88;e}?|v~t+i zbFm_=g&l~Zl^7_$Xf}_YeJ4&Qh7TYO`|!>)t2ZaWvdxFUC)=o92C?k`ce|!MZl9fnFVnNV*bx}!o^`f!mFyZ0m35JF@fv0OS; zd|~?cJtN@^)H&MJXMN+aB*2%EfS2xTKE(X{rEk^kVjnRX#{o8nFl3H7givX?ydR0o zGL15!{MYfW^&O@2&cl!~%QZkjcowE5erzfVknSI{UdSN8KR|u9f~pIc5|I!e4FU3z z4w2U*R%$ z?UZVJ(+NkL2JbNpAZ@RNKQsZ}x@>xbYsToEhgb>#|4x01zBK>5NAxny@bHMqO@U9) z!~#0jAgCZ%uRUxcp=6PGCMHIF)~M|!5Dff5u!$*!U^J$EGMmG^Z8z!S9c8f_-XAnF z&;+6dI7GwM`2LNjH;630RYZXPxe8MT-Q{?JZU53=gb2D0l0BRZ=)7V{NbGleedD_^BW58LmL zhAUG?dPKPM^a&CV=<9Y5#8(9$A_@Pm8iStz7$pgiS&%;ms>Fq<&+;di=N`PGM3e~QhjKVUg|C3{Yj*EyUgbGltK3wqAQ76QIx5IK< z4+|=Z z=eurS+RLu2343o4Scce&D8vRw17$zWWfnk(m!lQ`p`F8vJ51Jl7X(0P_9^q^Hl>3C^MU(oDLZ;hB=w^x%c2qDG7H;77PzU zY!p5)Xa=Sud3Pb$g|7ftTV<(P`w607 zvB#_XlaF%bE?P@^4MZW)5J1*vxkxjY7P2a^V)ba;HE{=2ua`vZR2#Khv~F9f3rUp9I66 zDJhs&vzsWFp`{XAR3@?0M4Z6h`i0Z}uH}HNpPvmqty)+UECA^VDJap^eSX&Lr6p0Y zh~sT!R$V^@Be)n)1B0f5j${u!akr20HAlA&%+_ynh1`pdO)M)a5JF(`0wmH#&~*4! zz3cl9t%kQ4ge$omvpXpKLXr2b3Au1tWF=s3Xu_xhW!Q;+a=J;{u!yG8Tmz-Ls32>Y%A! z$%wY!xl@epF&YKX>#_eaI@&sUCr^qU!C+ZA!IDUK+5aW|@#7y6a|Lgc6kQQ+^pz`V z%Jr!#P_WHN-Ln_Z;bVz6{e@tcS;RMZ`SPXu&iYpj?mowKp$Cxm|8Z9Tv)$j=6U%`k z-2Svdb{E8Jngn{|dR>f7eJ0G?;fY2T0Y(j^yB3k1`T!N)E@g+YC$a;<^qqyX{W1O% z<=-d0_3PG@=}wm4qdE)iZW5rKF%T;0^>L90L55N-ZOmIi!J(c2szSjM&~Pk;u(51X zP>MPgkaB*FzCk=0PPmnjZEy*OuK$BU0=$xIj zu<6$V)WFPLRH(P9f};Hy??kBGTB8y!N9TxFkMuF@O_;l{xhC@++y140VxqEir%p+L z&dDYy=&b(R-U_2}DK|3Ad6tG)Sw>xx#XDtWimDMXC`3~>=_4$ghk@kGAqO3yHHZZO zCZDB(L6pcSzK1Qqs=$8y&up1+>rHNbY)MA5ttw$SO8FurGw-yG?uCqG| z&1t*{O}l=f%t)c<;E@)`3j4x#(?oU0VcN{etlMk?$ua}dEX^aCgZ8t2I&n=lu?Csy zal$$nKn|U zM-1TpU+~uI`q_LLL^pgRhmimi5XeN8)=5*x)=*y?UwFr9ofOF zxpIl${p=$QoLZ9A#p=sVR9ZRSwo+3xsjz`y=uQ7vW6`6pqh>Gc3uMIAI(^MLjGa4o zDaM-DipR+&icRo;ABo7f99=Qwj=!=oU*&s7^G2TOZ!AEy-1CxQ_mEalzFzSu$D#{` zUp10<9rGXmI!r$5X)q_BSb3;$e#OFiEMH=$gz4u;qn#lxOYh?k7}gh69QNMlaqXy( z-OWqS51UU#+k3X9dEE#RXi0yTMoWZ7%V-%+{ZsIhW8iwRn)2sO0g8YJjNt7T7AK1D z^ka}hmkuiMo6r#cyFebpWEuhauC1*96C zDq1!9UtH8H7!NW$XOcGO(^of*_{Ow{HXeLoe-W5hOB6LFq?s6MQlKPS(;eNj!53bs zG1ZV^YNJ2(cIWNl!5mLoFNH5s2dn%UUVMH}EGs4D;Th)fW#i$k728%O<2L(K#6L7x z_UkXYI<6Qjnq1#B2{`3An_MQns(3==>)Z3R#-HQdzJM<1y$q_EVqA zQMJ}kj-t5DW(`xMQx?@%O|%T!b^HY8S1v0!4I_x~p1a7J_L~*2uQ3q=S$fUijHRi!>g-9O(E}XH&pqxye8_{c+%ZW9TMj_zoPP8NQGC`r zRe*wzbH7%AtMwX`kJy2N-CLJQM#kl@Zvi1bR!p_m4ytxn&2v(C*oK2Su*OgB?M0%c zM?^<$Wg`vlpoH~HgX{=Zvxrve0l_UqR(l?FFslgUutslO6|5zC?cDjl3;XDdC$=2N1f!1du-m9kYA{Cy zgmOeu%O^Dt9QfAgm}*%t;6K6atfkOx;i#ZyYb{awsVL1K`(Uhfb8LN9rFpiS$G)gk zBX2#Hz<$0|v}LAcaO}rddq)w&?5t^lgPnqQ8@I*XAlR)+#eh3m+74}C4lh5(rD~PS zL6sMl+GcnUZ*wc3ej@lN{$NAur{oI{pZ&JW&flTbmtbP36QJ8s5+G!8rig=D4NdTt z>;hn>&MphoLFl@wxSp!umO;^dn2cJSk3`h6_K<$ySOnvnlOvsQJ6H1|FHyjXMt-7sSf9!n{ZcclM zn#7D4-bqwAB%z=8>5=yi*`E{F-a`b)nWQQD1`Am15`BG||EbA>5_D&Bdtp z&W}M1|_9&a#|5n_V=)3g=unyUwgu*ho)MJ^KYEK zk(80Q`sHZey1!9gx~fgL;+bgXGJkM>z6z(=TiwvYZBjE|ddBZrS^%MG8Z@rR-B z7o4(X?BD%pv7ZgZ7^oEk(QRd_Gi`TH|NDKSLS63*azDpfJ(G%)qjw8Uex(tjLe_e@ z@Y;BMBX4zD^5)`bqO`=^n3sAi01u-}I&RHcBlf~g-#FwS*hkPLExC;qr^;xFbS4!m z(0qC3(-?5>wYErAC?Rquw@C(&Qrt$ls~hyja%!siD>PM)RfWq?sR z#cr}~jRWSg%S%)j#L{bG2W-00QpIyXmnYH0!0ymDige#WO*lE7s$D0RPgGqXz30QaVKEdR{l+0FDlEBbfu zJMyoPzZi9RXkR2Fp3K8Eq}`mfpzW0Dl=^fkU)as0kSRWiCG-}-+ayL-(ykgoU%ALJ~;0T3Yvn9_1>^ZLbJu$tVH6>csXp+iYe2ZIp8 zf{K5MxoZk8Sb7pO4Du!6zE_`6D!mh_!U(Z5GiGoh)TUBR7zc7XkMk3wK@^RpA+0zn z;)Z3=nlK>4M$rh{kHBiO*}tqy{DK{%f1AChjAkQOe4T=_Z=h<&J(;y>Cy%q@bl;J? zor?w~{#qTjy}pYRg6|*XHjPG&bB%5YTEytr9uMLik#OXlB7ZSy`*6jkK%sW*utMpZ zbQa5~r*?|rK|vUT?@>(<&2QB!CNN{fF@II~pt}ijC~8q4|*wz9PCGkx^k5Qbx?+3l%S$17iU9Mr_9mJHYJ>maXjlP>t)7` zPuR+RtRn$jZUyOlVbV*WI=2tgWi51^FEz!7kxn@5H~63{wACiK;P`=^C(2mce$43q zwq6I@a?IbQ!>L5_*J0m>_ew945Yi)vIY-x_{}YjIp!jDZqwYL;m{23O3?J2PU(U%s~0o*fr{} z?=ps@3gv}6{2GYmzcUS4Wkfj_sabcjwY=kC|I(ZKCez&TGr`Mg7%f3*-UwE%1)8S$ zljoG9%whiT#E{~=>4c_;B3j4wy4)V^!mncy>s`Kozm19&Q?v6o=JE4Z^nNEeXZm#_ z_#0dsb2vCNym)0keAxKpqK@vD9s?%NPcpUnP$4Y{zK1hxF?s&{`F8eW#j;hyiN*0gDLmB-bmqFArKIVWXFajYSAAbO!# z&{Dr_w+>H%u0Btqnvx&$w}ySK_hg>Er8-PL^nFv3>*Gl>Ld#sM@$1SVOCK}t=$zHj zqk>vXjv!eo`dL%<_~W)EnU(;5y-%MK1O}(NRa7eyk?jiaXFu7QOuV>%Ho^Zht;4cR(VZmKg^F#7?p?WI^YeImM%rC9q_HP+-|>*%M-t#ATef$UVUe#?7n^XoJg zK0cBw5Q8^uNf_`CF_F+reLgmrrr)5#z@s~6Jhr-$S!H(VHSBT>cQ9a;iO*IX3)@#- z=a2;-0oDeoe;-B5%v<6W>!U+#ZD|FE<5wnAJ{lH%-OG>n>@#3pA??8<{+MVdoz*w1^M{9*iOfL z&EQiB9J|tJN2p%%V3{pU&Sq$_z|bFu9Urq)H{;!t!|(sb0u&M}&Q84(2VV~g(1y$^ z%wOEXrQjcbc}iwX7^F7Y&jMt_bR7nm3SVVWNN7mYsm=g{D>=sdh%y9@!~*U*{L%|} zXLb~mJ+0<5nZ8qeEHZ3=O;LCwAmu<1lLhVJcd9|4E+v4(M4+a8$Sj)O|ax)tav?8MZ`N~v%2*&2vH@NK{xAr?W6 zvWAx$a=eK45vnGLwUyF{Id7}zNM?xfb|Id0WR94srWK4RWY#)1tUkaS?yTfA3cPaF z_jCmGS%SPFVCr&@aqbdWn=AmWXr;-UiWnn;dAx_rqJ!|LE#;xiG>&@MA|j8>eSoOo z=$Q*cWggfqp^E_PKZzvgBHsRO*8^vYztL_cm%OC>?rX`pk=}^Y@2?HWER=uOUwN7q zH)n;XQ+c?LS4)R3g29{T+M}=c7pNf^C=}l03EQ}Bu0$4gJDdWrhlg(O5aTX)8diM@ z--ctqw5kQJWy~5y1@&|fh4i{~i_X${s{(}07{EIGZ?VsQT5LBy=2|b9_td#~(TYwP zT`;yrj>F{BfW@mKZVyTq7gBWVY0#8PTC`fCz z1h?{7=;iESCl))i&oW&1dDw`jH`SF(ANfgc=OsG!re)}_F*+5oTy^k+0NwyJTJl}8 z6#cvIDt97hCPZ)jBmqoRBy1f!wPROs&1cz40=#Dd+r=)&FA_X1>8$M}2*Q(v0&6se(BqdtL% zdWk*)4_kc*pl8g3pTYcZ%?m$`f-Abolbo7?sV8)&RrU6e3$4I=$j=9(ifb^jwZTY0 zm;V-q|FWR`zJ-LiFcP#ahD{V>5LJ-vAsD2XYwRLwVI))?u|`uyWId*=xeU65f;`>Y zAbIf0w{qGz0=lB7PYILP|H*+kX97wp6m4;(L=QxDlhy4VAMZco z=2`WQoR7a9?(L$WCjoe4esQhchFbiA&W$~GaL_|Iu*d~jof^0@z<;pBly!oNd9BOA zI{e=;E1mZtj4BjaGFLRAb8B|^v}>?}Ji>uRTd`Q0L7r1%<#3)rzMxnyas6Oyitys9axRu_*hr$EY*wI{phr1$QSx)gnOZ0!%BYpz6GYpF{XF zbNvjVkx?$XW~0Efm$f_{Yhhe%bR; zN(T4g&1$}>y)31QfQ$PPJZy!4jmQx73v8>)2oT7%)Kvq+%I#d%-$f19{a|=wGa3Hl2f0Qc2WPEAMjXusra0}RlIZwDSy9r z4Z`X7V9UE)PxDpTq1l;y%Wew;1GKNq9zcKKwx8&Rl@aiQePL&X2=v|8fW!P5d=xmw zg1@wviGq=ce6qS4>MFp&DF$$>^TPJ?4NycUR9|8v*Az5r<3xEK&5V(@971?)W!45X z1gbNtM%?M<#>Q#+im4D%w9E2s=4Lq@VoQd!rAZ>a2pR_+UvIM(y60N0!%EnF{1hB< z>h$CRdp`wjIgbt-jrV{&k>b*cx*}kVr3{;!-0JZ`>WE?o)Y#WPr<-&AN{58@cz-Be z5lkdi*a2Yaw!j>A6gV46s7sQ@oMF+5zc_~E1Sg=7yz@) zZ7NkY#%!YP45Rl7JnRMtD8XX0Fak4xNQwr^tf#+V;yA2mI!(1kp^$`Co@bCW7Nwbq zs3{n{XX-T`he{I;jGfGDCv+mpleqp&B9=B9F{2_#QP=_v)hwa znz&k2WB5cxRKoD-ak0{Rf#KIVkuW-Q9X8kYWI=(IakMsnwR~SJupY~2|l&) zn26eoL;M&v5>;iR*ZKd1vfgQo$4>)LtUEd3AkMr5q-?K^gG({*fr~rY_NMZT^ty$D z|Gq9vB67(#?#h{UjZRDW1{y^LaC9P_7`MpnnuLG_T-{i5cGVFRca0P}3*s2{q6hca z)YPqs)t$jS0OW;y$%~Je$(Pq5$yEd&>X>d{g!zjAwht6>Hxa)y-$)gP2u;A=8`L*F z25aV%5ncGXNHvfHA9VEdzIG$<1`kc1jU?~5astmz2hPY-G=j|NGAclG8}D+xLh zf~$vX!<|fhn=56{jPY8$`(ngL{j`ZN=S=4?Jy2w_>vMi(LG6R^7?qXynYIPVN;cdN zsKvpJfp7t5UJVOlMDBmrX7tI{$yqciZu<@-7)IiZMWLy&_+%R{FDUp{r6s-r3;*U0X&-rD^@OEx-<%+ku-C#RJnm{ zX!6G)UF*2(P&qHOD0WXO@F}_gkG8Z0Y~>+WSxTQ8h0m*q7z9B0(s8@b1|kV7u6zfc zCpSyy3h%amyKrZWTel82Sqcvp*bZz?4E?eaKsY^6QA7^&{j^;b!x3`c+;)^@Bs2#* zPQ)n|x=4pUS6FW|u2S`jM+P8+rZsONvgr3i~s`c{mE-mr8Fga zANoQaAp^mTHW9J@(`-}}z9Bj+(E46Zx{o`+mgQJ6EXKSAKO4j(U!XffwO%anuHvW# z-5_=%t9EJsX>e%G^?C!0PdK{+Ne<)_N8!H=$**+H*R6Tohpz{@uEg^^(g%#U73FwB zJol?TljM|?_@X-Pg@$=4Ssv_4?doRj6-?Ry)9jqiM6)ELA>dS4xw^77ID%9jtaiNS z0k0be5}65x(?ZoP zO6vck=c`-jD$^g(SMoSc@=uc8agfiP>-NiAjrJ2oU3gq~pF9)$Ojw|r?)~}VBPQ0x zBK?+K?$+~dqmle)bY~BxJfd0Tf2^ow^f-K034ddko0vJlL_%@7;xV z<_+x6PUy?3UqO0rpwvWI3>VF~@uIzM@b8e>QZHqh^?kG-3e@egW`X*p_MC`2!JTrR zCyyUj9%U7@R8{HvQq}~`Sxy{yEiJ%05_ADnEo*tE)XvrCTm{wO!1F4Qz2qAaRLhxk zx+}Ae=M*|2`WvkcIFh1{W6J(C*+iztn`9kFFP7a+C{QT?16(d%fo*-J-IK|IvPH$X6op)c~Cc`np$M?A}<4g5MT+PkcycsEd zQ6e6CbZdZ$dD2h5#6gj(eS_$Qvw&;afcwqMbUzT%SbWCezwNykokA~^C#mDy&JYCb zqez6tFV=nUu*Q2fE2M^K{tG|d3 zGc;_?qHD99^y=AwD_m-7(F*bdd)TW6txO7RZ!t#ZH`&TIX7vgEQ^$0Pp$KX*hDIRk zR0s=YcQ<`juLZ*zy>GRjnZpEqz(Q-<>o>Mtl2GktxUf9_jRlY??u|9(-0ca$sr|>H zCxsf(;8;DEcl(s{>c`8FJLF;5`wu1zFj&JL&NJxoVdn^q+AO3Pr7w-cM#=m3sl?b` zvgMv*{Lnfj>V`7Mux-+`YOow2nAVoHy9XmlKVeCp4V_S4ItHUSq>HI<7&9I4CkG{ePvR29)OnAQ(JEAe}Pr33#ld!C|{}=MY5{!r<^dzH)B&i*s`-N$|-4!E1;eQ98qenO6C!j6%oaobrW!T-;esR<~y(cz1 zxhqM$}C`2TgAJ>WM*pO=DJ#zQ6OvlESR=!8qS|a zu0-!n0R^KXKJ+liEz?eeW+lKnZW%j3?qZD19aa$7DNqeka{z|uS!Xc2YV z8=>(!O?)y5unXDjgc*NH;i)e230lSd?-O;)%!|2lK2h8OtI;$L>jGefr!Bb*>$8$> zfKd?-TH=)6VYm2xn>g`T`N~9xV^~w@9hs$kf9*(Az3$^7*_E}$$9FWDj(am*$hmtr z(&tX!b5GC4N}p7}!?_kS>e|qFp|beFDX>vI03c3e4D>}zRkfw)R5p-nZu0`fvh>1w zMu0J}f-g_f#tL-aK6)rU?NnXC3JX9HFbtA>aix*uW@Km~1K@?c;*?;wa&6i0C&tTsYaF5_3PW!Qi zTx#{Ji1}K=dz$&VNA>xQbDH)vn4WbQ7kz#*K2u4V`%yLT__}i?uTb7CsYfmhX7?do zJ+S{(g2Wz&5+p9g^49OT0+tOq=YBp83J$Td*-wEwfK|+zKG^_{k;rb9Q`+@q;1cAZ zupV{PIT*>DAu5v=0=N3?rJ?Uohs1(#e##I^w)0T(r2?692!9SZQ1b94U+M6rPRsz@ zYqhkmMcmFV$6*ZXYu=>}Ev`y6<|9~UTwXew;C;^ccDsWWOzBbn=hCe+s)Z@Bix?p> zCn%4%p)}xH$9mrA&?F;LJ-1+ew4-)EO14XA4t2}Zt{VA=^v>m{HcDDe}uVyD9VDGmaF2>7Lm3$nr|KCz<}lrLk! zfrW8V!YRX&?Z_NpD^}2Sv#{2zehJVKD+aSaGE&lk`F(?a(bwtLq)a<9B)5Fj6cXd0 z4{IKN@37detAjTHhIw*;t^U>h;`VTwZF>|lO1-!br{$d|u1>Z&UZvuGbWkYt^nL5xpsD{NvFA?n@rB1y73s`lN`4>P_2x> z(=}^de~)bB^W9{CO`|-dZ+oHOBP4BPOHyXIuh1Y|`>3ehO!%(-N5P&N@_xrU0X9c5 z0cvyUU2D+7jst||z6}Lj_S^CB59*1L?6tD;0JcfgUggi9_IJLop*qn#U+dT5JX8Gb zc&gyCJ9vJqWz0X7@Mw>TAqQm?rgC)ZOjd-Y|wW+2gya)H%^LcLdxGFcG!0e69L${s2>dq zEg40a0?n~?`&s&p`4-&fNie`NAo8qFf2ds zAL0!9^}71^!y;AxBq7`ng0?N3+M5y^6GQpf?ONlR&;3H}Ji4-xMw71DoQ5iq z?38+*{-qOoLPdnu_-mJYi*Gz#)0OhT$3~L%{?~3IfQ>{n{G8Kz8b@zAV;f{6?mSp! zbYbVNy*D8?TY;BgEI53tyLVGUj!J53RREV7D~zgIl4XzD6m0E=;l6HncQwptLU2Ry zF2=xs)LP>mbkEW_8xUt?+AkQ`Zu*`s00=T|yj-o?HHFPGo1nDZHf8U4z3@^n==hJc z3b$vIw}rB+2`pJ77oW}bX=mgg7F=2;3s&Wh>kF+_K8#+_ri@P+YT(DH=BD{%b`;U| zem(f@F`<{oK&ZyeE4BI{rBH!d3T2954rx2j_s|)oiG2su00B<3U6;1`|Dei|&KLhR ztj;@`FD7T@@v%fz;8=d9yD_Wx^=r~k3>#k88pyr#UYzi1h9SonQ|F^8-K>Q8zPOIU zTlRx*c8>AidE>cRaOoi9JF9O&!2*GdJ`OauUN)uNIOxMvz`^dLzjmjO$Tr9Dk?e$@jf{B0USRC)cc~TQVh|MSnfa<&g#5&AB4FsFWk}x^ z?6s@?uV>Y#dA9<1+Bhwm>~r%^1pRY!iw|jXZm^lHSa}@(sP^3RnfZbFp02>mY^D8$ zqB`;E(?6JhARg7&{M2pZ4x6rSFAQdb*-VH_;=<6e#`KcSmINSP#<((?+mrae15&yq|F%aL$BMG)mm@RT7 zg7pG7kVxKVK>!-G;YrgELuY7cJA$(<4^7p;ZaHvSKnv8RfT{9I$0bW_;t~5xK#va} zsLKjpgaLRg_)rk-tE5WTIge0S9ZSg+Swfx;!^6DY%c4Ezla+Q*oWcQ`x&!zafkFkx(>NpaK0traiF$u?GPE*<56|L$>m zrEA$cuBh2SCpoJOpkUiNkw38c+>7=K0Bj$UHvAk`4(+QVTuv5yy}AFz%U_}_mrWwh zFExlT}Vqn9X3_@gG8PjTd&08}P zLpYM&4HrQ%P|j2BI+$qM)t_76&6I_fK=NVBK%?F|0joY>95n`0R;x07ts-bP?mARf z;+w7-B_LIJ(Ib(}Go_cs;*^$~vm6keF8KZKpxZPavV6uC%$GO6cT9cc^0`n+u1W0_mm!VuXxX?e)C?7|8g?%P8#$ij4X2LsV| zoh^DRta`B8BBO}W5#ft74cI+Mf;1+8El0p;RRBjaDA7h$1G5Kc-?Z6-5=Xwk&YW@Q zeVDulPeMz>>Rg?7l!hh=L$C+pvPB)Gal+8u$!8&k7W37Oc`IY_gMn(D zNdY2`_PSv&S};Cr)ecajlaZ4PWLF9Gq`#aEJ*_EGnF)WqjEFLubrpbwrM#NWjV00R zuyVOs{YAa@VlWnB+ zg09)NME@vh2RHJ^mAQ=@w79Rv<-4=IkPZ}t;h50#-c(~|W6`!bh zuf^lX>O%Vg2j6Tvg<2JxiyYRf5sk80`kN6I#9>cq2vwtS9{djSTE1UG6}A5=#Hb2rOy1dGau8;;LLW0r%{76#Qbmw$C?R!0jjT_pF zELJ0VLLG_%$^O$XK8IBw(EqV08zkhA%-s6pLddS9rm=;~q|V~@$IbAtj=PWZ%#Me| z{a9f}{N%iS>d7t6lZx6agvVH3$*-EQg*EnI<>=sUC@zNDUbWQNn9#nZCo;D7Mg(v^FbNZCT9yX#FJd`l z3Ld$SpuNv;FMGHh51>L-(irD|Jy)P|SoaHPha!`LJ$_?C7p$h&5X?V)N`J>EQhFl0 zB}0Qwhk%SIDf=ARz35)Wlsj{i7q&K~$OIj+=uYp20#j6Yv|axRyX8EQz|v2AfgbJL z4yM-XaoaC`Y~dLkSHBHY%26;MI1a8%HL9Y!f(O$ z1%fDKAI1Ko3w_&7bk>GlZ{!^FD<23(`!U^03h1a*3!II&inOzc7Ftm*T)nXKlNAYxANbxGF0vFoi*G^7mHT>wq}CU{dU_#azp3I!+AI^d9pfQq`xz@@TuW-xS>hb z9xD22hFL(Fzrs9h-jLGO^jr6Idu%pnL2ciSI;0I?!YJPT0+W|0grh$)`@fblz&_QP zLwj$(WbNphtG$PZAdyPBkyVkfL4}lc>;QbF)7}99*S))Cr-@9v(-J{uAPrD1ko>mS zoq9d|ck>_q6h){F%+e+nOI}_vW2zdR#l=gl1#dfVeN*;e4N@;eBZtDhwDcuuH2cJv;ee?(&rU2pA8z+{)4q_=WJzphHj zIA8h2Gjv<@IS4m5Vx3=v3J`{$i<5{N3f-~;mz>g+>~|z$9LSElG9w9T zjjjcmsFqmGl8xk&?PGRc#mnhyAq;WHxTZUEJyi&-`0vcTp6__MWV*7~!STqkk7($c zbLdCh;Z#GR;dCxTvaSu9hJ4F8dNS@aE?M%O&YgEVK0)Yth-Wf0aG zDv;8$-N?GWt{4{xNgI5xq%B+<)Vz7ZqKI{E_oc#%@J^cjySi>D^JiZ)_Qm>4RED`} zeg$zad8n?OkM}~pMRE259_CGtKDVi3R(<{l#Q-45&tLl;_1uN80wr3qK2-aWK)A#= zEC&P9%C4#a2YAHRSrEKFXkVq9VKrD&Mv+@O1hfk3Wyr@;|*S(Nri|uc&_g z${a0Zx%1P|VSx3;xwa&i!inCBFF12>;#rG|F)Rx?h1e|6`s|m8rn?Tmp|@F^%TzhB zI+##iqTeVrB={h7R&ppgChxTIz`JqP5^6cRcpYXp;i!xK=z+0MdjM~l*1J8YkiE+) zpuBBAq-o}%>8xMuy6IB6H*76;!dkDZLWiedJIQ%K{>^h-&DdLOG+vDvGZP6ZO4$2W z#S_?{3cFzdlZI%ppZLAAlo6S(wM5;~!v&P!i4yt?ObN@%vRGZy26zexUj$8x5(w1- zQ_oJ3j(`yWpk?EsiD&}j+=XT3YR_6GWrPG&0*Pp*FIe=T$+})z~5;nd)roU|5PUd4*WJ@lpe4ntH9P+Y)Rh0b%nHCndlRlo%YLXreAW;leI?QK9Sv?US3Gp zwczJdFjw!)Yi)-c-4Y`5X{Phi*A(X6d$|_3qXR2e#*eKwf@an%6ol)VEFclVsek^wXo~LCBfHbPQbwL}%hVk;bWg-D{SGZwd1*SGEax z)maPIhE!#oELak5^iC=2_1Izy5hb1^S)*^D*uT=79T~0tGo$(872OA4)(TE=m~P6R z3b((>Bsh}YP(S}E!0TbkjuYSNinoBtW*urd-*iqAqd?MTq_pvuH=Vb6CgS*ezf#K% zyxaADohA5Ii)g-cW$~f$$}6*3HXW~lhiV9^I`f3-ZWgvQbB8<&Q;!6h(zob!E~B2Z z-2qp2G1+3aZw@nqZK0?S2NlI5&0DhVlqNq1I;-evwXgUEZY+`~R-z6l;l9;%Bib=j z#|ofJ9YE+{2p4bK79`|f=##7;^n}qf-1qm^PASVBKO*r3l7yBAorgL&3l^)a+8@-> z3!X;=utS+FQ$5Cka*p_E4E7@05d(!5*}pV_7an5&ikr_bp+)`nZ$Tm+!8vXhUNNcq zC4x%pnsfONCX%i7JHDD)8}Bo17Obz;3}`XCJrH;zr7z8*bkG0uciyy?^tCGuHJMVv zj%|)=uUtNH>TjDqq1qoz<)~cfIxV!&)oAf>CO~>Ur6-ImjeSB(qthvJfhCXn!dOVbm@YtM*%gqQ;AR@&h@OMF=pql5sGb#dR>#mu;^* z2TQHXsqeVme5sgONv2}?TJyckrk8ouqst13pL94}b$xi(wc3+Om4>s8ABzE&70DP^nV%~*3}F+=(=VyM@X337l^KMF% z!6w~@HLm~?J+Vslp7q~h+6zkVCa7&sg#EC+6TfvA0Z;ERl|0BN-K$hkIWf^+yEluD zI%t>c_!EK1Mv?md?p-z7)aCU(i$%oANsmxElsOv7L=XXCXc>TBMEKs^&A%EmRX5zJ zet$5YFxoY_o3-KFVxO+%5(<%R&DfrSqcS*Tw>eOG2M2)$!GAG z3SG8LC(oD-KDxe*D|Y4QJ^zDpj#;I~H>|H$Kr+Hozdb^1^JkL$n{?LHA9nq(mXo6H zI7w)dRTRX%f6bDjUk60Q!TthnjpJs1;>n#eowek|m)tb2`Efp_3~$>^x&}a0^kC0? zvoAo!j+G8{!K^)p8TCkc^km2ZtMKT`7&Sz@$WB_SGS8#I8t7yqBL*ijByUa~$w-1oN<7X4O>{O+ICxb;gG3PBLy(hlg8`$u{umiZ+WB&3LnDOao2!gy>er z{o=QNW>e=jL(=PfJ?}MH=g&;KRhtLf17vg@ZmY6Psy25eddRxpooXm>-aWIMw-lzB zDUdd~Px>0eLTze6VJ^s|f0kOcbS4GCmO>F_x3XajHD~4z%h0SMs=NK~5@Z+DjTJ^e zGTi&|apj68yBE+KZztZ->pDfl*1#NYt2@6|4^jy$9K?1*-Ql(h)eN>{_wuFcm|+0h zJN2C|-(?!>yMW~#Iw>)F#+t-@VrpB_EZdKAm-60)d`u-RoRnQVfz7bvCYqn`pt&1H z{Y3C|djc_C=ggD%Gh1^GVYoMA9fK}6?t5Raw*m?RXq~q+^nyH|6#aqcRN0RxzYH$AbzF`ozz^4 zdagv6l&E)82z_Q&W4I>IPs4lFV=DLFJ-`hqVJgh3qzf{Cbh+~5J^Ht5ChD1ya~kpd zL0XByh37sC)h(MS_RL3+2Fsq6Qh&4b=XZ0r^WT&5XLgEgkr$1Y z4uls;Bzvts8D%_>E3!H8NZxtC!U>o}f3*A6-1Jl4f8j#EiY63~OL*eoMBA$}){9UV zC?_$B#ze7;)S1`Mta-$hUWdWb@Bj7ir+q?gJ!rrAqcJPZ@4h`x&uqzmrP0fP`}Yq28&CR>sm``?*J zz0TOWc7w}14+5RqW%gx=ct8TK_9)qr7=H(&W`*!9vScDZW5MJptC zTj;-fT+2+YC}y&g796qGe%qyRDuL($PohF8bu{J5S=n5cwK_^~xsj_)grzt6P$#fI z3L*G$&@h@~D}>?bv%~&4Ca*`ImX!z>9j!MCnh0H$_tB?AS%5KSc>eV1)6(BBTDd?| zg39Ar6L-wbQ2qvEqa#g+gBfDVP!VQ0CwrCokV`V${?kT=3nKKz{?z-%4hFM6cwL7_GP zg+s)-0DzqaD2|)HO{C@EHVZ26`(>b>t@hHz6KRTF_yF4bFLxub?gR0{! z%#=O>mv^P^oK^~uoj_!{1LH&&j7tPS)OlKi5p&m*uA~JQppL5-J^;9qdD)-T^%}A+ z=_tt9EKxdBW&*{#S_-WQBAjE0w2E5@KkaSr(qoR^L;@>Rv7!l z+X>xZ4$!yB0F~W1SphgqDeDWMK5+mR169|27N)a*_)Yi(afd>N9uoLZDK3*&y56Rf zobKA2G4E#03JFR?kDsl^`7V?hy6`@+WIz9l58ZY>O)>wWah0+oiHFU1! zg!_9wMt?Q$sVd}wqlcq({(YgyNyn^O6=QVXbxl$BlGXUR?+vITRNAuR*W}y>IVB0U zpt~6ls-s&gpf{z|4brY4r40p15k}jdJjGzJ-ovA3XDCV@^4Y+@CSXI*aw&AP7UD^?mLnm<;}wx5J=NG3QhieDW3=r^#J=mDFgbGhzrIHsZHdjlA^Sw1EwgbE;^h+T z;S9j8P+Mm?ihDWQB8Ve^i>i|(e#z$Cg5`T4L+~M8Zc|6_uWehibMb4a%&@Z$zYzVod$1M%PK!GhsnB>8?+W@n!`b)VPfqN)bVB{CisfRCSX9jc z=o7d6TqrR$_+_EmnnNA^txhN9Ki9lRgLfxBH%_m8vp(Bt0jJg)5L$=^-?|*IE)hj$ zX!!q(Xaj0t^hr|03&lh_^CM#H4P2}=n8k0wIK&p{Ajv&4Mdt2UaN#cBzFO}p;pP}$ zRX-A=kW5igEVt=Si7x-sPKBOrw4-i(f)7qX~>}fcSHWwq+4U z03E^Ih2wFsK}1+Ar?j@>Vy9>%pL-pRY=>26hA;pM+g`Ul@Vsm}7%l^TPhH??zWx*B zCcyFVJ|akqD4zn%s&mFL9R$>kpqHt*@@z83X+ahmvWOpE<@wWInEb$~F+X#BIKBSq zQ8>pa6~?!NY7V-|0ct_bpK)&9>{I2n8>neyvBWDqgDK|`c0RP`L)#AHWt4ryO-c$s zYU9QtII(&XH;%8z!(Xmus!G0Iy}QNACvv#sf4@x1=LBd=$Lhv=gU2rHJqm>Rqz15L zeq0zHaohi{ko*#i!}oPC-p0odJ@G!nz3?7+9!KBdXgiue*d)G`k29)fARwdmi4CBo z9(S-du`zcevaIVX?}WkhwLSh8o4{7j`bc);vAjwc)FGa;poa>F@FO(C{nXRtzHGXX zF;SvE{-?8@%8WNp+yI*ccnsOhh&5x3+xf&#o_W$eoiO;Z_sE! z_&RjWTgY$;XCCB0lMrwpawd3Azi;`8)vxk+v&hTLpN!YG1DOuNNcPTY{vYna0edjY z^Pj{2q1Iky71}&Wv3#H4=o314V2G1gM-YaN-qO1>XAEnasG7JJ8nOv*NJybJbDB?| z#;NijpT@ah0S=jx&!9hq*8zuu$FF2Q9D`fn&qEj1#z~Nj>@h_Hv1!d!?dd6imz#ouw8q_^cA(rB3(JtZBS192C-KO zh)NtFV+hW~atP8MfEBC2^+^Fx6F~NdL{GOn$ABIxxWkNAdAvih#`!S}V)#h!0XE=l z@pOzl_$m?*6FasoBUSK1Z$qaQY~i+R21cj|8SQ23Bxq;8V?lxD*9`+@P2Ws8he~n=Uer5-UFfe4}?%Ey5JE zX^Y~?JA3}SdE6+`281cnND$*I`7(Cy;lf}l*iO`22wLodFoN|vHx}ib(Xw5}XKMi1 zT|{??E!0Kh1O4Q&eDDj|E>ro0z=WGo7Hx4yLsaTcjQ|fID*&`2yz^0l|6@;yDeG~* z?lRTRU2bCH2CqHID)e?5JZhD(0O60^u32#h@Es89>j|uFFKuHWo%E=i1XUG1UldmSMPf|B_X2Ih{|DB^36AZ`jk3u(LDCO z7=EImVUA5P?F(1|sp4C7Qc;%c?EoaUkst8P1Xfo9q;d@Q3xn_Ghlzw2793(c^$ozI zr?9+D4R#*Vd_$-&V8uxm2{@6`b{*nIM125Iwc08l#!mu5&UHNtFju_28!%o90n7C6 zEDg2S{mvlj_H*9wgfoB>-eY~MW3%K3wQW>^bH@)%%$`3-G5cq$RMBA8?u1(L`}vQD zqBLHtrokP{+0ml(FppzQGbQ>yf_EU&_! zo@1lM5c{$Lnh~2?d|1L9Fp3Cy!6_9Sod7kI3@SdtK%KE=c5UV8H3DyQDT?Ha7)nIk z!w|abw5}*+MR~?^?zom#BIxvk!w{Xy3IiS@}XQPDbuA+=Ij@@WS+ zxJthO^9XUAYDVh--Jm)2q%Q>sMhtO%g_EeDG+SS>P}tG_1_}}Xu?7LRier{nP99=+ z0F19~@cYK$5hNrC``@fzdWAl%3V0XZ78<2_=^K;)T2$)T0N-tz(sK*h_5KVoC<^Fu z%4XCzW`FkrC>edS8z%pAuwC+S7mh>P{)G=(JUI7o0uYQfa+WzErsxkBhcf|nkp@}M z7N`WQAU;2E6jyYlUVm7rKeZO+jEqb&l&`hZCO_yO;IsWU`idog0I--KE&FvrF-{m2 zqJc!rVnb0h;-qka!z7_d2)f3dz!)M_lC&fd+9(Att#|WN@D-~wTCjrcBQZ3-Y=0QS zbH`{eh71HnOZf3`v^gqumGJK~(?b~lX)a^)S3@z<+x1Iqco{dOstEbU!}`|Ul#4=i z7+km3)kVeuSk?nbm~YAP2FjS|*}{~q{-D7BsNg(cvktSV!;{Wk2+O-mng5ub*R}DD zVok{Y>`fpoguMGXxUOa)Z;owrO})WKwG?BRMYF6=zzpa7ddt-JVXOBt03)ND+vuO= z;Ua2r+xT&R-L;v(6#`Mw+!D@1wn5g%4FwiMB^+5{DVZ2vYLAz^dDW^)4Yz@#%Aby^ zwB}54mYdv?h2q%XDoI=gHS5qfO86UQZS6roLDI;Ma4t5{svA}B0=|?A@wd1gYiK8A zH}{o=IpOp*5l_iUulaQR|<<`?_+$X(*m0epF&=qu!>N6jLn*={d#cIwglZ5}QJ zM=@XzI2NbwaV4cpSPy2`u@R;9`QcVzSzOG z5scmIt|C|{yQS0#6%ARWXz>>n1+1*G%h<(yxp=} zkn&BhoRscXl?8^nb(2oRF08*zFalc&78_*!8ttc33j5rGRB0Dq5pQt3=wD?s^sF7P)Q#LGv!+Y*bRV=KCaNyz+sn0SJoHINTC zNYMsz8yl>}7dBN?hcW+pwj!zk%8dh}zpPFG6av z{H`rna5wyPF}~Bwjb-t9D~~=Fkfacpmx(BJ`b_Xr!hQLF^y7q4aB7j=1VvfDBWvJ^ zA18@<(au4#u}7-c{9>(!j3vGSblw!=#ZHxjU8yf`GrS7G1xKgYbRaGHr)QD#S{*t2 z4;R=G8$034I1a}H4FM3WM~?uLvWv4-3qGd1UJC)MaLv2+l?!SR4zrgKwc>Qw)DS>E zIg$;4;tRM)@O+Yh_C{G?r3?)}|IT#{PlHOsQHK;);!8%FcWFI^U*cF^KT_sE42QYo zQ>%m4$tB_j!a=vNp<;BP*xWcF6>Vz&GG981`x8$PO@vN|7;HtD?i(^10>&ScG190h2@V*`a?0USdrXRcRI`!?Mn zA6W;`#4C)TQkI)vU&4^HQjZt+a5zj^hhBvDdnLdgp=ZJ~BX0PR*m><*uEZU!=(&rd z6ll2?Zgs;yrQTQHjbLx$f#j=r671-z2Y8lcEA8_&zo zC{;vw_tH)#9DSjv?+jXJD|TvpaKLo#w!OeLAAqX154C!hLQI&=YG5H1cyteV(oQ=D zu?P;Y{9V#K$dLgn{2jknj0^7Di?V1CR~B4>^k^GO|2Mi`N=2dj(-HzeR!m$N?OZF`Er+i@dF6d@YEfXJcges6 zIVJSjQR{3Z@@xbNe+#$-WA|{|tH%Q=K)iK%x_w=R_HI}lh+oaXyXplKkf_auOr(YZ z9n6bavk#sT(2qSBS42WJ$mCNsE1FZ3JQ%4MYEspN%^kv`C72bNH&kqs%ow)=39pnu zq7syP)>=QIAXb2CJ!*6fN_cJ&@H%3#KdI@qYe&Og54<}DNNg8uP6GWCpfjtprpI3g z3~mi@3`V!hJAiSyE##R+PCL*6lp=bKpeV8sO6TjQ9Vje%A!BTNpL1KhYB;!O!MfNM z4i(iGhuiL8?}3-YpPpI=9+XAz?luFOLNq22E8sSp1pL>hF8d98{FjR6SV@F-SL9W6 z2>Duz-vz|N4u>oX)Zr$8fiY^0@L5ACzyEUxBFXb8%_#K#9?4(?^0B?_$<|`QK@X}_ zex9$t|Fral)BDo1M%&QMs8<;Jf=I24v@SgEyAIBANPXmtWki2Ecm z9Uj_!1kvzL0Ihuo&rU?NL6U1I0pQHvpiaF9oDam*#2BP( zSicmxPJdCoT7nU$rnpk%ny!?s2;E$=-VJ7Gfyo0ddj-(w4R-bxOqfG?ZXlF2w4EUX zeMlA|CxHxs^PxrlcY1SwDmNCcwXa5@WuCj+-ih!yvE z0&y@=j~^*rkoWN17Afo7nmn&TCrOz~39)Er4Ew_Nynk5+#~Q&3^G7;=MA!yk^VCM1 zV;WxUf_rD`v6^|YDA0l=yA;|8pALh}yuju}u;w%vSoXZ6k%1kx5!?r&tSub&G<`yEKoy;fw(IT}6%Tj>dL%+PHON7Hq$00c#5hk0`AMa)KUCz5 zA8esMYYJ*5+)=C|9RJ+U&wHC!4Cex(b79lwy-)|MZYSD)*b4t0_lb81TCsQ$xk(Ab5-2ZSS>L`Qeyo3{657Lh#Klb7gRJJER}^NW&T&!9>4w(> zV~f|vXV-o^5tISmMV0~Q?BRTXVdy)0Gz@U9!@pCzbw3y0^bB-c!q+cq`YP#y!WI=(W(LD+56%K6c=Vn?sd9ETr&q zA8|&vk&<}z6M9a3lSSRgI#^#|lBmV+4MMU6=)3K^ScelBj*}j4$4i%m|0se0`U+E7 zCZ|=mH%sF^*2W}+jb1=#Fc%@)1e|1)ppAkby)-asoeJ$~#1JrFrw$uI3c%@wpqOUu zg6+FfWZ#k0KsX2nCM^7JO9Fr%vK7vogB4JFm5!cgVGn{MqNLsa&2I|h>4^CW=R@~Fo8v5Xjt+XF1*&?fsR+#IW6a}E#DDB16Ywo>jLb0 zJU`Nx7~(;fab?HHdM>-!dm!2>j_|_!>jFN#e^>#Zk_rijVDjuh!JMed9zx@v#(e!4 zmfhNY?VJ{0#|z?VtB5GeS;iQkZ6rbiE?wG0fr^Ui zUWu(S!f;bDFJD!xYo~O5lk4;3$sFVrJ*T(^DI+5d_kp9q^PQ-Rd_57peb<-%i$e>u zx&QluWtyoznZ>i`u9BY4ueHG`K1kP}iqgkLPIhcDG zH4z#Jow@T)$f~~{B40Y3A0_P)9Yv9zP(>ufAzbOFt%<*Putyis=+@yHQx6n|AxrcJ z5O+ThZgB*Nj+@A}H+LH|fA<1T(;g&$qfElk)&2bm@KX_iM_5=MaYH=Iq*0&8a07t_snItPG-ZZARYC|PNr`1CObf7uIR z@O^DT-l+?ykU;x^xxm@$2fo-jyzGJ2nV`p=pGswiflm;d<1jkj!* zaR?Xuo0iTW6(?X`7o(9LwAb8$Us>Bo$k!Xy|M^?jOjsYj+Zkv>UUJ@so>RX_8O*Mt z9*iT|W^Z;Ztf3^RM`po2R0hsVWC#P~Ig17NB}CR55szzYz(y7VDLjexH@DazhW#!7 zke?iI;4PkzueVwxmb*c@0?oP8<-JkFe;Sz3?Ds=!Ip|%D)*v#aNH3h3HBc+;8F@7f zd|xuOxL#nkcnR`N2YFj?7if9`EifL!`B;~L5)r#=rzF=5ap`H3EgkmLCi`?naIOH)wI64nOy9J=b5`N_h1mp{HP+tYBM0RfHxl4Sq zF4l1)XSR9%+6;)G%^d)0$0TNYR=%|dgm2h@C$p?#Eg-3MC=Zxi6Sb9(0i zdd;eZi3`nQ3V5yn^M`NU$Jb^*`fx#$59yJyy#l`bvUn5Sq5!lrkxBPw;Qg9=Lt9+ zPuB_48+Klnv}u4w0sWO9(853d;xsAu)uQPm(FLwmnXU>KS*F4R*bc5!26am&ilpl_ zMM;_Nb64<d zK|)1d8?OZ8k6aO2xF}&ZEE(?MyE(Scgc-1|{yWm|$Up-YtwzT_$f70v{P|Nm7U&>G zRvxscj9gV@Wo6H-hwM4s#7q`+tberTsg9tpCI3A44q!v;dTS(jT0!`KJ zBa8V`cGWTV!^xG+kB|$gCSLk~qhBA@5!S zc}Q}f{gEe5`CJoC?~hEU@|7Iui+v=Bj96*$J3kczC!UN?#urK16Wx(H><2j!#^&G*UAQ%-j?&dpA4IKIG+Oe)!jNgxv{_KAt#Vv_PJb;F|lluJ!V3-=Gx0 zxE{iR?eihv&K~eE<$*5U8|?&v+!(44jrFi-TAU74s4axuYnIR{KmQVIK79M^$tW(= z?!xb|kg^)~B6bY|pzkGobNob+2nrC(fACujg$f{$W%y`5V_h2PiyqvI_$^fHzfE%^ zGt_n)0^gi52h;XrcrVbCS`#dLo|r-*L7Sl)t=x;28E?J<)O7W7aPzqUD`Bhu z1+Xy^yoJYwzPi39FFpMJBVk^f;@) zN2HDuFRBHRh4cF!06e&l{o_3Hrs3_7HoTbL$9a-i^rfi#b*Fq_h8aGlA_><>3}l_^InPwa4cPRQ^u zGhqOh!5Iz5RPLOmtTrerQL#to2vByKOdWtw5=C@IAsdIP4kw2#Fmr zXSI|wFi2|SnT|S$gGWzxWGfh;>fDIaKX?+S!=nie>a0dQOe3%zvL?I}o>RjGxVvYf z?IlNLroI5Nd&=i;(Y$}pmXWK+hID$+Y5+Ecf`US#(B4uIJps=fs^{cr2;mn5Ma!7` zahQvQ1)SE@VZkdBXdC@n3V$yo2fU?OZSO{BOw*GRF$B_WmO1Y6BU5>#RfibBYe1J0 z5}}tZS{DXE_p|_d0VW^@)(Po`9f)|$K|S9C+JtXG0`fKo2gmIg4TdL$=5 zGUj1G5NBCNY&8R}vGCemFdF|<;o@|t%Qt4gbki7W176U-=%lx^76sv2r~)&PNMsdw zf#VJ=>zfBl`jVKt=F$C*)Mz=P+QwD|6XIWU;)@uVh0cn<9)h0GH#kpw?mr<*%6va? z2a+FqnX7_O6e3onk6?MOKzca`*>K1vgEu0k1T&yV;jw4-)(R_6VSj{sQ_}!-D_BAA z)kA&v>INTW@$UzWdS6c8@i_%%R#g{J1;1v5-@*R{3G+b5=^*>HOS|ObQc}c0i|Mqg z(9cF{k^3f&j*dUVkRwn4bs6Vk-pl8{aXC3xl^q-B^9~w28FW?0{_|3_;&e+-I>y8s zaVLb$ZQd%Pedexmek?6L>$4Q!cY>Xrp$yhNnDZjLUbVzFwPkjkkdUz2WNgVn-QZcB zPPG;`6BCnyl~pbgSQH{0H5fN`!0D2rVL!xinID;@eNJ>Q)9joH3w0I$x#PCV>mhcq zp0GD4Z0OH(Ts)FG%dntcIJnUKS5@%bvQ4v!Y0oc!$yXc^_?c!3gNxoe1U$5!>9U>fecT4Apq}LS@wf zgagI^TIqW>B_pE?1|kK=@TgmU_W~fqAX8lkY6=~jifU$wh{P_GH7Ch!4w9)qvAj#( z{Sb&?dr~Sza}VC?aUm^>CT+iG&+Nv0>5w5h6VC(d z0DaA^Kou+g;u@+8aOIRQ&!UFp{%e+%zx&*#AJt-_l zU}8A{@eqlD%^8|6i#~lz-9yXI7p-!pAE(&gxb-8ZWHv4Ro~mjIa{<;_T6Bhe`)?ih zhps(5`jp_qKi_s&N8;pToFXe}YZHbB-3;!mo}#eID;wbFI|IY+?DZdkMG{A-uk9Qw@gGSE#9}xyiA8c2e!`#Y)`1?c2t`e777(^sC0^8YB&FB;qlPgzuQS z@R3$%5B3kNLPbv}^aps9M;+ba&VA9bv9WDGiJqH*AkhJ^DX&I2$o2d*TCX%hAPkj) zR^I3mVt%}=-tiPR@`jHvKY6HQ?9O)!w@%0r(?JS?cLTp329;j#r$Vn+ZVxSbD%68B z3jWUZ%MPCZ?EQl^A})#gRxHj3qvgtY;50^j#IE*}NTRb>aYVyn6QM`o7_7@1c$UBi zI`xv!-|vLLl?b6lBO`w5J1VYp>%BCIr)j;g@uVbQu02f4#eE* zzo#}Av))ojOUm(8^!V72{;(i3FBjd1=imU{T>Te;Vne68W|vjhcrsM zCSg7Vc~{o-d)os4@421Za?6IdgRM$o?5M9;5(AB)tfDb&4G@m4 zj?#c^sRYzxIY10&^w}|>dws$IZa-QN7QYrGuHEaLa@|lSoIB~t3RFy?T7#Z5Boh5Ya;-F1amRG3==o-KATI4 z5Bv;wNH5Rt0?4en!phxDT!EDiZMN;Huuc6Z#)botHj)(J5w6~mJTtOGtjLx`jOd2F z-lPfGwD$5{g3yOO#<>*Po6*!Xu@+jnL(|wh;nJ@kia}Ig+ZX1@wrn!>r3|-auD0xP zi)nM&)ZV(Cnc@tW*Z|*MtMPU_t(EmD;j4tI3$u1$vrUjRign9!+gpwuFo-mJ6&_xkdf)S{)iRsZa^8+4 z=lc{7-Qg3~tr6oy`l450T~=*DK+0aM{*}GsUlgYJyIM)``m7qrdI|NAdF6m^kie_Z z&_d1Tx@YI+U^aZxuRv0^fL@SObRx-;^UN0{6)M1}O=|2Tz>EAIrW^PPHZ2JObvDx_ z&h(rx9UZm`dQD9=nFoG;l2&>2)_ackb2pcxO`ko3x?nI)c!1!1Wa|W<{zrmvD&62< z`V3B=`XtOg0`Vk=8Wry8Aiwdz zZ?E;-@w?SX7m|$N(+HfftQf0o1}&Hs;@W=SCEw)JS8!G4U#;6nx;#Rl6xm8J7x~s@ zc@kB=b|0GQ$FncWYnv&KI70fShn=J4I7wIziSWKG(qF z-0Hj4>tJo9=W1?5^#0pm@p65{{#Y^87PkygvGX<_(_h&a^@=6CilY=3`vP`ts1RSo z@zNo#R`M-12Dg3JpbdgkM@|N2`;AkW` z9_gtof749So)e=0!bt4HVaI804uU)?>@SV0jCarML8_Uc@vvXCa;rOA&s8M{rt>H2 zHjv|B4T>#9ln9s}-QaATntu`o7Y5J zlAaC|@MJT^?1LC?r8bSFJom_8q{`A4e?w0BA`8DnNm5$!yq`tBt+hsqr?{?B*tA@$ zP8+8^o%gP2bMi@3YX+w|cD`fR5hDmH zNh1ixdiz)V62y7LHo6v?@dnIyuh~<+0#gqVsJLC+NjW8-O_ zrQGem!(QzG6#IkyO@HyQIW!w_T}z(P365n91{EaRU}ccYYu)kr0MDBx&&1wEsgg4t zHp-4%H33zmLTl@tK7+*NX6Dkn2CFuC_$4Z5hITw_GM=0Jy>91QtMupJerfPS9fXzm!nh?i}Z$ia~Zc@R-) zS63G@qSyjm+&R)tt0?XJXYz9DiPRp*8kRohzwa7oLNti^#X8CSk<7gf_Y?d0B#SAc(eF`K`Hm{B|;yS3;OoLZOBrW8uDsI&@1Ru4i*zK+_TnYzmU1S0|RA50r16KiQW6$ zS*&FYY&V;p3gV1AfqL*I9;zPb&b8eSYnlG%Z8Hj+|Gn*BKWSH@5FZ?e3F*QOYvE8X z((cD*3!0PXaRj;3*E2IPbRstEq?AHJTA=nUDypH@c5Qa1Bgb$RLQ>fbZ$gwg zMKnsCRjn6=EI{^jl;|U+_u-m^%tP-#!zB0*Yd8t_9$WQx4h-DSiiB>EcilN&(N^9UxS}qNkv5^x;?q}?CL4j%cS;~ z_OBeY(-I-6Qsd1{_-jK*dH?X+;IaI3dx0l{fp8L9kw?7)ZE#I=?^?ZQ$*=rEurF_?zHCL{7CZyN z_JrODH2-LHr0lJ}ga-rsKerF(T_H;ULD%QV?~ok$&q_>Xlu=_aPcxuVB-L`Gm6Y9} z%X91cE?t&ZIk*}oRq@p|+Ok{7wx)aiTSlc|O8SDEs=d(iW5vuY_5GXVi81bTl_y%b zE=P6YL?e_lk1cHWa?7#`>QA@_8|_|m%npBRbcR3NI`_Tsn;vy}kZ~V_As8_){8darl|K8-ap5Rxg+<_f?`@m%U1ir);jo zJMbrJv5S-!P3Mj|+-aw(2K&k+I5I|F$wcr=M;v`T2P@`JVEo^n5xW>A8+ArnnuDdu z;Hib8B@Bc8BH_;c%`$SgX`9T9wAWE_`O0$|*8}~U73Y3B#dc{(S0ts)My$q6iC|+n z#7t;$aktaII{pR;y(DMjES+_E`JV`zVB!5QVf+6Kl^tVfOAazjB>p7vmi(3}DQP_) zSSpj1gmx7}atGdSjr#JM-x(^(D%v;Byv&pykMSf}gR&&;PT+LYn>5z`WIrIg#9^U1 z*K(i+$s@0+7N_GcROt7H`S-B=^_XC2W}^RX^XsE(xn{XRj-Z`m#;(z&mf^#DKTj~J zsO(?=vDvINtHn~D9`T4EBALfRE{US~*_IWLT;tMWF>=!nAw-x@m%TiI&I_AjU;QPs ze&jv;Z{MtZX|%qTbv%$?8k>ls@N!{&($7}uXZdkOH&0!m!sXd&=(LdI9#&pa6l}*D zJ{}YGyG=cXw5fUQW=MWTdO1b+s{ebb{Y~&w2sa#ht~kad7gctXe|_lKbS3kO){yqo zMIxr)xp3@>a9q50(Bpf~v7Sz45m z;TKO&G=M=$0i|By5pfmU0J4!@rO0zbDthfBp5ygyYe5tfVit%Sy_K45u(>@X?dv8po17nR)t&x~m{Z z(rY=gTsu6l^ryMNR!w9if3KZ}f}&#DyEM6_g1Y8N{%6Or&RxxRqx)L^895!F-$Ra$ zZd<&QXp(0}kCL7bQ`vvl(699NAf<|%#8B@Io)%wHZVrlWp(dJ~Hm)hsu>1OH+gSL? zL&4{zu0=5u-L;dMX&vrsW_BGvJoY$+F^FYT->O=)Y-t*fEQR6nepemZ-M~?mdv}Ff zXrUyc)FIVCaJ|G;Xw~8Z-=;|bpJ7RTw19@Lbg5YIjxI~ZvQ@|H$k%5rTO!@T0O*+E zC8*R1Q3a<|eWFE>(8i0-{hQPE_r3lfPxHABas7A<>8-S-GJ7_pXNhqI`z%@Q(b>$QjSx%6+ko#WQQjlb(ZftI+(;ZA@g3#}#0l2aw;d zH}LyFh3UeL|Nia)zNJRftLC1K^|5zS+TW#IH3Q$1l!fCCn|U*HFKF-Xwg=mGs+?VY za%{arkh-wTocetSrx&OENQ{Q3S;L#%g6$vGAR5p7$b5_VW0Sv0+h_dp-O2SwtDP1r z6mCuyYe8GCR=JA3wG%%6uHTJf#?c!Ln3Uf#7z(D7EV#X2!!nQ5s&cj%tCat=Gky(8 zNjk7$krkrx-uTs#6aI{YNBRGX2}p=Q7QHFD4&ZK{6Fdw5*w1mISWOym6Z(b*DQXQ5 z2g>ZZR_FRfeKsBaygv+d)LD^EPEQ%Fe}9juNVA@1ViFl%qnFn$n6}(Q@SNoeQ*Za_ z%D6}hm*TdE{JFP19&uTYWv%2wl*$!g0fB?7xb)BTpVF z9gh4F9slBJNet<}mgJzsP5YH4HV;eg1hU5~y)Ng-SlUhFvZg`sy3sklHMMFgnf{tkn;k~TuV6y$`!a#z=&KYjLlOA(ynY|j2OZ2m*&969SqPnU zbhUottsG}Qi7S`ll29sSso0gF9&-#_`CjI;^>e%U6!){F0Q?{7O-t2vkg`UIx=RIL zui9S}q#pz3*uU#Z0z>@Jc=qW19a&@IW*!i>q~Fx9?xiVaUHD%#Yf^pL}`DkG?jQZILO)hyj>2@m^w68-wlxcg}Ne^C~{598lYmoflj z%#=tqaC6ilB)1XvFO&@t3+4p-^i3lb|UXWTohGsQqHOepPY^C z|L2+gURuARLI<~p!=Qq>)J+;1j(|D$JWhHU75R9IsdE<>ePlP>Ax|oi zg3=s7_bRvz)(Sl!l%zizU%ZTd;bIm2-$?W8r#~mi(WriqcMCIMW?Ts{wG&kj=Lt|d zQ%ZPUD)pj9d*>jA#DoDyO|KnC+$|-u{z~b*iFxk8$EPW>fGBTnNh0tl{}K2CGV0Q) zC0`sFI3>#;^I-WpKZI{(XhoczyKMnqEgX!_eaP+oKi=N&M~q|!l-;Z?t*00WUg})q z>b@@R>mZ@{+PH;+IXLR^Ihw-OwtJzToFAWZzWt^iS#dL77Lmh7>@m2Cp!Mql^MJ7= zzIShYrrU$|1%FtWH9jVVm+El}89kHmw~72(Rz^`MhX2n3%CtZ*fBxvT0Y|u(LsgpYox2z=$syh zwVT|Mn#Hgm5NFwVJN!8o(uy)l5vJbbGWmv=|A$L2C+Y6+KbGPD(jVB!cBkI#RURY^ z)xr*|*-D$eP`=s}$~&3Hm;b$%eruIJbgt)COy}D%e1-1Xdt}d2X^Bq1H`%vRkPO&c z{j4@yut@J3so>{*kE65Tb&oqiNpQ%Cc1Vn_?vX?=CE@KmPnyCVUyJqL{dTdg zzLq5P1j*O49Q0?ajpJrcCV{*v2yfpfxKGk~oO(Yh2u{Qb{ve5dvR?Hn=3$;xlH8d+ z%dgKW;3gTZHdX7k4N{(NDd}%kV;wZoQF&Po&bx2p)lyf8>&Aq934@n)*u=OdPoH3K z_r9aO)EyS?`uR?y)0uC&UW*$G+}&X<){4;LV^zRS?tuPvKJZg0WbRh>IxyfAU+Tc3*-3fK6Uar zF9TNa>R53+k?WMcIe&t9fS&Eq(L~|Ft~e@5sUGKbUjHkTnTf5-XQaQ?tG}V+{Nt*; z^>Y)Px|eQ7+EWxSEyKSursAy{2Qg6@R?Z|upZ`Y`%i}!ZvyJJ9_jt+4udoQVBw+VU zUEoeEU`O%q4Ml8A0w^f98MbMW!p%fniXZTn-Hnuq-S~Zeb_DrE=?QsGE%jLN81D7%?q0y+$Y;geh!; ze2tcq*iC!=vhN7krtA-|l`10AX;zZ*(>Jg4>@&qyQw4n(#YwN%MhwNcomOrVD!6>O zQKBmJnmc$PP{Z~L3h8ly4|>NdoV!)rSsbOCLB@nAEP_9ZHiEL@Xr_}#rDwP+bLALC+-{lE*RTuS=);vTt|2e z8p5^?{eHE_m)pKEj;k8d$#@z=`Z$7c*3PTlDcNG7X{;?%c-BNMK9l^xxN(D@C@F#0 zct@lJ8;yK3?He-gSvuO<0CiSfZLo~`*c(AjpC_btyGUrv@T7KX&i-Bg`3UQpi=7Jd z`#ke*&QO$N&B?aYKU(K$Xn?}Bt+#cK-Rf&+CW<)ASA9m(Z7q%X^;SZTexjcW1E)pA zfHLKSl&PUKeD4f_hIQI4Qr~{_z9j``P-u5S3%Tw>azBWaHn+C1bFnwS-A`*yK|)CN zShFn^b;-h!F?D~AYO6rHgZ~)0yN}djRvi!Vudi}{goT4*Y!^JE(6cykXCK|WuwQ5Z zPm$(l&vlPmM$>@@<0s@-Y#r zA<7EnT31`Ajlp$DJ^K+?X}o_?kW?k9t$`SzmrFU;I0hUq<-6y6#4SqrJK>1^yJID+ zdFYNo;*9_EJ0E0kdu?35OmbwjqP1tdS#mo0t;3nPPixLd(FiJW5n9B9w`2W@rQhD0 z#L8W^a`xH9djOb`JbO6KtZ#E<&qFCOX%BKZ^C z0dIdR(cw#GDFjdQ_aUoxV>(ITl~?_cws`fOsO?h1J=?mg&$+D{+Z}dF7}HF++TQg$XI{OHKE$xI}MA#G1pzNBmz93&-l>tXFH7qFaG47O3U^<%c!e zm*?3d_92*fs1gHzj6gQ?Hqx*X@fVKxk|Ww|F+^bG*_s_@RC4@*(vud20s9VjT^+JV zi+3pbyhKy!Kh^{p>aP3IZ-fhY9A|>KUKn7L5?{gw66{O3U;fpiX;2Bx9 zO%64ppz#H3&iRD5smA9%J{zi9YqUwYAnTXh@gay6XY@P}kj0IBOIwzC#d$oVZ9%ci zX+J-{!VM4Bti(s9m|nFuef8V17s9b+OnmFI{iw&zwAHKvy8Z1&&@dAsf%nA3i@@DQ zsQgjv@E@eqkG>Na0ReE7;h;?+{LViD36!{sauq?~$P~J?TZH^fOmKl*jR;zya|h zwIujfKa5nJQCMb|E?ZaIxCUQ^>ki$CPM(!fd-*J4w#Xj~$CvnFCi3Zk)2v9~Tkip= zBJUeyi2K6*IR9VWUy4Wf$)6BIPwJPvP*0PQ^CYi!4g+!{w4SL{3v7jSP$@I1Uyne} zeDmXw{~F}aE-RNN4VC@h`FFInk4eF?o8djAJ}X)e$*Nt5G6CDBfi=u;Vs%Um!y5g6 zJh%+{V}zh};kkN)a&x{Mk&ibBGV?`mpcir%&T38{F_WNGkod-liWL{Cg)<)fI z>=o{RM41~A!e=KK2c=NHw|hOK=19Ma1iD>s9;^j5)@>s0&4szo3<9@P#|Q9R_NCW1 z(f6bE59SFDauI2JfHj1|@{1coJz*y` zcJ1(l9IT?>8xoI57}=hr#+r#~c!quc2V?-B#alH8fdWhx5e4AqJv`NBL0a~57 zNB2b%NEn3osntyZum{utFK0c4Oa8f*$MTSQDtxRv0sj%rF(U;JON8$SBfgWIoFpHt zK;7sg(%7s7Vo)Muob-?IejZ%Gt=Wu}Z7rMdgh_n56JAc*#^X|L zNA`-~EMj^3;D+D#AT+?Ys@!eS!1(_s^#iEnOMU^cU$ug1qj$aU^dnAUDHUuqb)bEVyv!^IZe9=q(m(enQpxA z1R3!#xAQ&?FNzQlhfF|W>L$l?EFi{m6hLyOHi@8NbH z58h4J*qGEa<DRIhLf^5JIf}PDx!H-S^E&mC;@2>f?3janM?i7n? z7{^VWHewub78cU4{!v#M_9Z4NcxDkjC}5UK0WcvLO5og{0fc1`9bEfCMf|AD{Hbu_ z{OP+e%33@TR2PZyaM+lRHTy`#p&f+Jdk(NkH>(@d35VB0p2}HM>Cbl(T$3?HuW9$*sm#RWS@%^w3wAxn}4m{!Sc~S;@rki44IWC?=cA|<`k|0YzKn_ zNzRbX7LCL8=PIX`=n&?4T?66DOXu|}GLO0A_+?z59P8raFRh)A@gbJt1UZj3(>K!O zkcp4NMqrW~0lzSBmy2`j`*nk(eI&yb`16}QT_IsKODPmCYFzj9Bba$6fT!bSP?cf&~e;1lz{HBka;*lEai$#_xohYu2R;#9%~knk}WvM z7#$R6WQ9npd|iQ`8zO8g?m4Tf#>BvqfM7vtu@F^337K%HxyFFO0BW7yQxUsGBj};~ zJaR~ELQ)r4Z;eFHi6tE)hH4*G1`B411!N;p*Y2kf8{HQk{(Q+!y--o|$#i@`52*>N zCSGFh4HV4>eY1dS6d19mn}koL5%&4_71*=rH&QE7K8b7g<_O2tQ4Foi$6Gp5WEGo^ zQU!H#;E7yRE5fLny!*)Gv~Z8)a5ro^)Rzz1ms}kx;}Q>&hRVgEMQE|bcG}b!`#yf2 z-p5cJhG~>U^>n{9nGR;?nLfIR#jX1xJ${0}u!~6JhW?`m7HSDZT`CLg8Um)}?DPD- z;MfA-JwR1k*-DaIhf+Z=wZpgE?C0Dj+wLN5UVZ;CI)JSNyF9tETvLzF1k%a;q)#3{ zF2yk`(@iqh$>w@x_&~s+2Gz|l_ma08)#w9Cd}v++Y%rXBI<@C1!ZgG<`#ZZfr@e<+ zzz{DHPUJX-n3vlgDhg9TaImU`l%Km5`R+adCHijOHP3F^sLN$JQ?7U7zAdRZBgB}J zO}&{$=;RBqn$HGd#n{$zQNDvnySp}^R_=S5+@9Zdxd^auFpiePqp_NM#WjzL>XwWX zvq!SBFTn$4u6S6A`x0K(Nl2e~v3^&|FiLQeQpZ)*?eKe6-n9!gfNX7wv8|p1#;M}l zWpJCT2z?~{w=Yxi09TGbB}XnACD~0Z*)3ZiyfA59i{U{%y#+Py0(g?$eI*~)R3vay z*(0;W#n1fNC3*S+cBw~;1SF6+y$@vdBl&B+mmmHFVR4xv=GOvPMQ{%d6zc}G0YT1ahZnyu5k zlEwCpA$;I~L7HUGi^T3ARc6A$2EEib3&Skhr_@?o?8jafD^A|(C>}wxaew0NRlImk zA2Nzb=zwV@a&mO*m@5L%La>j0e?1f_H4h&nDTdRnqVWDa->S*Jt1iWcqvIC!bL)p5 z&vo4EAL9)R4u9!ZmiZw$<48ZV+C4!D#SrfbB_$eVYPF_Fl00YU=r@TfvjQVXQMyHIPEVxp;UHjW)`Grb9k3Tph#^rjAp_j|<#p(5N zRe|-dQ)68$YMiI_5`vmnuPyYi<`uKDw))I?hTF*)_Bt2^$f0TBJ$Cg*Z&D(?g?n*Y zgM&>l^Vv5%XKKbMR0w?4FDvbC$=$F$av^y~ww7sNjU~L;%90xXkPos^Bul2{dn1FO2XS%JBN_bf}<<+z*5COBE{WpY1xr+2L z*kmNO(|X_JT!pV_UQdnv@@$WFuXR7X_*)adz~60NPUERd6vP<>s%PEoMGi(4XqDN2 zsWlnwEIk>{6endIJX^-1T2e5=Y-1HRC@sgD*+k9B{V65dX`m^?ZpKOo75A{~X(5e2 zE6%%s-Qu1-JpoUKcd9IZXXDSxS8woPSpQ zDU*MBjX#HLt;*tQL5gy_#L(yreb4wHHAel>EA|$y%TtAloo^KL*8UEdE!RfY)XDHi z)AO>#vpGz}-p-;zCUcxgIbLlmb?clWWF?O=w7h>avpg>ce9RwsMhbzgzmvS(xw)eX zJq*a-n^=}5MWf;HzM>2{Saz~~U#5Kh0WXL!0_vbi@WN-nxZmbyn$ zMUz;KZ{kaPR-Nrsu-jmh1!fY= z0$%a+Fa=v zDyu&CWx||$S)dedqD19$#GB-qzw&DfYQw{kI~bBO;VmG$yY|H~OM>wa;|YDi3j^o^q;dX?AcFS(}<(=xCy(Ya1NC8hbBS z)5~FYE^SHyaX+f+aGgd5v;Rx|yjcSdl@f=M)URtxbx}%m41-2PC#cE#^Sr(Z=yU40 z>01bGRI>}*>bh&z%l%ws00CLQ6(^v4W0>^pCUC(m^Lbh4X%r!8KW7A$0uIBUqJ^2r&4n)2m0!Bi?D(vhlmH}h4Gj3)GX&9%o>FLdcW znM8)dC*teBnWwe7aJC3zCt{5D{p)^;?k2Zg8eK?C%tqUo`&po3o z!@YEC9@dXiDWpqkI5$+Mu8`V*07phBQ;t-z~jnc10&We!*3-gm)O(D~M74 zIzugFC-XIu(0>aMyofyn zk=x@iP%CA$WPZCriG)n7fZqo?jhR~Vub)--UGJz6LMu* z$;iB)sxd_q2RjX?y*(0@_m+6gw&9eP(U_-}(J%^o*+|Ah$V%B6QWM`MViH%c)twv< zkIB7q1Q?)awcX(#?gwoadhS@ITq^FE-z{-$D$XR~bF`TkT@)-X)VxIhq3*`WH-Qa! zgmFX45egJ9Tu1<6tRkIvsUF#J+b(gLgGFHkegcUBGqUQ`A95+t=EtZp-&!*9T;q{z zFf);2vo9NvKHn#Q9j1;AQ`F7)f<(WWY>20q*ucWV_mmd9s(gd&>m@|9Ug8ISK%`7{ zM?DUub#htducLHicV7sLPd6w5EZ~ZNTGC@x?R!#r_2Qj`bP2x^#^~b!>mf*iL1fYe zEwbJoWV|e;3i;plz7Ou{V~mUwX9tlsB}9i$wW;2!vTu!%>((yl%k|YQvwPN8>gvDl zV!)xpTNWip6_$K4!q8aWDHVU$zHJg=>Z zZ0cuMS~)tL)*E4?GPnLuY=yu^ePZ2;L726hdR$}?OE9Nfa5j0SVrTp%1Uu8w{Pd;7 zyam~Yi#cHf!)4br9@lpak3)QfoWNV>X`a4i{>XaxDXvTS$ZVO$RDnhk&$>EZ3@f2` zNsntjALAGH#XE5gs$Z&A7W?j!l?v*;uIsmGP%(?dsC;dWzk&A^<`x-wMvbxh48tuA zPdbDOp-S}-zapz3GW;J_6?^07vwfb-)TpcHv>X&>9-d}C)h0buN~qGyu4Qf@);i0K zAP;4l_97u`(n>T(1dmO<%eCoxQDqU89JDZH>=)UGMCCR~S8-619~ zEa`NsisY1X?9Hg>CJ|&Z$gTsgH+2_^kZZQR=-c0$p~gLe6i6onZ0rAutd-zh;uN8{ zL<2uK(V>tGAIpeHKGJEkK-BfttyhM8JvHk*)qC-kDaC{+uc6zP(^Pr&PZ$-cmCDAE zExxH{cG`|cQdBCRS|1FY3X_a4Qt4& z)OjXG48f+o8kKKLjJuBr<(ei(YhKRw@|Lu1_ckk8YPM^wi;F^_Lo8HN#*R25*=rPG zEOgZvQVpHs@1le(f*WMUCok*99y!yb*6dhGF|2aC`LqIcxpQ2TPgOoe5s z>xRA4l!fU0VB_1luAJr3H~kB!`&Lo87}cdQ)aAF$o=~Dr)K4>F^m<|ttuT%b6aUFdoF)H5D2;N4`bbK2aWDsg(4DVSEy9*$B@1_NZNqE`z=s6#_j3$&hR^myiWeblBF zERIT|>b?=AJiDulhTf$(}J8FnpGtZBzi)5SA2EG zisTZ{AQ_p_bHe|RQw+Awqd(>=FotGQ5XjS^vBA1pA8OcKpR@k@em!}?3u z(0r4c!p2=YD&^SBw}c(HSL7&oiXVT26^0%W%*>J#H1y9bc6w&8JW%G;4B}bQ8S^n( z55`i{4va@*mdBCDoks^ni%mB4^4eX&4qi-=SJWtOf`9l4}OryB8{MgY!qch%{AmNS3H)&UW`!WT^kR?cKV9a zb((0@*VJI5(5%GGB>snV+e2nSXt5Z7$z!BJa@h7xD7O9M>K<_*AN- z+*nc%gKaBfK+tG5T3o=kga?htF`b{OZbal+>OR^uo$WwqQ1>8_*LMwS^b9NGce-?I zZaZEJwlk<6E^sif-7e>(U>1fl1lu(Dezn6>dvEOMnD>w;LizV6njQaB7)f}Hcjp^G z;-=L6(OcdVni2jC6*0eJ+E-&P+>XolXQ_lurVqLX+~Bhj$KLE$kQ2vfHjS@+R^%@y zL=%ilp~e?2bBbhB_G}M(bL?Dl?m2rWze%4R3ha_giW1o1?FLA(Organization)`, `(Organization)-[LOCATED_IN]->(Location)` + +[.transcript-only] +==== +[TIP] +.Iterate your schema +===== +You don't have to define nodes, relationships, and patterns all at once. You can start with just nodes or just relationships and expand your schema as needed. + +For example, if you only define nodes, the LLM will find any relationships between those nodes based on the text. + +This approach can help you iteratively build and refine your knowledge graph schema. +===== +==== + +[.slide-only] +==== +**Continue with the lesson to define the schema.** +==== + +[.transcript-only] +=== Nodes + +Open `workshop-genai/kg_builder_schema.py` and review the code: + +[source, python] +.kg_builder_schema.py +---- +include::{repository-raw}/{branch}/workshop-genai/kg_builder_schema.py[] +---- + +You define the `NODES` as a list of node labels and pass the list to the `SimpleKGPipeline` when creating the pipeline instance. + +[source, python] +.NODES +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_builder_schema.py[tag=simple_nodes] +---- + +[TIP] +.Define relevant nodes +==== +You should define the node labels that are relevant to your domain and the information you want to extract from the text. +==== + +You can also provide a description for each node label and associated properties to help guide the LLM when extracting entities. + +[source, python] +.Node descriptions and properties +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_builder_schema.py[tag=node_types] +---- + +Recreate the knowledge graph with the defined nodes: + +. Delete any existing nodes and relationships. ++ +[source, cypher] +.Delete the existing graph +---- +MATCH (n) DETACH DELETE n +---- +. Run the program ++ +The graph will be constrained to only include the defined node labels. + +View the entities and chunks in the graph using the following Cypher query: + +[source, cypher] +.Entities and Chunks +---- +MATCH p = (c:Chunk)-[*..3]-(e:__Entity__) +RETURN p +---- + +[.transcript-only] +=== Relationships + +You can define required relationship types by providing a list to the `SimpleKGPipeline`. + +[source, python] +.RELATIONSHIP_TYPES +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_builder_schema.py[tag=relationship_types] +---- + +You can also describe patterns that define how nodes are connected by relationships. + +[source, python] +.PATTERNS +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_builder_schema.py[tag=patterns] +---- + +Nodes, relationships and patterns are all passed to the `SimpleKGPipeline` as the `schema` when creating the pipeline: + +[source, python] +.schema +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_builder_schema.py[tag=kg_builder] +---- + +[%collapsible] +.Reveal the complete code +==== +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_builder_schema.py[tags=**;!simple_nodes;!all_documents] +---- +==== + +Review the `data/genai-fundamentals_1-generative-ai_1-what-is-genai.pdf` PDF document and experiment by creating a set of `NODES`, `RELATIONSHIPS` and `PATTERNS` relevant to the data. + +Recreate the knowledge graph: + +. Delete any existing nodes and relationships. +. Run the program. + + +[%collapsible] +.Process all the documents? +==== +In the next lesson, you will add structured data to the knowledge graph, and process all of the documents. + +Optionally, you could modify the program now to process the documents from the `data` directory without the structured data: + +[source, python] +.All PDFs +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_builder_schema.py[tag=all_documents] +---- +==== + +[.slide] +== Explore + +Review the knowledge graph and observe how the defined schema has influenced the structure of the graph: + +[source, cypher] +.Entities and Chunks +---- +MATCH p = (c:Chunk)-[*..3]-(e:__Entity__) +RETURN p +---- + +View the counts of documents, chunks and entities in the graph: + +[source, cypher] +.Documents, Chunks, and Entity counts +---- +RETURN + count{ (:Document) } as documents, + count{ (:Chunk) } as chunks, + count{ (:__Entity__) } as entities +---- + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you learned how to define a custom schema for the knowledge graph. + +In the next lesson, you will learn how to add structured data to the knowledge graph. diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/images/kg-builder-structured-model.json b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/images/kg-builder-structured-model.json new file mode 100644 index 000000000..7aa3cb453 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/images/kg-builder-structured-model.json @@ -0,0 +1,154 @@ +{ + "style": { + "font-family": "sans-serif", + "background-color": "#ffffff", + "background-image": "", + "background-size": "100%", + "node-color": "#ffffff", + "border-width": 4, + "border-color": "#000000", + "radius": 50, + "node-padding": 5, + "node-margin": 2, + "outside-position": "auto", + "node-icon-image": "", + "node-background-image": "", + "icon-position": "inside", + "icon-size": 64, + "caption-position": "inside", + "caption-max-width": 200, + "caption-color": "#000000", + "caption-font-size": 50, + "caption-font-weight": "normal", + "label-position": "inside", + "label-display": "pill", + "label-color": "#000000", + "label-background-color": "#ffffff", + "label-border-color": "#000000", + "label-border-width": 4, + "label-font-size": 40, + "label-padding": 5, + "label-margin": 4, + "directionality": "directed", + "detail-position": "inline", + "detail-orientation": "parallel", + "arrow-width": 5, + "arrow-color": "#000000", + "margin-start": 5, + "margin-end": 5, + "margin-peer": 20, + "attachment-start": "normal", + "attachment-end": "normal", + "relationship-icon-image": "", + "type-color": "#000000", + "type-background-color": "#ffffff", + "type-border-color": "#000000", + "type-border-width": 0, + "type-font-size": 16, + "type-padding": 5, + "property-position": "outside", + "property-alignment": "colon", + "property-color": "#000000", + "property-font-size": 16, + "property-font-weight": "normal" + }, + "nodes": [ + { + "id": "n0", + "position": { + "x": 3.8117408928910077e-32, + "y": 47.03686581561153 + }, + "caption": "Document", + "style": {}, + "labels": [], + "properties": { + "path": "", + "createdAt": "" + } + }, + { + "id": "n1", + "position": { + "x": -1.1723460390943958e-32, + "y": 378.9796534081454 + }, + "caption": "Chunk", + "style": {}, + "labels": [], + "properties": { + "index": "", + "text": "", + "embedding": "" + } + }, + { + "id": "n2", + "position": { + "x": 331.942787592534, + "y": 378.9796534081454 + }, + "caption": "Entity", + "style": { + "property-position": "outside" + }, + "labels": [ + "__Entity__" + ], + "properties": {} + }, + { + "id": "n4", + "position": { + "x": 331.942787592534, + "y": 47.03686581561152 + }, + "caption": "Lesson", + "style": {}, + "labels": [], + "properties": { + "name": "", + "module": "", + "course": "", + "url": "" + } + } + ], + "relationships": [ + { + "id": "n0", + "type": "FROM_DOCUMENT", + "style": {}, + "properties": {}, + "fromId": "n1", + "toId": "n0" + }, + { + "id": "n1", + "type": "FROM_CHUNK", + "style": {}, + "properties": {}, + "fromId": "n2", + "toId": "n1" + }, + { + "id": "n2", + "type": "", + "style": { + "attachment-start": "right", + "attachment-end": "top" + }, + "properties": {}, + "fromId": "n2", + "toId": "n2" + }, + { + "id": "n3", + "type": "PDF_OF", + "style": {}, + "properties": {}, + "fromId": "n0", + "toId": "n4" + } + ] +} \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/images/kg-builder-structured-model.svg b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/images/kg-builder-structured-model.svg new file mode 100644 index 000000000..7b39dedec --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/images/kg-builder-structured-model.svg @@ -0,0 +1,622 @@ + + + + + + + + + + + + + + + + + FROM_DOCUMENT + + + + + + + + + + + + + + FROM_CHUNK + + + + + + + + + + + + + + + + PDF_OF + + + + + + + + + + + + + Document + + + + + + + + + path: + + createdAt: + + + + + + + + + + + + + + + + Chunk + + + + + + + + + index: + + text: + + embedding: + + + + + + + + + + + + + + + + Entity + + + + + + + __Entity__ + + + + + + + + + + + + + + + Lesson + + + + + + + + + name: + + module: + + course: + + url: + + + + + + + + + diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/lesson.adoc new file mode 100644 index 000000000..ff89411e1 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/lesson.adoc @@ -0,0 +1,151 @@ += Add structured data to the knowledge graph +:type: lesson +:order: 6 +:branch: new-workshop + +[.slide.discrete] +== Overview + +The knowledge graph you created is solely based on unstructured data extracted from documents. + +You may have access to structured data sources such as databases, CSV files, or APIs that contain valuable information relevant to your domain. + +Combining the structured and unstructured data can enhance the knowledge graph's richness and usefulness. + +[NOTE] +.Lexical and Domain Graphs +The unstructured part of your graph is known as the link:https://graphrag.com/reference/knowledge-graph/lexical-graph/[Lexical Graph], while the structured part is known as the link:https://graphrag.com/reference/knowledge-graph/domain-graph/[Domain Graph]. + +[.slide] +== Structured data source + +The repository contains a sample CSV file `workshop-genai/data/docs.csv` which contains metadata about the lessons the documents were created from. + +[source, csv] +.Sample docs.csv +---- +filename,course,module,lesson,url +genai-fundamentals_1-generative-ai_1-what-is-genai.pdf,genai-fundamentals,1-generative-ai,1-what-is-genai,https://graphacademy.neo4j.com/courses/genai-fundamentals/1-generative-ai/1-what-is-genai +genai-fundamentals_1-generative-ai_2-considerations.pdf,genai-fundamentals,1-generative-ai,2-considerations,https://graphacademy.neo4j.com/courses/genai-fundamentals/1-generative-ai/2-considerations +... +---- + +You can use the CSV file as input and a structured data source when creating the knowledge graph. + +[.slide-only] +==== +**Continue with the lesson to load the structured data.** +==== + +[.transcript-only] +=== Load from CSV file + +Open `workshop-genai/kg_structured_builder.py` and review the code. + +[source, python] +.kg_structured_builder.py +---- +include::{repository-raw}/{branch}/workshop-genai/kg_structured_builder.py[] +---- + +The key differences are: + +. The `docs.csv` file is loaded using `csv.DictReader` to read each row as a dictionary: ++ +[source, python] +.Load docs.csv +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_structured_builder.py[tag=load_csv] +---- +. The path of the PDF document is constructed using the `filename` field from the CSV: ++ +[source, python] +.PDF path +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_structured_builder.py[tag=pdf_path] +---- +. A `cypher` statement is defined to create `Lesson` nodes with properties from the CSV data: ++ +[source, python] +.Cypher statement +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_structured_builder.py[tag=cypher] +---- ++ +The `pdf_path` is used as the key to match the `Document` nodes created from the PDF files. +. A `Lesson` node is created for each document using the `cypher` statement and the CSV data: ++ +[source, python] +.Lesson nodes +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/kg_structured_builder.py[tag=create_structured_graph] +---- + +The resulting knowledge graph will now contain `Lesson` nodes connected to the `Document` nodes created from the PDF files: + +image::images/kg-builder-structured-model.svg["A data model showing Lesson nodes connected to Document nodes using a PDF_OF relationship."] + +Run the program to create the knowledge graph with the structured data. + +[NOTE] +.Remember to delete the existing graph before re-running the pipeline +==== +[source, cypher] +.Delete the existing graph +---- +MATCH (n) DETACH DELETE n +---- +==== + +[TIP] +.OpenAI Rate Limiting? +==== +When using a free OpenAI API key, you may encounter rate limiting issues when processing multiple documents. You can add a `sleep` between document processing to mitigate this. +==== + +[.slide] +== Explore the structured data + +The structured data allows you to query the knowledge graph in new ways. + +You can find all lessons that cover a specific technology or concept: + +[source, cypher] +.Find lessons about Knowledge Graphs +---- +MATCH (kg:Technology) +MATCH (kg)-[:FROM_CHUNK]->(c)-[:FROM_DOCUMENT]-(d)-[:PDF_OF]-(l) +WHERE toLower(kg.name) CONTAINS "knowledge graph" +RETURN DISTINCT toLower(kg.name), l.name, l.url +---- + +[.slide.discrete] +== Explore the knowledge graph + +The knowledge graph allows you to summarize the content of each lesson by specific categories such as technologies and concepts: + +[source, cypher] +.Summarize lesson content +---- +MATCH (lesson:Lesson)<-[:PDF_OF]-(:Document)<-[:FROM_DOCUMENT]-(c:Chunk) +RETURN + lesson.name, + lesson.url, + [ (c)<-[:FROM_CHUNK]-(tech:Technology) | tech.name ] AS technologies, + [ (c)<-[:FROM_CHUNK]-(concept:Concept) | concept.name ] AS concepts +---- + +Spend some time exploring the knowledge graph and experiment with adding additional data. + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you learned: + +* About benefits of adding structured data to a knowledge graph. +* How to load structured data from a CSV file. +* How to create nodes from structured data and connect them to unstructured data nodes. + +In the next module, you will create retrievers to query the knowledge graph. diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/7-create-a-kg/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/7-create-a-kg/lesson.adoc new file mode 100644 index 000000000..35dccd514 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/7-create-a-kg/lesson.adoc @@ -0,0 +1,28 @@ += Create your own knowledge graph +:type: challenge +:order: 7 + +[.slide.discrete] +== Overview + +In this optional challenge, you will apply what you have learned to create your own knowledge graph. + +You should: + +. Find a data set of documents that you want to create a knowledge graph from. This could be a collection of PDFs, text files, or any other text-based documents. ++ +Try searching kaggle for link:https://www.kaggle.com/datasets?search=pdf[open PDF datasets^], for example the link:https://www.kaggle.com/datasets/snehaanbhawal/resume-dataset[Resume Dataset^]. +. Use the `SimpleKGPipeline` to load the documents, split the text into chunks, extract entities, and create the knowledge graph in Neo4j. +. Load any associated structured data if available to enrich the knowledge graph. +. Query the knowledge graph to explore the data and extract insights. + +You can come back to this challenge at any time. + +read::Complete[] + +[.summary] +== Lesson Summary + +In this lesson, you applied what you had learned to create your own knowledge graph. + +In the next module, you will create retrievers to query the knowledge graph. \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/module.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/module.adoc new file mode 100644 index 000000000..ec0522ff6 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/module.adoc @@ -0,0 +1,17 @@ += Knowledge Graph Construction +:order: 2 + + + +== Module Overview + +In this module, you will learn: + +* The process of creating knowledge graphs from unstructured text. +* How to use the `SimpleKGPipeline` class to create a knowledge graph from unstructured data. +* The stages of the pipeline and how they work together. +* How to modify the configuration to define the schema and data model. + +If you are ready, let's get going! + +link:./1-knowledge-graph-construction/[Ready? Let's go →, role=btn] diff --git a/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/1-retrievers/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/1-retrievers/lesson.adoc deleted file mode 100644 index 5d042d988..000000000 --- a/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/1-retrievers/lesson.adoc +++ /dev/null @@ -1,216 +0,0 @@ -= What is a Retriever -:type: lesson -:order: 1 -:slides: true - -[.slide.discrete] -== Introduction - -You are going to explore how to retrieve information from the knowledge graph using _retrievers_ included in the link:https://neo4j.com/developer/genai-ecosystem/graphrag-python/[Neo4j GraphRAG Python package^]. - -This lesson covers the three main retriever types you'll work with in the hands-on notebook. - -[.slide] -== What is a Retriever? - -A **retriever** is a component that searches and returns relevant information from your knowledge graph to answer questions or provide context to language models. - -**The Three Types:** - -- **Vector Retriever:** Semantic search across text chunks -- **Vector + Cypher Retriever:** Semantic search + graph traversal -- **Text2Cypher Retriever:** Natural language to Cypher queries - -[.slide] -== Vector Retriever - -**How it works:** - -- Converts your question into a vector embedding using an embedding model (eg. OpenAI) -- Searches the `chunkEmbeddings` vector index for similar content -- Returns semantically related text chunks based on cosine similarity -- Pure semantic search - no graph traversal - -**Example from the notebook:** - -[source, python, role="nocopy"] ----- -vector_retriever = VectorRetriever( - driver=driver, - index_name='chunkEmbeddings', - embedder=embedder, - return_properties=['text'] -) ----- - -[.slide.discrete] -== Vector Retriever - -**Best for:** - -- Finding conceptually similar information across all documents -- Semantic search when exact keywords don't match -- Broad exploratory questions about topics -- When you don't know specific entity names - -**Example Query:** _"What are the risks that Apple faces?"_ - -**Limitations:** - -- Returns only text chunks, no entity relationships -- May miss entity-specific context -- Cannot aggregate information across multiple entities - -[.slide] -== Vector + Cypher Retriever - -**How it works:** - -- **Step 1:** Vector search finds semantically relevant text chunks -- **Step 2:** Custom Cypher query traverses from each chunk to related entities -- **Step 3:** Returns enriched context including entities, relationships, and metadata -- Combines semantic relevance with graph intelligence - -**Example from the notebook:** - -[source, python, role="nocopy"] ----- -vector_cypher_retriever = VectorCypherRetriever( - driver=driver, - index_name='chunkEmbeddings', - embedder=embedder, - retrieval_query=custom_cypher_query -) ----- - -[.slide.discrete] -== Vector + Cypher Retriever - -**Best for:** - -- Getting both content and rich contextual information -- Understanding relationships between entities mentioned in chunks -- Questions requiring entity-specific aggregations -- Comprehensive answers that need multiple connected data points - -**Example Query:** _"Which asset managers are most affected by cryptocurrency policies?"_ - -[.slide] -== Why "Apple" Queries Can Fail in Vector + Cypher - -**The Challenge:** -When you ask _"What are the risks that Apple faces?"_ using Vector + Cypher, you may not get Apple-specific results. - -**Why this happens:** - -- Vector search finds chunks semantically similar to your query -- If those chunks aren't about Apple, the Cypher query won't reach Apple entities -- **The chunk is the anchor** - you can only traverse from what you retrieve - -**Key Insight:** -Vector + Cypher works best when your question naturally surfaces relevant chunks about the entities you're interested in. - -[.slide] -== Good Vector + Cypher Query Example - -**Query:** _"Which asset managers are most affected by banking regulations?"_ - -**Why this works well:** - -- Vector search finds chunks about "banking regulations" -- Cypher query traverses to asset managers connected to those companies -- Returns both the regulatory context AND the asset manager entities - -**Cypher pattern:** - -[source, cypher, role="noplay nocopy"] ----- -WITH node -MATCH (node)-[:FROM_DOCUMENT]-(doc:Document)-[:FILED]-(company:Company)-[:OWNS]-(manager:AssetManager) -RETURN company.name AS company, manager.managerName AS AssetManager, node.text AS context ----- - -[.slide] -== Text2Cypher Retriever - -**How it works:** - -- Uses an LLM to convert natural language questions into Cypher queries -- Leverages the graph schema to understand available entities and relationships -- Executes the generated Cypher query directly against Neo4j -- Returns structured, precise results from the graph - -**Example from the notebook:** - -[source, python, role="nocopy"] ----- -text2cypher_retriever = Text2CypherRetriever( - driver=driver, - llm=llm, - neo4j_schema=schema -) ----- - -[.slide.discrete] -== Text2Cypher Retriever - -**Example Query:** _"What are the company names of companies owned by BlackRock Inc?"_ - -**Generated Cypher:** - -```cypher -MATCH (am:AssetManager {managerName: 'BlackRock Inc.'})-[:OWNS]->(c:Company) -RETURN c.name AS company_name -``` - -[.slide.discrete] -== Text2Cypher Retriever - -**Best for:** - -- Precise, entity-centric questions -- When you need exact data (numbers, dates, counts, names) -- Aggregations and analytical questions -- Direct graph queries without semantic search - -**Limitations:** - -- Requires good graph schema understanding -- May struggle with ambiguous natural language -- Less effective for open-ended or exploratory questions - -[.slide] -== Choosing the Right Retriever - -**Use Vector Retriever when:** - -- You want semantic similarity search -- Question is conceptual or broad -- You need to find related topics - -**Use Vector + Cypher when:** - -- You want both content and relationships -- Need comprehensive context -- Question involves multiple entities - -**Use Text2Cypher when:** - -- You need precise, structured data -- Question asks for specific facts or numbers -- You want to leverage graph relationships directly - -read::Continue[] - -[.summary] -== Summary - -In this lesson, you learned about the three main types of retrievers: - -- **Vector Retriever** for semantic similarity search -- **Vector + Cypher Retriever** for hybrid content and relationship search -- **Text2Cypher Retriever** for structured graph queries - -Each retriever has specific strengths and use cases, and understanding when to use each one is key to building effective RAG applications. - -In the next lesson, you will work with these retrievers hands-on in a Jupyter notebook. diff --git a/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/2-setup/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/2-setup/lesson.adoc deleted file mode 100644 index 77eec621b..000000000 --- a/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/2-setup/lesson.adoc +++ /dev/null @@ -1,100 +0,0 @@ -= Setup your development environment -:type: lesson -:order: 2 -:slides: true -:branch: main - -In this workshop, you will use Neo4j, Python, and LangChain to create retrievers and agents that can interact with Generative AI models. - -**Before you start the hands-on exercises**, you need to set up your development environment to run the code examples. - - - -include::../../../../../../shared/courses/codespace/get-started.adoc[] - -[%collapsible] -.Develop on your local machine -==== -You will need: - -* link:https://python.org[Python]. -* link:https://code.visualstudio.com/[Visual Studio Code^]. -* link:https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter[Jupyter extension for Visual Studio Code^]. -* The ability to install packages using `pip`. - -You may want to set up a virtual environment using link:https://docs.python.org/3/library/venv.html[`venv`^] or link:https://virtualenv.pypa.io/en/latest/[`virtualenv`^] to keep your dependencies separate from other projects. - -Clone the link:{repository-link}[github.com/neo4j-graphacademy/workshop-genai] repository: - -[source,bash] ----- -git clone https://github.com/neo4j-graphacademy/workshop-genai ----- - -Install the required packages using `pip` and download the required data: - -[source,bash] ----- -cd workshop-genai -pip install -r requirements.txt ----- - -You do not need to create a Neo4j database as you will use the provided instance. - -The instance uses Neo4j's GenAI functions, you can find out more about how to configure them in the link:https://neo4j.com/docs/cypher-manual/current/genai-integrations/[Neo4j GenAI integration documentation^]. -==== - -== Setup the environment - -Create a copy of the `.env.example` file and name it `.env`. - -[source] -.Create a .env file ----- -# Create a copy of this file and name it .env -OPENAI_API_KEY="sk-..." -NEO4J_URI="{instance-scheme}://{instance-ip}:{instance-boltPort}" -NEO4J_USERNAME="{instance-username}" -NEO4J_PASSWORD="{instance-password}" -NEO4J_DATABASE="{instance-database}" ----- -// include::{repository-raw}/{branch}/.env.example[] - -Update the file to include the Open AI API key (`OPENAI_API_KEY`). - -ifeval::[{course-completed}==true] - -[IMPORTANT] -.Course completion -==== -You have completed this course. - -The Neo4j sandbox instance is no longer available, you can create a Neo4j cloud instance using link:https://console.neo4j.io[Neo4j AuraDB^] -==== - -endif::[] - -// Update the Neo4j sandbox connection details: - -// NEO4J_URI:: [copy]#neo4j://{instance-ip}:{instance-boltPort}# -// NEO4J_USERNAME:: [copy]#{instance-username}# -// NEO4J_PASSWORD:: [copy]#{instance-password}# - -== Test your setup - -You can test your setup by running `workshop-genai/test_environment.py` - this will attempt to connect to the Neo4j sandbox and the OpenAI API. - -You will see an `OK` message if you have set up your environment correctly. If any tests fail, check the contents of the `.env` file. - -== Continue - -When you are ready, you can move on to the next lesson. - -read::Success - let's get started![] - -[.summary] -== Lesson Summary - -You have setup your development environment and are ready for hands-on practice. - -In the next lesson, you will work hands-on with retrievers using Jupyter notebooks to see how they work in practice. diff --git a/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/2-setup/reset.cypher b/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/2-setup/reset.cypher deleted file mode 100644 index 6b69838cf..000000000 --- a/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/2-setup/reset.cypher +++ /dev/null @@ -1,170 +0,0 @@ -// This Cypher script loads the data from the CSV files into a Neo4j. - -// The CSV files were exported from Neo4j using `apoc.export.csv.all`. -// CALL apoc.export.csv.all("genai-data.csv", {bulkImport: true}) - -MATCH (n) SET n:__index__; - -CREATE INDEX import__ID IF NOT EXISTS -FOR (n:__index__) ON (n.`:ID`); - -CREATE VECTOR INDEX chunkEmbeddings IF NOT EXISTS -FOR (n:Chunk) ON (n.embedding) -OPTIONS { indexConfig : { - `vector.dimensions`: 1536, - `vector.similarity_function`: 'cosine' - } -}; - -CREATE CONSTRAINT managerName_AssetManager_uniq IF NOT EXISTS -FOR (n:AssetManager) REQUIRE n.managerName IS UNIQUE; - -CREATE CONSTRAINT name_Company_uniq IF NOT EXISTS -FOR (n:Company) REQUIRE n.name IS UNIQUE; - -CREATE CONSTRAINT path_Document_uniq IF NOT EXISTS -FOR (n:Document) REQUIRE n.path IS UNIQUE; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Executive.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Executive; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.FinancialMetric.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:FinancialMetric; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Product.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Product; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.RiskFactor.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:RiskFactor; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.StockType.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:StockType; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.TimePeriod.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:TimePeriod; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Transaction.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Transaction; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Chunk.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.index), - n.text = row.text, - n:Chunk -WITH n, row.embedding AS embedding -CALL db.create.setNodeVectorProperty(n, 'embedding', apoc.convert.fromJsonList(embedding)); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Company.__Entity__.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n.ticker = row.ticker, - n:Company; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Document.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.path = row.path, - n.datetime = datetime(row.datetime), - n:Document; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.AssetManager.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.managerName = row.managerName, - n.managerCik = toInteger(row.managerCik), - n:AssetManager; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.Company.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.name = row.name, - n.ticker = row.ticker, - n:Company; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.Document.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.path = row.path, - n:Document; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FACES_RISK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FACES_RISK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FILED.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FILED]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_DOCUMENT.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_DOCUMENT]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.HAS_METRIC.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:HAS_METRIC]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.ISSUED_STOCK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:ISSUED_STOCK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.MENTIONS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:MENTIONS]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.NEXT_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:NEXT_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.OWNS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[r:OWNS]->(b) -SET r.position_status = row.position_status, - r.`Value` = toFloat(row.Value), - r.shares = toInteger(row.shares), - r.share_value = toFloat(row.share_value); - -MATCH (n:__index__) REMOVE n:__index__; \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/3-hands-on-retrievers/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/3-hands-on-retrievers/lesson.adoc deleted file mode 100644 index 0ace109e6..000000000 --- a/asciidoc/courses/workshop-genai/modules/2-retrievers/lessons/3-hands-on-retrievers/lesson.adoc +++ /dev/null @@ -1,144 +0,0 @@ -= Working with Retrievers -:type: challenge -:order: 3 - -[.slide.discrete] -== Introduction -In this lesson, you will work hands-on with all three retriever types to see how they work in practice. - -There are three Jupyter notebooks to explore: - -. `01_01_vector_retriever.ipynb` - Vector Retriever -. `01_02_vector_cypher_retriever.ipynb` - Vector + Cypher Retriever -. `01_03_text2cypher_retriever.ipynb` - Text2Cypher Retriever - -[.slide] -== Hands-On: Retriever Notebooks - -Open the first notebook: `01_01_vector_retriever.ipynb` - -Each notebook demonstrates: - -1. **Setting up the retriever** with the knowledge graph we built -2. **Customizing the retriever** for your requirements -3. **Using the retriever** as part of a GraphRAG pipeline -4. **Comparing results** from different retrieval methods - -[.transcript-only] -==== - -**What You'll Build:** - -As you work through the notebooks, take time to review the code snippets and understand how each retriever is initialized and used. - -Note how each retriever has its place in a complete GraphRAG system! - -**Initialize Models:** - -All retrievers will use the same LLM and embedder for consistency: - -[source, python] ----- -from neo4j_graphrag.retrievers import VectorRetriever, VectorCypherRetriever, Text2CypherRetriever - -llm = OpenAILLM(model_name="gpt-4o", api_key=OPENAI_API_KEY) -embedder = OpenAIEmbeddings(api_key=OPENAI_API_KEY) ----- - -**Vector Retriever:** - -- Returns semantically similar text chunks -- Good for exploratory questions -- May miss entity-specific context - -[source, python] ----- -vector_retriever = VectorRetriever( - driver=driver, - index_name="chunkEmbeddings", - embedder=embedder -) ----- - -**Vector + Cypher Retriever:** - -- Provides both content and relationships -- Richer context with entity information -- Better for comprehensive answers - -[source, python] ----- -vector_cypher_retriever = VectorCypherRetriever( - driver=driver, - index_name="chunkEmbeddings", - retrieval_query=cypher_query, - embedder=embedder -) ----- - -**Text2Cypher Retriever:** - -- Direct, precise answers from graph structure -- Perfect for factual queries -- Handles aggregations and counts - -[source, python] ----- -text2cypher_retriever = Text2CypherRetriever( - driver=driver, - llm=llm, - neo4j_schema=neo4j_schema -) ----- -==== - -[.slide] -== Testing Different Retrievers - -**Try these questions with each retriever:** - -**Broad Semantic Questions:** - -- _"What are the main cybersecurity threats in financial services?"_ -- _"Tell me about risk factors mentioned in the documents"_ - -**Entity-Specific Questions:** - -- _"What products does Apple mention in their filings?"_ -- _"Which companies face regulatory challenges?"_ - -**Precise Data Questions:** - -- _"How many companies mention cloud computing?"_ -- _"Count the risk factors for Microsoft"_ - -**Compare the results** - you'll see how each retriever approaches the same question differently! - -[.slide] - -read::Continue[] - -[.summary] -== Summary - -In this hands-on lesson, you worked with all three retriever types in practice: - -**What You Built:** - -- Vector Retriever for semantic search -- Vector + Cypher Retriever for contextual search -- Text2Cypher Retriever for precise queries - -**Key Insights:** - -- Different retrievers excel at different question types -- Combining approaches gives comprehensive coverage -- Understanding retriever strengths guides selection - -**Preparation:** - -- You now understand how each retriever works in practice -- You've seen their different strengths and limitations -- You're ready to wrap these retrievers as conversational agent tools - -In the next module, you will learn how to combine these retrievers into intelligent agents that can choose the right retrieval method automatically. diff --git a/asciidoc/courses/workshop-genai/modules/2-retrievers/llms.txt b/asciidoc/courses/workshop-genai/modules/2-retrievers/llms.txt deleted file mode 100644 index 4a6186885..000000000 --- a/asciidoc/courses/workshop-genai/modules/2-retrievers/llms.txt +++ /dev/null @@ -1,150 +0,0 @@ -# Module 2: Retrievers - -## Learning Objectives: - -- Setup your development environment. -- Learn about the different types of retrievers. -- Create a vector + cypher retriever. -- Create a text to Cypher retriever. - -## Key Concepts Covered: - -### Retrievers - -This lesson introduces three types of retrievers used to extract information from a Neo4j knowledge graph: - -1. **Vector Retriever**: - - Performs semantic search across text chunks using vector embeddings. - - Best for broad exploratory questions and conceptual searches. - - Limitations: Does not retrieve entity relationships or aggregate information. - -2. **Vector + Cypher Retriever**: - - Combines semantic search with graph traversal. - - Retrieves enriched context, including entities and relationships. - - Best for questions requiring entity-specific aggregations and comprehensive answers. - - Limitations: Requires relevant chunks to anchor graph traversal. - -3. **Text2Cypher Retriever**: - - Converts natural language questions into Cypher queries using an LLM. - - Executes precise graph queries for structured data. - - Best for analytical and entity-centric questions. - - Limitations: Requires understanding of the graph schema and struggles with ambiguous queries. - -**Key Insights**: -- Each retriever has specific strengths and use cases. -- Choosing the right retriever depends on the type of question and required output (semantic similarity, entity relationships, or precise data). - -## Example Code for Retrievers - -Vector retriever for semantic search across text chunks: - -```python -vector_retriever = VectorRetriever( - driver=driver, - index_name='chunkEmbeddings', # Name of the vector index - embedder=embedder, # OpenAI embeddings model - return_properties=['text'] # Properties to return from matched nodes -) - -# Perform semantic search -query = "What are the risks that Apple faces?" -results = vector_retriever.search(query_text=query, top_k=10) - -# Process results -for item in results.items: - print(f"Score: {item.metadata['score']:.4f}") - print(f"Content: {item.content[:100]}...") - print(f"ID: {item.metadata['id']}") - print("---") - -# Use vector retriever with GraphRAG for complete answers -rag = GraphRAG(llm=llm, retriever=vector_retriever) -answer = rag.search(query) -print(f"Answer: {answer.answer}") -``` - -Vector + Cypher Retriever for Contextual Search: - -```python -# Custom Cypher query to traverse from chunks to related entities -contextual_query = """ -WITH node -MATCH (node)-[:FROM_DOCUMENT]-(doc:Document)-[:FILED]-(company:Company) -OPTIONAL MATCH (company)-[:FACES_RISK]->(risk:RiskFactor) -OPTIONAL MATCH (company)<-[:OWNS]-(manager:AssetManager) -RETURN - company.name AS company, - node.text AS context, - collect(DISTINCT risk.name) AS risks, - collect(DISTINCT manager.managerName) AS asset_managers -""" - -# Vector + Cypher retriever for hybrid search -vector_cypher_retriever = VectorCypherRetriever( - driver=driver, - index_name='chunkEmbeddings', - embedder=embedder, - retrieval_query=contextual_query # Custom Cypher for graph traversal -) - -# Query that leverages both semantic search and graph relationships -query = "Which asset managers are most affected by cryptocurrency policies?" - -# Retrieve contextually enriched results -results = vector_cypher_retriever.search(query_text=query, top_k=10) -for item in results.items: - print(f"Company: {item.content.get('company', 'N/A')}") - print(f"Context: {item.content.get('context', '')[:150]}...") - print(f"Asset Managers: {item.content.get('asset_managers', [])}") - print("---") - -# Use with GraphRAG for comprehensive answers -rag = GraphRAG(llm=llm, retriever=vector_cypher_retriever) -answer = rag.search(query) -print(f"Answer: {answer.answer}") -``` - -Text2Cypher Retriever for Structured Queries: - -```python -# Get graph schema for Text2Cypher generation -schema = get_schema(driver) -print("Graph Schema:") -print(schema) - -# Text2Cypher retriever for natural language to Cypher conversion -text2cypher_retriever = Text2CypherRetriever( - driver=driver, - llm=llm, # LLM for query generation - neo4j_schema=schema # Graph schema for context -) - -# Natural language query converted to Cypher -query = "What are the company names of companies owned by BlackRock Inc?" -cypher_result = text2cypher_retriever.get_search_results(query) - -print(f"Original Query: {query}") -print(f"Generated Cypher: {cypher_result.metadata['cypher']}") - -# Execute the generated Cypher query -result = driver.execute_query(cypher_result.metadata["cypher"]) -print("Results:") -for record in result.records: - print(record) - -# Example queries that work well with Text2Cypher -structured_queries = [ - "How many companies mention cloud computing?", - "Count the risk factors for Microsoft", - "What financial metrics does Apple report?", - "Which asset managers own the most companies?", - "List all products mentioned by technology companies" -] - -# Process multiple structured queries -for question in structured_queries: - result = text2cypher_retriever.get_search_results(question) - print(f"Q: {question}") - print(f"Cypher: {result.metadata['cypher']}") - print("---") -``` diff --git a/asciidoc/courses/workshop-genai/modules/2-retrievers/module.adoc b/asciidoc/courses/workshop-genai/modules/2-retrievers/module.adoc deleted file mode 100644 index aa477c1fd..000000000 --- a/asciidoc/courses/workshop-genai/modules/2-retrievers/module.adoc +++ /dev/null @@ -1,13 +0,0 @@ -= Retrievers -:order: 2 - -Retrievers are a crucial component of RAG (Retrieval-Augmented Generation) systems. They are responsible for finding and retrieving relevant information to provide context to large language models. - -In this module, you will: - -* Setup your development environment. -* Learn about the different types of retrievers. -* Create a vector + cypher retriever. -* Create a text to Cypher retriever. - -link:./1-retrievers/[Ready? Let's go →, role=btn] diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/lesson.adoc deleted file mode 100644 index 585382314..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/lesson.adoc +++ /dev/null @@ -1,114 +0,0 @@ -= Making Retrievers Conversational -:type: lesson -:order: 1 -:slides: true - -[.slide.discrete] -== Introduction - -Now that you understand the three types of retrievers, let's learn how to make them **conversational** by wrapping them as *agent* tools. - -[.slide] -== Agents = Retrievers + Conversation Framework - -**What is an Agent?** - -An agent is a conversational wrapper around retrievers: - -- **Schema Retriever** → Database Schema Tool -- **Vector + Cypher Retriever** → Hybrid Tool -- **Text2Cypher Retriever** → Structured Query Tool - -**The agent adds:** - -- User query analysis -- Natural language conversation interface -- Automatic tool selection based on question type -- Flexible context management - - -[.slide] -== Agent Intelligence: Tool Selection - -**The agent's job is to choose the right retriever tool:** - -- **"How are Products related to other entities?"** → Use Schema for data model exploration -- **"Which companies are affected by banking regulations?"** → Use Vector+Cypher for contextual relationships -- **"What risks does Apple face?"** → Use Text2Cypher for precise company data - -[.slide.discrete] -== Agent Intelligence: Agent Reasoning - -**Agent reasoning:** - -1. Analyze the user's question -2. Determine what type of information is needed -3. Select the appropriate retriever tool -4. Execute the tool and format the response -5. Maintain conversation context - -[.slide] -== Progressive Learning Path - -**You'll build the agent incrementally:** - -**First Agent:** Basic agent with **schema introspection** tool - -- Start simple with database exploration -- Learn agent fundamentals - -**Enhanced Agent:** Add **document retrieval** tool - -- Add semantic search with graph context -- Compare tool behaviors - -**Complete Agent:** Add **text-to-Cypher** tool - -- Add structured queries -- Multi-tool agent intelligence - -Each step adds one more tool - building complexity step by step. - - -**The retrievers do the heavy lifting - the agent makes them conversational and smart about when to use each one.** - -[.slide] -== Getting Started - -In the next lessons, you'll progressively build an agent by adding retriever tools one by one: - -1. **Schema tool** for data model exploration -2. **Vector + Cypher tool** for semantic exploration and contextual relationships -3. **Text2Cypher tool** for precise queries - -Each lesson shows how to wrap a retriever as a tool and how the agent chooses between available tools. - -read::Continue[] - -[.summary] -== Summary - -In this lesson, you learned that agents are **conversational wrappers** around the retrievers you already know: - -**Key Concept:** - -- **Retrievers** = The core functionality (Schema, Vector+Cypher, Text2Cypher) -- **Agents** = Conversational interface + intelligent tool selection -- **Tools** = Retrievers wrapped for agent use - -**What Agents Add:** - -- User query analysis -- Natural language conversation interface -- Automatic tool selection based on question type -- Flexible context management - -**Progressive Learning:** - -- **First Agent:** Schema tool → Database exploration -- **Enhanced Agent:** Add document retrieval → Semantic search with context -- **Complete Agent:** Add text2cypher → Structured queries - -**The retrievers do the work - the agent makes them conversational and intelligent about when to use each one.** - -In the next lesson, you will start building your agent with schema introspection as your first tool. diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/reset.cypher b/asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/reset.cypher deleted file mode 100644 index 6b69838cf..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/reset.cypher +++ /dev/null @@ -1,170 +0,0 @@ -// This Cypher script loads the data from the CSV files into a Neo4j. - -// The CSV files were exported from Neo4j using `apoc.export.csv.all`. -// CALL apoc.export.csv.all("genai-data.csv", {bulkImport: true}) - -MATCH (n) SET n:__index__; - -CREATE INDEX import__ID IF NOT EXISTS -FOR (n:__index__) ON (n.`:ID`); - -CREATE VECTOR INDEX chunkEmbeddings IF NOT EXISTS -FOR (n:Chunk) ON (n.embedding) -OPTIONS { indexConfig : { - `vector.dimensions`: 1536, - `vector.similarity_function`: 'cosine' - } -}; - -CREATE CONSTRAINT managerName_AssetManager_uniq IF NOT EXISTS -FOR (n:AssetManager) REQUIRE n.managerName IS UNIQUE; - -CREATE CONSTRAINT name_Company_uniq IF NOT EXISTS -FOR (n:Company) REQUIRE n.name IS UNIQUE; - -CREATE CONSTRAINT path_Document_uniq IF NOT EXISTS -FOR (n:Document) REQUIRE n.path IS UNIQUE; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Executive.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Executive; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.FinancialMetric.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:FinancialMetric; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Product.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Product; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.RiskFactor.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:RiskFactor; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.StockType.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:StockType; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.TimePeriod.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:TimePeriod; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Transaction.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Transaction; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Chunk.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.index), - n.text = row.text, - n:Chunk -WITH n, row.embedding AS embedding -CALL db.create.setNodeVectorProperty(n, 'embedding', apoc.convert.fromJsonList(embedding)); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Company.__Entity__.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n.ticker = row.ticker, - n:Company; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Document.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.path = row.path, - n.datetime = datetime(row.datetime), - n:Document; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.AssetManager.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.managerName = row.managerName, - n.managerCik = toInteger(row.managerCik), - n:AssetManager; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.Company.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.name = row.name, - n.ticker = row.ticker, - n:Company; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.Document.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.path = row.path, - n:Document; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FACES_RISK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FACES_RISK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FILED.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FILED]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_DOCUMENT.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_DOCUMENT]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.HAS_METRIC.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:HAS_METRIC]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.ISSUED_STOCK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:ISSUED_STOCK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.MENTIONS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:MENTIONS]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.NEXT_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:NEXT_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.OWNS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[r:OWNS]->(b) -SET r.position_status = row.position_status, - r.`Value` = toFloat(row.Value), - r.shares = toInteger(row.shares), - r.share_value = toFloat(row.share_value); - -MATCH (n:__index__) REMOVE n:__index__; \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/2-langchain-agent/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-agents/lessons/2-langchain-agent/lesson.adoc deleted file mode 100644 index 776caf2d0..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/2-langchain-agent/lesson.adoc +++ /dev/null @@ -1,97 +0,0 @@ -= Simple LangChain Agent -:type: challenge -:order: 2 -:slides: true - -[.slide.discrete] -== Introduction -In this lesson, you'll build your first LangChain agent that can interact with your Neo4j knowledge graph. - -**Key insight:** The agent chooses which tool to use based on your question. - -**When you ask: _"Summarize the schema of the graph database"_** - -1. **Agent receives** your natural language question -2. **Agent decides** to use the `Get-graph-database-schema` tool -3. **Tool executes** and returns the Neo4j schema -4. **Agent processes** the schema and creates a summary -5. **Agent responds** in natural language - -[.slide] -== What You'll Build - -Open the notebook: `02_01_simple_agent.ipynb` - -**This agent:** - -- Uses LangChain and LangGraph for agent functionality -- Connects to your Neo4j database -- Has a single tool: `Get-graph-database-schema` -- Can answer questions about your graph structure - -**The goal:** Understand basic agent architecture before adding retriever capabilities. - -[.transcript-only] -==== -[source, python] -.Agent Architecture ----- -# 1. Initialize LLM -model = init_chat_model("gpt-4o", model_provider="openai") - -# 2. Connect to Neo4j -graph = Neo4jGraph(url=NEO4J_URI, username=username, password=password) - -# 3. Define tools -@tool("Get-graph-database-schema") -def get_schema(): - """Get the schema of the graph database.""" - return graph.schema - -# 4. Create agent -agent = create_react_agent(model, tools) ----- -==== - -[.slide] -== Try These Questions - -**Schema exploration:** - -- _"Summarize the schema of the graph database"_ -- _"How are Products related to other entities?"_ -- _"What questions can I answer using this graph database?"_ - -**Perfect for understanding data structure before building queries!** - -read::Continue[] - -[.summary] -== Summary - -In this lesson, you built your first agent with schema introspection capabilities: - -**Key Concepts:** - -- **Schema tool:** Database structure exploration through conversation -- **Agent setup:** LangChain ReAct agent with introspection tool -- **LangGraph:** Modern agent framework for tool orchestration -- **Graph structure:** Understanding nodes, relationships, and properties - -**Next lesson:** Add Vector Retriever tool for semantic content search. - -- **Conversation flow:** Natural language → tool selection → retriever execution → formatted response - -**What You Built:** - -- Agent that can answer questions using the database schema -- Conversational interface to graph database schema -- Foundation for adding more retriever tools - -**Limitations:** - -- Only retrieves schema (nodes and relationships) defined in database -- No precise queries or aggregations -- Single tool agent - -In the next lesson, you will enhance your agent by adding the Vector + Cypher Retriever tool for contextual relationships and richer answers. diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/2-langchain-agent/reset.cypher b/asciidoc/courses/workshop-genai/modules/3-agents/lessons/2-langchain-agent/reset.cypher deleted file mode 100644 index 6b69838cf..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/2-langchain-agent/reset.cypher +++ /dev/null @@ -1,170 +0,0 @@ -// This Cypher script loads the data from the CSV files into a Neo4j. - -// The CSV files were exported from Neo4j using `apoc.export.csv.all`. -// CALL apoc.export.csv.all("genai-data.csv", {bulkImport: true}) - -MATCH (n) SET n:__index__; - -CREATE INDEX import__ID IF NOT EXISTS -FOR (n:__index__) ON (n.`:ID`); - -CREATE VECTOR INDEX chunkEmbeddings IF NOT EXISTS -FOR (n:Chunk) ON (n.embedding) -OPTIONS { indexConfig : { - `vector.dimensions`: 1536, - `vector.similarity_function`: 'cosine' - } -}; - -CREATE CONSTRAINT managerName_AssetManager_uniq IF NOT EXISTS -FOR (n:AssetManager) REQUIRE n.managerName IS UNIQUE; - -CREATE CONSTRAINT name_Company_uniq IF NOT EXISTS -FOR (n:Company) REQUIRE n.name IS UNIQUE; - -CREATE CONSTRAINT path_Document_uniq IF NOT EXISTS -FOR (n:Document) REQUIRE n.path IS UNIQUE; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Executive.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Executive; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.FinancialMetric.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:FinancialMetric; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Product.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Product; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.RiskFactor.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:RiskFactor; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.StockType.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:StockType; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.TimePeriod.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:TimePeriod; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.__Entity__.Transaction.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n:Transaction; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Chunk.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.index), - n.text = row.text, - n:Chunk -WITH n, row.embedding AS embedding -CALL db.create.setNodeVectorProperty(n, 'embedding', apoc.convert.fromJsonList(embedding)); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Company.__Entity__.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.chunk_index = toInteger(row.chunk_index), - n.name = row.name, - n.ticker = row.ticker, - n:Company; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.__KGBuilder__.Document.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.path = row.path, - n.datetime = datetime(row.datetime), - n:Document; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.AssetManager.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.managerName = row.managerName, - n.managerCik = toInteger(row.managerCik), - n:AssetManager; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.Company.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.name = row.name, - n.ticker = row.ticker, - n:Company; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.nodes.Document.csv" AS row -MERGE (n:__index__ {`:ID`: row.`:ID`}) -SET - n.path = row.path, - n:Document; - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FACES_RISK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FACES_RISK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FILED.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FILED]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.FROM_DOCUMENT.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:FROM_DOCUMENT]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.HAS_METRIC.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:HAS_METRIC]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.ISSUED_STOCK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:ISSUED_STOCK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.MENTIONS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:MENTIONS]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.NEXT_CHUNK.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[:NEXT_CHUNK]->(b); - -LOAD CSV WITH HEADERS FROM "https://raw.githubusercontent.com/neo4j-graphacademy/workshop-genai/refs/heads/main/workshop-genai/financial-documents/csv-load/data/genai-data.relationships.OWNS.csv" AS row -MATCH (a:__index__ {`:ID`: row.`:START_ID`}) -MATCH (b:__index__ {`:ID`: row.`:END_ID`}) -MERGE (a)-[r:OWNS]->(b) -SET r.position_status = row.position_status, - r.`Value` = toFloat(row.Value), - r.shares = toInteger(row.shares), - r.share_value = toFloat(row.share_value); - -MATCH (n:__index__) REMOVE n:__index__; \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/3-vector-retriever/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-agents/lessons/3-vector-retriever/lesson.adoc deleted file mode 100644 index 675676309..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/3-vector-retriever/lesson.adoc +++ /dev/null @@ -1,79 +0,0 @@ -= Vector + Graph Retrieval Tool -:type: challenge -:order: 3 - -[.slide.discrete] -== Introduction - -You will enhance your agent by adding a custom document retrieval tool that combines semantic search and vectors with graph traversal. - -The agent decides automatically which tool is best for each question: - -**Schema Tool:** - -- Understanding database structure -- "What entities exist in the graph?" -- "How are companies related to risk factors?" - -**Document Retrieval Tool:** - -- Finding content with company context -- "What are Microsoft's main risk factors?" -- "Tell me about cybersecurity threats mentioned by tech companies" - -[.slide] -== Two-Tool Agent - -Open the notebook: `02_02_vector_graph_agent.ipynb` - -Add the Vector + Cypher Retriever as a second tool: - -1. **Keep existing schema tool** (from previous lesson) -2. **Add new document retrieval tool** (vector search with graph context) -3. **Let agent choose** between tools based on question - -Now your agent can handle both schema exploration AND contextual relationship queries. - -[.slide] -== Try These Questions - -**Try these questions to see tool selection:** - -- _"How are companies connected through their mentioned products?"_ -- _"What type of questions can I ask about Apple using the graph database?"_ -- _"What products does Microsoft mention in its financial documents?"_ -- _"How are companies connected through their mentioned products?"_ - -The agent will choose from the 2 tools available: - -- Graph Exploration (Schema Tool) -- Contextual Search (Vector + Cypher Tool) - -**Notice:** The agent chooses the right tool (or series of tools) automatically based on whether relationships are needed! - -read::Continue[] - -[.summary] -== Summary - -In this lesson, you enhanced your agent by adding the Vector + Cypher Retriever as a second tool: - -**Key Concepts:** - -- **Tool selection:** Agent chooses between schema and contextual search -- **Multi-tool agent:** Two retrievers wrapped as conversational tools -- **Intelligent routing:** Questions automatically matched to appropriate tool - -**What You Built:** - -- Agent with two retriever tools -- Automatic tool selection based on question type -- Enhanced capability for both simple and contextual queries - -**Progress:** - -- ✅ Schema Exploration tool (get database schema) -- ✅ Vector + Cypher Retriever tool (contextual search) -- ⏳ Text2Cypher Retriever tool (coming next!) - -In the next lesson, you will add the final tool: Text2Cypher Retriever for precise database queries. diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/4-text2cypher-retriever/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-agents/lessons/4-text2cypher-retriever/lesson.adoc deleted file mode 100644 index 08271f074..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/4-text2cypher-retriever/lesson.adoc +++ /dev/null @@ -1,85 +0,0 @@ -= All Three Tools -:type: challenge -:order: 4 - -[.slide.discrete] -== Introduction - -You will complete your agent by adding a Text2Cypher query tool as the third tool. - -The agent automatically chooses the best tool for each question type: - -**Schema Tool:** - -- Understanding database structure -- _"What entities exist in the graph?"_ - -**Document Retrieval Tool:** - -- Finding content with company context -- _"What products does Microsoft mention in its documents?"_ - -**Database Query Tool:** - -- Precise queries and counts -- _"How many risk factors does Apple face?"_ -- _"What stock has Microsoft issued?"_ - -[.slide] -== The Final Tool - -Open the notebook: `02_03_text2cypher_agent.ipynb` - -**Your complete agent will now have:** - -- **Tool 1:** Schema Tool (database structure exploration) -- **Tool 2:** Document Retrieval Tool (vector search + graph context) -- **Tool 3:** Database Query Tool (text-to-Cypher for precise queries) ← **NEW!** - -This creates a comprehensive GraphRAG agent that can handle any type of question intelligently. - -[.slide] -== Try These Questions - -**Try these questions to see all three tools in action:** - -- _"What products does Microsoft mention in its financial documents?"_ -- _"How many risk factors does Apple face and what are the top ones?"_ -- _"What stock has Microsoft issued?"_ -- _"What are the main risk factors mentioned in the documents?"_ -- _"Summarize Apple's risk factors and how they relate to other companies"_ - -The agent will choose from the 3 tools available: - -- Graph Exploration (Schema Tool) -- Contextual Search (Vector + Cypher Tool) -- Precise Queries (Text2Cypher Tool) - -**Notice:** The agent intelligently selects the right tool(s) for each question type! Complex questions may invoke multiple tools. - -read::Continue[] - -[.summary] -== Summary - -In this lesson, you completed your GraphRAG agent by adding the Text2Cypher Retriever as the third tool: - -**Key Concepts:** - -- **Complete tool suite:** All three retrievers now available as conversational tools -- **Intelligent routing:** Agent automatically selects best tool(s) for each question -- **Progressive capability:** From simple search to complex multi-tool reasoning - -**What You Built:** - -- Complete GraphRAG agent with three retriever tools -- Conversational interface to all retriever capabilities from previous modules -- Intelligent tool selection for optimal answers - -**Your Journey:** - -- ✅ **Knowledge Graph Creation:** PDF to Knowledge Graph pipeline -- ✅ **Retriever Development:** Built three different retrievers -- ✅ **Agent Tools:** Converted retrievers to conversational agent tools - -**Final Result:** A complete GraphRAG agent that can answer any question using the most appropriate retrieval strategy automatically! diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/5-aura-agents/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-agents/lessons/5-aura-agents/lesson.adoc deleted file mode 100644 index 398f57d1a..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/5-aura-agents/lesson.adoc +++ /dev/null @@ -1,243 +0,0 @@ -= Aura Agents -:type: lesson -:order: 5 -:slides: true - -[.slide.col-2.discrete] -== No-code Agents - -The approach used so far in this module has involved writing code to create agents using Python and LangChain. - -**Neo4j Aura** also provides a **no-code interface** to create agents that demonstrate GraphRAG through **Aura Agents**. - - -[.slide.discrete] -== What are Aura Agents? - -The key features of Aura Agents are: - -* **No-code creation** - Build agents through a web interface -* **GraphRAG integration** - Leverage your knowledge graph structure -* **Multiple tool types** - Combine different query approaches -* **API accessibility** - Make agents available via REST endpoints - - -[.slide.col-2] -== Creating an Agent - -[.col] -==== -To create an agent, select **Agents** from the left hand menu and click **Create**. -You can configure your agent with a: - -* **Name** - A clear, descriptive name for the agent -* **Description** - A brief explanation of the agent's purpose -* **Prompt Instructions** - Instructions passed to the LLM to provide context for the agent and how it should behave -* **Target instance** - The Neo4j Aura instance that the agent will connect to -* **Visibility** - The agent can be made available internally for members of the Aura project, or available externally via an API endpoint. - -==== - -[.col] -==== -**Setting up our EDGAR SEC Filings agent:** - -* **Name:** [copy]#EDGAR SEC Filings Agent# - -* **Description:** - -[source] -An agent that can answer questions about the EDGAR SEC filings. - -* **Prompt Instructions:** - -[source] -You are an expert in the EDGAR SEC filings. You have access to a graph database containing information about companies, executives, financial metrics, and business risks extracted from the EDGAR SEC filings. - -* **Target instance:** _Select Your instance_ - -* **Visibility:** [copy]#Internal# - -==== - - - -[.slide] -== Agent Tool Types - -Aura Agents support three different tool types: - -* **Similarity Search Tools** - Vector-based semantic search -* **Cypher Template Tools** - Predefined queries with parameters -* **Text-to-Cypher Tools** - Natural language to Cypher translation - -These tools are used to provide an LLM with the context required to perform the task at hand. - - -[.slide.col-2] -== Similarity Search Tools - -[.col] -==== -**Purpose:** Find semantically similar content using vector embeddings. - -**Best for:** - -* Document search -* Content discovery -* Finding similar clauses or terms -* Semantic matching - - -**Example Query:** "What are the risks that Apple faces?" - -==== - -[.col] -==== - -**Configuration:** - -* **Name:** [copy]#Risk Finder# -* **Description:** [copy]#Find companies that face a type of risk.# -* **Embedding Provider:** [copy]#OpenAI# -* **Embedding Model:** [copy]#text-embedding-ada-002# -* **Index:** [copy]#chunkEmbeddings# -* **Top K:** [copy]#10# - - - -==== - - - -[.slide.col-2] -== Cypher Template Tools - -[.col] -==== -**Purpose:** Execute predefined Cypher queries with user-provided parameters. - -**Best for:** - -* Common, repeated questions -* Deterministic results with consistent performance -* Complex queries using full Cypher feature set -* Well-defined business logic patterns - -**Connection to Code:** These tools implement the same pattern as direct Cypher queries you've written, but packaged for reuse by the agent. - -**Example Query:** "What companies are owned by **BlackRock Inc.**?" - -==== - -[.col] -==== - -**Configuration:** - -* **Name:** [copy]#Get holdings for Asset Manager# -* **Description:** [copy]#Find all companies owned by a asset manager by their name.# -* **Parameters:** -** [copy]#asset_manager#, a string - [copy]#The full name of the asset manager.# -* **Cypher Template:** -[source, cypher] ----- -MATCH (owner:AssetManager {managerName: $asset_manager}) -RETURN owner.managerName AS managerName, - [ (owner)-[:OWNS]->(company) | company.name] AS owned_companies ----- - -==== - -[.slide.col-2] -== Text-to-Cypher Tools - -[.col] -==== -**Purpose:** Convert natural language questions into Cypher queries dynamically. - -**Best for:** - -* Catch-all for unforseen questions -* Well-defined questions that map directly to the schema -* Ad-hoc analysis -* Questions you haven't created templates for - - -**Example Queries:** - -"Which documents mention the metric 'net loss'?" + -"List the asset managers in ascending order of the number of companies they own shares in." - -==== - -[.col] -==== - -**Configuration:** - -* **Name:** [copy]#Catch-all data tool# -* **Description:** -[source] -A tool that can answer any question about the graph that cannot be specifically answered by the other tools. - -==== - - -[.slide] -== Testing the agent - -Clicking an agent in the left hand pane will reveal a chat interface that you can use to test the agent. - -You can test the tools in sequence. - -1. [copy]#List the top 5 asset managers by name in ascending order.# - Text-to-Cypher tool -2. [copy]#Which companies does "ALLIANCEBERNSTEIN L.P." hold shares in?# - Cypher Template tool -3. [copy]#What are the risks that Apple faces?# - Similarity Search tool - -The agent will choose the best tool for each question. - -The UI will display the time taken to generate each response. - -Expand the **Thought for...** section to view the steps and tool calls taken to generate the answer. - - -[.slide] -== Example Agents - -You can link:https://github.com/neo4j-product-examples/knowledge-graph-agent[find example agents in the Neo4j Aura Agents GitHub repository on GitHub^]. - -* link:https://github.com/neo4j-product-examples/knowledge-graph-agent/blob/main/contract-review.md[Legal - Contract Review Agent] -* link:https://github.com/neo4j-product-examples/knowledge-graph-agent/blob/main/know-your-customer.md[Financial Services - Know Your Customer Agent] - - -[.slide.discrete] -== Continue - -Why not experiment yourself by creating your own Aura Agent using your own Neo4j Aura instance? - -You can link:/courses/aura-fundamentals/[learn more about getting started with Neo4j Aura in our Aura Fundamentals course^]. - -read::Continue[] - - -[.summary] -== Summary - -In this lesson, you learned about Neo4j Aura Agents and how to create no-code agents for your knowledge graph: - -**Key Concepts:** - -* **Aura Agents** are a no-code interface for creating GraphRAG-powered chatbots - -**Tool Types:** - -* **Cypher Template Tools** - Execute predefined queries for known patterns and specific lookups -* **Text-to-Cypher Tools** - Convert natural language to Cypher for flexible exploration -* **Similarity Search Tools** - Use vector embeddings for semantic content discovery - - -**Example Agents:** -* link:https://github.com/neo4j-product-examples/knowledge-graph-agent/blob/main/contract-review.md[Legal - Contract Review Agent] -* link:https://github.com/neo4j-product-examples/knowledge-graph-agent/blob/main/know-your-customer.md[Financial Services - Know Your Customer Agent] diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/6-questions/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-agents/lessons/6-questions/lesson.adoc deleted file mode 100644 index 62948aade..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/6-questions/lesson.adoc +++ /dev/null @@ -1,11 +0,0 @@ -= Questions -:type: conversation -:order: 6 -:optional: true - -Do you have any questions about Neo4j and Generative AI? Why not ask the experimental GraphAcademy agent E.L.A.I.N.E. - -[.summary] -== Summary - -This lesson provides an opportunity to ask questions about Neo4j and Generative AI using the GraphAcademy agent E.L.A.I.N.E. diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/7-congratulations/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-agents/lessons/7-congratulations/lesson.adoc deleted file mode 100644 index d602be88e..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/7-congratulations/lesson.adoc +++ /dev/null @@ -1,54 +0,0 @@ -= Congratulations! -:type: lesson -:order: 7 - -Congratulations! You've successfully completed the **Agents** module of the Neo4j & Generative AI Hands-On Workshop. 🎉 - -Throughout this module, you've learned how to build conversational agents that leverage Neo4j's graph capabilities to provide intelligent, context-aware responses. Let's take a moment to reflect on what you've accomplished. - -== What You've Accomplished - -=== Understanding Agents - -You now understand: - -* **What agents are** - Conversational wrappers around retrievers that analyze user queries and select appropriate tools -* **Agent architecture** - How agents combine retrievers with conversation frameworks to create interactive systems -* **The ReAct framework** - How agents use reasoning and acting cycles to process queries and generate responses - -=== Building Agents with LangChain - -You've learned how to: - -* **Create agents using LangChain** - Build conversational agents that integrate with Neo4j -* **Integrate multiple retrievers** - Combine schema, vector + Cypher, and text-to-Cypher retrievers as agent tools -* **Configure agent behavior** - Set up agents with appropriate prompts and tool descriptions -* **Handle agent responses** - Process and display agent outputs in conversational interfaces - -=== Working with Aura Agents - -You've explored: - -* **No-code agent creation** - Build agents through Neo4j Aura's web interface -* **Agent tool types** - Similarity Search, Cypher Template, and Text-to-Cypher tools -* **Agent configuration** - Set up agents with names, descriptions, and prompt instructions -* **Testing and deployment** - Test agents through the Aura interface and make them available via API - - -=== Additional Resources - -* link:https://neo4j.com/developer/genai-ecosystem/[Neo4j GraphRAG Developer Guide^] -* link:https://github.com/neo4j-product-examples/knowledge-graph-agent[Neo4j Aura Agents Examples on GitHub^] -* link:https://python.langchain.com/docs/get_started/introduction[LangChain Documentation^] - - -read::Complete course![] - - -[.summary] -== Summary - -Congratulations on completing the **Generative AI Hands-On Workshop**! - -You've learned how to build conversational agents that leverage Neo4j's graph capabilities, integrated multiple retriever types as agent tools, and explored both code-based and no-code approaches to agent creation. You're now ready to build your own intelligent conversational applications with Neo4j and GraphRAG. - diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/llms.txt b/asciidoc/courses/workshop-genai/modules/3-agents/llms.txt deleted file mode 100644 index 51542c85f..000000000 --- a/asciidoc/courses/workshop-genai/modules/3-agents/llms.txt +++ /dev/null @@ -1,135 +0,0 @@ -# Module 3: Agents - -## Learning Objectives: - -- Setup your development environment. -- Learn about the different types of retrievers. -- Create a vector + cypher retriever. -- Create a text to Cypher retriever. - -## Key Concepts Covered: - -- **Agents:** Conversational wrappers around retrievers (Schema, Vector+Cypher, Text2Cypher). -- **Tools:** Retrievers wrapped for agent use. -- **Agent Intelligence:** Adds user query analysis, natural language interface, automatic tool selection, and flexible context management. - -Agent Capabilities: - -1. **Schema Tool:** Database schema exploration. -2. **Vector + Cypher Tool:** Contextual relationships. -3. **Text2Cypher Tool:** Precise structured queries. - -Agent Reasoning Process: - -1. Analyze user question. -2. Determine required information type. -3. Select appropriate retriever tool(s). -4. Execute tool and format response. -5. Maintain conversation context. - -What Agents Add: -- Conversational interface. -- Intelligent tool selection based on question type. -- Enhanced retriever functionality. - -Agents make retrievers conversational, enabling natural language interaction and dynamic tool selection for optimal answers. - -## Example Code for Agents - -## Building Conversational Agents with LangChain - -```python -from langchain.chat_models import init_chat_model -from langgraph.prebuilt import create_react_agent -from langchain_core.tools import tool -from langchain_neo4j import Neo4jGraph, Neo4jVector -from langchain_openai import OpenAIEmbeddings - -# Initialize LLM for agent -model = init_chat_model("gpt-4o", model_provider="openai") - -# Connect to Neo4j for agent operations -graph = Neo4jGraph( - url=os.getenv("NEO4J_URI"), - username=os.getenv("NEO4J_USERNAME"), - password=os.getenv("NEO4J_PASSWORD"), -) - -# Tool 1: Schema introspection -@tool("Get-graph-database-schema") -def get_schema(): - """Get the schema of the graph database.""" - return graph.schema - -# Tool 2: Document retrieval with graph context -embedding_model = OpenAIEmbeddings(model="text-embedding-ada-002") - -# Retrieval query for contextual information -retrieval_query = """ -MATCH (node)-[:FROM_DOCUMENT]-(doc:Document)-[:FILED]-(company:Company) -RETURN - node.text as text, - score, - { - company: company.name, - risks: [ (company:Company)-[:FACES_RISK]->(risk:RiskFactor) | risk.name ] - } AS metadata -ORDER BY score DESC -""" - -# Create vector index for document search -chunk_vector = Neo4jVector.from_existing_index( - embedding_model, - graph=graph, - index_name="chunkEmbeddings", - embedding_node_property="embedding", - text_node_property="text", - retrieval_query=retrieval_query, -) - -@tool("Retrieve-financial-documents") -def retrieve_docs(query: str): - """Find details about companies in their financial documents.""" - context = chunk_vector.similarity_search(query, k=3) - return context - -# Tool 3: Text2Cypher for structured queries -@tool("Execute-cypher-query") -def execute_cypher(natural_language_query: str): - """Convert natural language to Cypher and execute against the graph.""" - # Use Text2CypherRetriever to generate Cypher - text2cypher = Text2CypherRetriever(driver=driver, llm=llm, neo4j_schema=schema) - result = text2cypher.get_search_results(natural_language_query) - - # Execute the generated Cypher - cypher_query = result.metadata["cypher"] - execution_result = driver.execute_query(cypher_query) - - return { - "generated_cypher": cypher_query, - "results": [dict(record) for record in execution_result.records] - } - -# Create agent with all tools -tools = [get_schema, retrieve_docs, execute_cypher] -agent = create_react_agent(model, tools) - - -"""Run agent conversation with streaming output""" -print(f"Query: {query}") -print("Agent Response:") - -for step in agent.stream( - {"messages": [{"role": "user", "content": query}]}, - stream_mode="values", -): - step["messages"][-1].pretty_print() - -# Example conversations - -# "Summarize the schema of the graph database." -# "What risk factors are mentioned in Apple's financial documents?" -# "How many companies does BlackRock own?" -# "Which asset managers are most affected by banking regulations?" - -``` diff --git a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/apple-embedding.adoc b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/apple-embedding.adoc new file mode 100644 index 000000000..2d135976e --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/apple-embedding.adoc @@ -0,0 +1 @@ +`0.0077788467, -0.02306925, -0.007360777, -0.027743412, -0.0045747845, 0.01289164, -0.021863015, -0.008587573, 0.01892967, -0.029854324, -0.0027962727, 0.020108491, -0.004530236, 0.009129008, -0.021451797, 0.002030382, 0.030813828, 9.744976e-05, 0.0019172973, -0.02568733, -0.020985752, -0.008066699, 0.02134214, -0.01222684, 0.0009980568, 0.005105939, 0.009999417, -0.000107408916, 0.015845545, -0.012980737, 0.020574536, -0.016160812, -0.018518453, 0.005263572, -0.019286057, -0.009293495, -0.012096621, -0.008854863, -0.005753605, -0.006157968, 0.010540851, 0.007724018, -0.0065554776, 0.00052944134, -0.023453051, 0.011089141, -0.021671113, -0.00061425474, -0.012754567, 0.015489157, -0.0054520466, -0.0020355221, -0.015050527, -0.0052944133, -0.0028082666, 0.0027431573, -0.019450543, 0.0063807103, -0.010725899, 0.0049243183, 0.005266999, 0.01513277, -0.027921606, 0.0055754115, -0.009183837, 0.00380718, -0.013624975, -0.0084710615, 0.012905347, 0.015667351, 0.033363372, 0.013268588, 0.014036193, 0.0063464423, 0.004454846, 0.0014820931, -0.03396649, -0.0062779062, -0.00314238, 0.01818948, 0.0075389706, -0.02637269, 0.009574492, 0.024974553, 0.024823774, 0.009882905, -0.021657405, 0.010109074, -0.007970748, 0.0028887964, 0.011849891, 0.0054726074, 0.0078336755, 0.016448664, -0.026975807, 0.016599443, -0.012713445, 0.026345275, 0.004667308, -0.03736588, 0.0009834929, 0.006089432, -0.028730331, -0.011198798, -0.020396343, 0.0019738395, 0.012459862, -0.003738644, 0.015448036, -0.019902883, 0.0064389664, 0.00926608, 0.021945259, -0.051648803, -0.016448664, -0.01744929, -0.009499103, 0.0021743076, -0.022795105, -0.035556525, 0.034021318, 0.025892938, 0.038407627, -0.008752059, 0.013446782, -0.0032640316, -0.01779197, -0.009567639, -0.0011205651, -0.013947096, 0.04707059, 0.008100967, 0.019491665, 0.016448664, -0.017846799, 0.019573908, -0.02223311, 0.015489157, -0.0057433248, -0.033445615, 0.010554559, 0.014694139, -0.01239818, 0.0070660715, -0.011226213, 0.023686076, 0.02360383, 0.022753984, -0.005215597, 0.0070866323, 0.010753313, -0.024110999, -0.003909984, 0.005462327, 0.0017459571, 0.0057981536, -0.016983245, -0.0021777344, -0.0039373985, 0.003772912, -0.006634294, 0.008614987, -0.006579465, -0.008841156, 0.0017699447, 0.024412557, 0.011856745, 0.013522171, -0.016051153, -0.00951281, -0.016133398, 0.004177275, -0.010691631, 0.01296703, 0.00886857, 0.016078569, 0.004434285, 0.012734006, -0.0067850733, 0.0006545197, 0.0011317023, -0.0046090526, 0.023096664, 0.01946425, -0.016640564, 0.014899747, 0.004701576, -0.010568266, 0.005530863, -0.019231228, 0.032047477, 0.02041005, -0.00397852, -0.014419994, -0.684703, -0.020643072, 0.00603803, -0.00033582686, 0.033993904, 0.03188299, 0.022287939, -0.0012739147, -0.018381381, -0.010396926, 0.0018042127, 0.0032863058, 0.00886857, 0.009519664, 5.9969083e-05, -0.022287939, 0.016284177, -0.023658661, -0.010431194, 0.02489231, -0.012261108, -0.014351458, -0.008841156, -0.029717252, 0.0036564006, 0.019628737, 0.019957712, -0.014022485, -0.019560201, 0.021767065, -0.008238039, -0.00048146606, 0.027291073, 0.0060140425, 0.037393294, 0.0072031436, -0.04416466, 0.013940242, 0.009663589, 0.03415839, -0.02065678, -0.020423757, 0.013563293, -0.0065246364, -0.015872959, -0.0009278074, 0.013254881, 0.005637094, -0.00071491714, -0.025344647, 0.03484375, 4.8269758e-05, 0.010787581, 0.008409379, 0.021780772, 0.008738352, 0.023124078, -0.008745206, -0.001522358, 0.016448664, -0.022370182, -0.0034011037, -0.034734093, -0.02523499, -0.020547122, 0.010636802, -0.009190691, 0.0076417746, 0.005434912, -0.01951908, 0.021492919, 0.022438718, -0.02306925, -0.007059218, -0.0031115387, 0.01705178, 0.023576416, -0.00148809, -0.027071757, 0.0047461246, -0.0023867695, -0.009389445, 0.0049414523, -0.027537804, 0.03158143, 0.0054246318, -0.024042463, -0.011301602, 0.013926535, -0.02371349, 0.034130976, 0.023932805, 0.0028682356, -0.019148985, -0.014570774, -0.0053423885, -0.032376453, -0.019244935, -0.0021434664, -0.019930298, 0.016530907, -0.0056302403, 0.00943742, 0.0067679393, 0.024028756, 0.013474196, -0.019477958, 0.014570774, 0.03673535, -0.020437464, -0.0076623354, -0.012631202, 0.008587573, -0.00869723, 0.025824402, -0.03125246, 0.010629948, -0.00761436, 0.021067996, -0.032952156, 0.025399476, -0.00438631, 0.011863599, 0.003027582, -0.01059568, 0.018463625, -0.0045405165, -0.030978315, -0.0034884873, -0.0059420797, 0.008018723, 0.0052190237, 0.007299094, -0.006250492, 0.02390539, 0.0004050055, 0.009965149, -0.020670487, 0.011993817, -0.02508421, -0.016969537, 0.007991308, 0.000463047, -0.00052258774, 0.0012704879, -0.01232279, -0.028511016, -0.016887294, -0.010862971, 0.0052361577, -0.008861717, 0.005530863, -0.0017579509, 0.021506626, 0.022589497, -0.015900373, 0.0028596686, -0.0233571, 0.0009406579, 0.016229348, 0.010205025, 0.028182043, -0.009026204, 0.0042218235, 0.0150368195, -0.035803255, 0.0068193413, 0.0018727488, -0.017846799, -0.029251205, 0.01340566, -0.016887294, -0.008190064, 0.008286014, -0.014748968, 0.0039888006, -0.0149682835, 0.007477288, 0.01015705, 0.002385056, 0.0054314854, 0.008861717, 0.0021023448, 0.0016602869, 0.030896071, 0.020053662, 0.0016157385, 0.04767371, -0.020218149, 0.0008228615, -0.013467343, 0.019820638, 0.0053252545, 0.0016525766, -0.013816877, -0.008477915, -0.0059592137, 0.013398807, -0.0009586486, 0.01150721, 0.023973927, -0.0029007902, 0.011246773, -0.0022873923, 0.013775756, -0.03292474, 0.003995654, -0.005369803, 0.011294749, 0.03459702, -0.0022771119, -0.028593259, -0.0066068796, -0.020451171, 0.012357058, 0.034185804, 0.002359355, 0.012185718, 0.0009329476, -0.007984455, 0.0016688539, -0.0047666854, 0.00047204236, -0.0036769616, -0.0074567273, 0.0034833471, 0.010115928, 0.03328113, -0.003368549, -0.026071131, -0.0035535966, -0.004986001, -0.00934147, -0.0125215445, 0.004143007, 0.014872333, 0.004146434, -0.010979483, 0.02223311, -0.0009552218, -0.0140499, 0.014502238, 0.026687955, -0.0020286685, 0.007621214, -0.0132617345, 0.045946598, 0.008169503, -0.004143007, -0.0022634047, -0.003240044, -0.025769573, -0.030759, 0.010479169, -0.00090467645, -0.024618166, 0.02350788, 0.022397596, 0.022877349, 0.0408201, 0.0032965862, -0.0034679265, -0.012946469, 0.0059763477, -0.020286685, -0.00019372156, -0.001281625, -0.013672951, 0.0028082666, 0.004146434, 0.013316563, -0.0002972753, 0.024933431, -0.010218732, 0.0067473785, 0.00096807233, -0.017600069, 0.0047495514, 0.0053458153, -0.012453008, -0.021698527, -0.02745556, 0.009060472, 0.003961386, -0.006867317, 0.008950814, -0.028949646, -0.0059455065, -0.005777593, 0.014748968, -0.0032948728, 0.021629991, 0.008320282, 0.020094784, 0.020423757, -0.01380317, 0.031362116, -0.0109863365, 0.005198463, -0.0062025166, 0.00017980016, 0.004968867, -0.019477958, -0.003947679, 0.03942196, -0.0048317946, -0.00595236, -0.024357729, 0.012679177, -0.002345648, -0.025413183, 0.0046227598, -0.015996324, -0.01809353, -0.0029864605, 0.016558321, -0.0055034487, -0.017161438, 0.04071044, -0.0025855242, -0.012644909, -0.01788792, -0.014255508, 0.007943333, 0.06513671, 0.02542689, -0.0109520685, 0.023727197, -0.0055925455, 0.027674876, -0.011945842, -0.006791927, 0.029059304, -0.00075818057, -0.0014101302, -0.008806888, 0.014776383, -0.018449917, 0.023891684, 0.011294749, -0.002393623, -0.020135906, -0.0056816423, -0.008203771, 0.00051230734, -0.014598188, 0.010650509, 0.0055205827, 0.01720256, 0.0057638856, 0.018751476, 0.029196376, -0.005195036, -0.024535922, -0.0060825786, -0.006243638, 0.015297256, -0.006226504, -0.001954992, 0.022301646, 0.017161438, 0.015955202, 0.0059489333, 0.0052601453, 0.012178864, 0.010616241, -0.0037249369, -0.02637269, 0.007792554, -0.011459235, -0.014611895, 0.032568354, -0.0012088054, -0.013810024, 0.024672994, 0.01627047, 0.0050511104, -0.0055891187, -0.00022102891, 0.026729077, -0.0074704345, 0.0031526603, 0.010307829, -0.025659915, -0.0055377167, -0.019998834, 0.0032880192, 0.014502238, -0.0012936188, -0.005650801, -0.011376992, -0.018669233, -0.0068536093, -0.011616868, -0.000986063, -0.026358983, -0.011390699, 0.0077308714, 0.033144057, 0.008217478, 0.020889802, 0.0057261907, 0.0069838283, 0.03489858, -0.008306575, -0.014803797, 0.004742698, -0.014474823, -0.022973299, 0.019094156, -0.001972126, -0.013145223, 0.011671697, 0.008649255, 0.013755195, -0.0060448837, 0.02958018, 0.0045028217, -0.0120897675, -0.00046004856, 0.017833091, 0.011986963, -0.019327179, -0.011829331, 0.00795704, -0.010410633, -0.0026334994, -0.008005016, 0.014666725, 0.014653017, 0.019738395, 0.012535252, -0.025276111, 0.0037146565, 0.02760634, -0.004441139, 0.014831211, -0.0109863365, 0.01222684, 0.0138305845, -0.008786327, -0.0074156057, -0.0052190237, -0.015900373, -0.02099946, -0.04997652, 0.014255508, 0.02094463, -0.014104729, 0.020464879, -0.004986001, -0.007970748, -0.020889802, 0.012219986, -0.008710938, -0.0025820974, -0.0013553012, -0.013857999, -0.033555273, -0.027016928, -0.01646237, 0.020862387, 0.0009629321, -0.017435582, -0.020272978, 0.018271724, 0.008155796, -0.024878602, -0.02834653, -0.049181502, 0.011431821, 0.003176648, 0.0035056213, 0.02952535, -0.015283549, 0.017572654, -0.006905012, 0.014214386, -0.026208203, -0.022164574, -0.028428772, 0.00012647052, 0.03829797, 0.018258017, 0.020423757, 0.014077314, 0.016640564, -0.00020646499, 0.0044616996, -0.008587573, 0.0029898873, 0.012219986, -0.018518453, 0.013679804, 0.014557066, 0.015859252, 0.0027071757, 0.012919054, -0.0039750934, 0.012788836, 0.0042560915, -0.0023353675, -0.027990142, -0.005404071, -0.004451419, -0.009444274, -0.019848052, 0.01008166, 0.0092455195, -0.024316607, 0.019162692, 0.009087887, 0.0017819385, -0.02922379, 0.025043089, -0.009972002, 0.021328432, 0.01141126, 0.0053903637, -0.026701663, -0.006685696, 0.008827449, -0.007477288, 0.015146477, -0.0068775974, 0.007792554, -0.014515945, -0.0074361665, 0.0058358484, 0.041149072, -0.025591379, -0.022356475, 0.0068570366, -0.04188926, -0.0053766565, -0.006411552, -0.009663589, -0.016092276, 0.001164257, 0.013556439, 9.952459e-06, 0.0003868006, -0.0058358484, -0.017367046, 0.0061682486, 0.020135906, 0.029991396, 0.0025769572, 0.035227552, 0.021602577, -0.0034576461, -0.019573908, 0.0022548377, -0.009533371, -0.011610014, 0.026454933, 0.01488604, 0.012315936, -0.007209997, -0.0028511016, 0.0045370897, -0.010239293, -0.0096430285, 0.035008237, 0.01769602, 0.016188227, -0.027976435, -0.031115387, -0.01946425, 0.026729077, -0.0048352215, -0.002503281, -0.015091648, -0.03829797, -0.01116453, 0.026331568, -0.01232279, 0.019505372, 0.004180702, -0.013912828, 0.01513277, -0.011849891, -0.02489231, 0.00088068884, -0.0026095118, 0.02740073, -0.02405617, 0.018203188, -0.0012859085, 0.005318401, -0.006349869, -0.007758286, 0.004674162, 0.03169109, -0.02785307, -0.0008571296, 0.0026369262, 0.015077941, 0.010623095, -0.012103475, -0.022260524, -0.009204398, -0.0028733758, -0.027976435, 0.010013124, 0.0077788467, -0.021013167, -0.011150823, 0.008244893, -0.006247065, -0.0062402114, 0.0027979861, 0.01372778, -0.0007671759, -0.013426221, 0.016928416, -0.0016191653, 0.0033668356, 0.026975807, -0.0121240355, -0.010705338, 0.023768319, -0.020793851, 0.00081129605, 0.0079022115, 0.0023096665, -0.024028756, 0.009937734, -0.0037592049, -0.0038483017, 0.020204442, -0.019546494, -0.012267961, -0.004338335, 0.0074361665, 0.016201934, 0.0024775798, 0.0061339806, 0.013248027, -0.008532744, -0.0019669859, -0.012713445, -0.030183297, 7.549679e-05, -0.012473569, -0.002210289, 0.02075273, -0.003116679, -0.0025872376, -0.003793473, 0.007299094, 0.0136592435, -0.024522215, -0.03391166, -0.021410676, 0.020506, -0.01463931, 0.00017551666, -0.020643072, -0.002201722, -0.022109745, 0.003632413, -0.0009286641, 0.00044891142, 0.0027191697, 0.014666725, 0.013391953, 0.02386427, -0.009039911, 0.0021348994, -0.013837438, -0.021410676, -0.021602577, -0.0059146653, 0.0048729163, 0.017983872, 0.01961503, -0.021917844, -0.028839989, -0.00808726, -0.03983318, -0.03254094, -0.005739898, 0.013248027, -0.00070206664, 0.006140834, 0.010013124, 0.0055411435, 0.0063841376, 0.016791344, -0.047564052, -0.0010725899, 0.004989428, -0.020917216, 0.022370182, -0.022959592, -0.020451171, -0.023233736, 0.001032325, 0.008094113, 0.0010777301, 0.01116453, 0.00038637224, -0.0033188604, -0.00886857, 0.022150867, 0.006394418, -0.00013310995, 0.009300348, -0.01883372, -0.009553932, 0.0032109162, -0.0007637491, -0.023727197, 0.0063258815, 0.009122155, 0.008327136, 0.008066699, 0.0013090394, -0.0051539144, 0.00975954, -0.020026248, -0.005873543, -0.011308456, -0.018765183, 0.014310337, -0.024412557, -0.017942749, -0.012535252, 0.010342097, -0.0243029, -0.010198171, 0.026838735, -0.0081078205, -0.0144337015, -0.010568266, 0.022301646, -0.03489858, -0.008066699, -0.0028802294, -0.023110371, -0.024193242, 0.03829797, 0.0029898873, -0.008361404, -0.0076280674, 0.014611895, 0.009560785, -0.0039716666, -0.004297213, 0.013446782, -0.022507254, -0.013337124, 0.008423086, -0.018600697, -0.023850562, 0.003947679, 0.0113838455, -0.0022788253, -0.0041909823, 0.20747247, -0.007059218, 0.016599443, 0.03988801, -0.0005011702, -0.0007568955, 0.015543986, 0.013145223, -0.0038825697, 0.0050339764, -0.014817504, 0.011767647, -0.015242428, 0.007299094, 0.010890386, -0.007580092, -0.03489858, -0.0089713745, -0.016393835, -0.0060825786, 0.023658661, -0.011459235, -0.011610014, -0.011514064, 0.02897706, 0.003108112, -0.02927862, 0.009889758, 0.018641818, 0.010150196, -0.00020453741, -0.004146434, -0.0039339717, -0.002090351, -0.008361404, -0.0001941499, -0.0075389706, 0.024165828, 0.02745556, 0.026920978, -0.0015789003, -0.00090638985, -0.007888504, -0.0035570234, -0.028127214, 0.0142966295, -0.008457354, -0.007360777, 0.023041835, 0.021753358, -0.047838196, -0.003755778, 0.025221283, 0.025111625, 0.0014692425, 0.0071346075, 0.0026900417, 0.012727153, -0.00223599, -0.0020423757, -0.00744302, 0.018998206, 0.0012841951, 0.019094156, -0.024330314, -0.0043074936, -0.034240633, 0.005839275, -0.009300348, -0.008738352, 0.0038654357, -0.020739023, -0.007545824, 0.00035017662, -0.030128468, -0.0408201, 0.024083585, 0.026098546, 0.014598188, 0.022493547, -0.006867317, 0.009252373, -0.006140834, -0.0022942459, -0.006147688, -0.016667979, 0.03223938, -0.00544862, -0.0058872504, -0.003844875, -0.005582265, -0.015448036, 0.004454846, -0.02603001, 0.0056987763, 0.017421875, -0.015790716, 0.01946425, -0.01042434, -0.00070120994, -0.0040641907, -0.017956456, 0.01769602, -0.010095367, -0.008080406, 0.024069877, 0.0029898873, 0.009403152, 0.0057913, 0.006870744, -0.012809397, -0.011424967, 0.01256952, -0.011178237, 0.033829417, 0.009725272, -0.002683188, -0.029086718, 0.017956456, -0.0010940074, 0.0075526778, -0.01868294, 0.0020612231, 0.017517826, -0.01439258, -0.021150239, -0.020780144, 0.00021256898, 0.0167091, -0.028483601, -0.003478207, -0.0048043802, 0.004454846, 0.0034936275, 0.008752059, 0.0024930006, 0.004828368, -0.017654898, -0.0015009405, -0.009320909, 0.0013458775, 0.013816877, 0.020560829, 0.007319655, 0.0035433162, -0.0028168336, 0.002784279, -0.00032833073, -0.023343394, -0.021314725, -0.018792598, 4.789495e-05, -0.018792598, -0.006689123, 0.04213599, -0.01769602, -0.034076147, -0.027592633, -0.01084241, 0.013734634, -0.022753984, -0.01479009, 0.023110371, -0.011795062, -0.04150546, -0.007340216, -0.18016769, 0.027565219, -0.0068775974, 0.0007757429, 0.018299138, 0.0038003265, 0.01676393, 0.009807515, -0.0063601495, 0.0019224375, 0.021259896, 0.0033102934, -0.028922232, -0.011054873, 0.024015049, -0.011596307, -0.004824941, 0.015996324, 0.025166454, 0.011123409, 0.01642125, -0.010047392, 0.01414585, -0.019957712, 0.009999417, 0.023453051, -0.025673622, 0.0014469683, -0.012007524, -0.016284177, -0.014159557, -0.015297256, 0.011260481, 0.0115826, 0.0128299575, -0.007621214, -0.014022485, -0.012363912, 0.0014512518, 0.023644954, 0.02158887, 0.01971098, 0.0078336755, 0.004705003, 0.0062607722, 0.020190734, 0.02006737, -0.019107863, 0.011952695, -0.019327179, 0.019628737, -0.013556439, -0.0066137332, 0.027825655, 0.00047289906, 0.009649882, -0.015406914, -0.0034216645, -0.020684194, -0.0065554776, -0.01266547, -0.010753313, 0.02016332, -0.018806305, -0.0072579724, -0.016818758, -0.013762048, -0.0081078205, -0.032952156, 0.01661315, -0.012219986, -0.011514064, 0.03169109, -0.024261778, 0.0005153058, -0.0007594656, -0.01818948, 0.026098546, 0.007648628, -0.0021006314, -0.005918092, 0.02143809, -0.017380754, -0.00031376682, -0.0059455065, 0.012219986, -0.0068604634, 0.004283506, -0.027291073, -0.030238125, 0.017750848, -0.019327179, -0.003810607, -0.021602577, 0.021465505, 0.036707934, 0.011801915, 0.004382883, -0.0028151202, 0.0036461202, -0.0018761756, -0.0021880148, -0.030046225, 0.015763301, 0.03563877, -0.0028408212, -0.006127127, 0.01971098, 0.018902255, -0.0025152748, -0.002325087, 0.020889802, 0.031142801, 0.028894817, -0.007429313, 0.0017313932, 0.011438674, -0.025509134, 0.005842702, -0.011856745, 0.025056796, 0.0007873084, 0.019546494, 0.014611895, -0.005088805, -0.011116555, -0.09907578, -0.04421949, 0.009972002, 0.0136935115, 0.015297256, 0.025015675, -0.005164195, 0.022959592, -0.012487276, 0.038709186, 0.0028562418, -0.021396969, -0.00061596814, 0.0077308714, 0.0115826, -0.00037137998, -0.027674876, -0.011555186, -0.022630619, 0.013638683, -0.013851145, -0.016873587, -0.010444901, -0.019217521, -8.918393e-07, 0.00072348415, -0.035254966, 0.028894817, 0.03662569, 0.007038657, 0.030238125, -0.02153404, 0.021301018, -0.038078655, 0.0019464251, 0.007991308, -0.018724062, 0.00628476, 0.019930298, -0.028593259, -0.001396423, 0.0003814462, 0.015516572, -0.03001881, 0.010773874, -0.02213716, 0.00027500108, 0.0010991476, 0.012007524, -0.013241174, -0.013097248, 0.018710354, -0.0021211922, -0.014735261, 0.0070146695, -0.020862387, -0.014063607, 0.0059832013, -0.018737769, 0.004228677, 0.006229931, -0.019628737, -0.00041314415, 0.013556439, 0.022260524, 0.0019738395, -0.0149682835, -0.001852188, 0.004776966, -0.018614404, -0.0011445528, -0.012219986, -0.02681132, 0.0461385, -0.021136532, -0.0007084919, -0.019724688, -0.020204442, 0.01365239, -0.032869913, -0.0044308584, -0.030594513, 0.0014675291, -0.008190064, 0.012377619, -0.0052258773, -0.003896277, 0.0078062615, 0.0057124835, -0.034624435, 0.03328113, 0.0022394168, 0.025892938, -0.011925281, -0.025097918, -0.002141753, -0.011445528, -0.0019190107, 0.032020062, -0.01739446, -0.0038174605, -0.0042526647, -0.08059845, 0.021109117, -0.002631786, -0.0049071843, 0.0144337015, 0.0035673038, 0.015982617, -0.036762763, -0.0062402114, -0.0041361535, -0.022041209, 0.010760167, -0.0057810196, -0.010019978, -0.00223599, -0.024878602, 0.019532787, 0.005465754, 0.030621927, 0.016010031, 0.012761421, 0.011308456, 0.019286057, -0.001992687, -0.013028712, 0.00768975, -0.016654272, 0.0029367716, 0.0019464251, -0.020423757, 0.00803243, -0.006428686, -0.014419994, 0.04268428, -0.0003623846, -0.008190064, -0.0047975266, 0.0011676837, -0.00454737, 0.006805634, -0.0066582817, -0.01710661, 0.01788792, -0.018011287, -0.011013751, -0.012014378, -0.011246773, 0.011692258, 0.016476078, -0.013056126, 0.015955202, 0.025796987, -0.016325299, -0.017682312, -0.017983872, -0.054691803, 0.023987634, -0.0020166747, -0.0060311765, -0.016476078, -0.0011616868, 0.033198886, 0.015763301, -0.0074498737, 0.008251746, -0.008477915, -0.016489785, -0.015173892, 0.03234904, -0.019985126, 0.000744045, -0.021410676, 0.016791344, -0.015242428, -0.002912784, -0.0014058467, -0.004824941, -0.0035673038, -0.008320282, 0.025344647, 0.013076687, -0.004735844, -0.034130976, 0.017312218, 0.016832465, 0.017380754, -0.02508421, -0.00808726, 0.013522171, 0.012439301, 0.014707847, 0.017147731, 0.006517783, -0.0010854404, 0.013782609, 0.008512183, -0.009451128, -0.014378873, 0.010636802, 0.023891684, 0.01809353, -0.012946469, -0.014337751, -0.011644282, -0.0018453344, 0.012069207, 0.0038585821, -0.020478586, -0.011843038, 0.02208233, 0.022109745, 0.005753605, -0.005650801, 0.022904763, -0.02119136, 0.017462997, -0.0059283725, -0.008662962, -0.015585108, 0.035227552, 0.05249865, 0.007634921, 0.015489157, -0.012781982, 0.021026874, 0.013741488, 0.0053423885, -0.024330314, 0.018724062, -0.008450501, 0.008025576, -0.01824431, -0.014762675, -0.014173265, -0.020793851, -0.0004604769, 0.014214386, 0.020670487, -0.019656152, 0.072593436, -0.0074224593, -0.0040539103, 0.00272431, 0.006336162, 0.021013167, 0.006805634, 0.016681686, -0.019203814, -0.009848637, 0.012857372, 0.015077941, 0.011959549, -0.017929042, -0.009320909, -0.0033120068, -0.023192614, 0.008985083, -0.022603204, 0.0060003353, 0.025207575, 0.02445368, 0.008827449, -0.006007189, -0.027647462, -0.010602534, 0.011150823, -0.0067131105, -0.0045884917, -0.041286144, 0.019395715, -0.006212797, -0.053293668, -0.01912157, 0.018326553, -0.016530907, -0.011198798, 0.0027448707, 0.027784534, -0.0013390239, -0.024508508, 0.023754612, -0.021259896, -0.017257389, 0.022027502, -0.012103475, -0.013535879, -0.015667351, 0.0061511146 diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/3d-vector.svg b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/3d-vector.svg similarity index 100% rename from asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/3d-vector.svg rename to asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/3d-vector.svg diff --git a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/llm-rag-create-vector.svg b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/llm-rag-create-vector.svg new file mode 100644 index 000000000..ea6fba21d --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/llm-rag-create-vector.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/llm-rag-vector-process.svg b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/llm-rag-vector-process.svg new file mode 100644 index 000000000..9a8ffa067 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/llm-rag-vector-process.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/vector-distance.svg b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/vector-distance.svg similarity index 100% rename from asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/3-vectors/images/vector-distance.svg rename to asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/images/vector-distance.svg diff --git a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/lesson.adoc new file mode 100644 index 000000000..086ad7893 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/1-vectors/lesson.adoc @@ -0,0 +1,157 @@ += Vector RAG +:order: 2 +:type: lesson + +[.slide.discrete] +== Vector RAG +You previously learned about **Retrieval Augmented Generation** (RAG) and the role of retrievers in finding relevant information. + +One of the challenges of RAG is understanding what the user is asking for and finding the correct information to pass to the LLM. + +In this lesson, you will learn about semantic search and how vector indexes can help you find relevant information from a user's question. + +[.slide] +== Semantic Search + +Semantic search aims to understand search phrases' intent and contextual meaning, rather than focusing on individual keywords. + +Traditional keyword search often depends on exact-match keywords or proximity-based algorithms that find similar words. + +For example, if you input "apple" in a traditional search, you might predominantly get results about the fruit. + +However, in a semantic search, the engine tries to gauge the context: Are you searching about the fruit, the tech company, or something else? + +The results are tailored based on the term and the perceived intent. + +[.slide.col-2] +== Vectors + +[.col] +==== +You can represent data as **vectors** to perform semantic search. + +Vectors are simply a list of numbers. +For example, the vector `[1, 2, 3]` is a list of three numbers and could represent a point in three-dimensional space. + +You can use vectors to represent many different types of data, including text, images, and audio. + +The number of dimensions in a vector is called the **dimensionality** of the vector. +A vector with three numbers has a dimensionality of 3. +Higher dimensionality captures more fine-grained meaning but is more expensive computationally and similarly, lower dimensionality is faster and cheaper to compute, but offers less nuance. +==== + +[.col] +image::images/3d-vector.svg["A diagram showing a 3d representation of the x,y,z coordinates 1,1,1 and 1,2,3", width=95%] + +[.slide] +== Embeddings + +When referring to vectors in the context of machine learning and NLP, the term "embedding" is typically used. Embeddings are numerical translations of data objects, for example images, text, or audio, represented as vectors. +This way, LLM algorithms will be able to compare two different text paragraphs by comparing their numerical representations. + +Each dimension in a vector can represent a particular semantic aspect of the word or phrase. +When multiple dimensions are combined, they can convey the overall meaning of the word or phrase. + +For example, the word "apple" might be represented by an embedding with the following dimensions: + +* fruit +* technology +* color +* taste +* shape + +When applied in a search context, the vector for "apple" can be compared to the vectors for other words or phrases to determine the most relevant results. + +You can create embeddings in various ways, but one of the most common methods is to use an *embedding model*. + +[.transcript-only] +==== +For example, the embedding for the word "apple" is `0.0077788467, -0.02306925, -0.007360777, -0.027743412, -0.0045747845, 0.01289164, -0.021863015, -0.008587573, 0.01892967, -0.029854324, -0.0027962727, 0.020108491, -0.004530236, 0.009129008,` ... and so on. + +[%collapsible] +.Reveal the completed embeddings for the word "apple"! +===== +[source] +---- +include::apple-embedding.adoc[] +---- +===== + +[NOTE] +.Embedding models +===== +OpenAI's `text-embedding-ada-002` embedding model created this embedding - a vector of 1,536 dimensions. + +LLM providers typically expose API endpoints that convert a _chunk_ of text into a vector embedding. +Depending on the provider, the shape and size of the vector may differ. +===== +==== + +[.slide.discrete] +== Embeddings + +While it is possible to create embeddings for individual words, embedding entire sentences or paragraphs is more common, as the meaning of a word can change based on its context. + +For example, the word _bank_ will have a different vector in _river bank_ than in _savings bank_. + +Semantic search systems can use these contextual embeddings to understand user intent. + +Embeddings can represent more than just text. +They can also represent entire documents, images, audio, or other data types. + +[.slide.col-2] +== How are vectors used in semantic search? + +[.col] +==== +You can use the _distance_ or _angle_ between vectors to gauge the semantic similarity between words or phrases. + +Words with similar meanings or contexts will have vectors that are close together, while unrelated words will be farther apart. +==== + +[.col] +image::images/vector-distance.svg[A 3 dimensional chart illustrating the distance between vectors. The vectors are for the words "apple" and "fruit", width=90%] + +[.slide] +== RAG + +Semantic search is employed in vector-based RAG to find contextually relevant results for a user's question. + +An embedding model is used to create a vector representation of the source data. + +image::images/llm-rag-create-vector.svg["A diagram showing data being processed by an embedding model to create a vector representation of the data. The data is then stored in a vector index."] + +[.slide.discrete.col-2] +== RAG + +[.col] +==== +When a user submits a question, the system: + +. Creates an embedding of the question. +. Compares the question vector to the vectors of the indexed data. +. The results are scored based on their similarity. +. The most relevant results are used as context for the LLM. +==== + +[.col] +==== +image::images/llm-rag-vector-process.svg[A diagram showing a user question being processed by an embedding model to create a vector representation of the question. The question vector is then compared to the vectors of the indexed data. The most relevant results are used as context for the LLM.] +==== + +[.transcript-only] +==== +[TIP] +.Learn more about vectors and embeddings +===== +You can learn more about vectors, embeddings, and semantic search in the GraphAcademy course link:https://graphacademy.neo4j.com/courses/llm-vectors-unstructured/[Introduction to Vector Indexes and Unstructured Data^] +===== +==== + + +[.summary] +== Lesson Summary + +In this lesson, you learned about vectors and embeddings, and how they can be used in RAG to find relevant information. + +In the next lesson, you will use a vector index in Neo4j to find relevant data. diff --git a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/2-vector-cypher-retriever/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/2-vector-cypher-retriever/lesson.adoc new file mode 100644 index 000000000..50481536d --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/2-vector-cypher-retriever/lesson.adoc @@ -0,0 +1,194 @@ += Vector + Cypher retriever +:type: lesson +:order: 2 +:branch: new-workshop + +[.slide] +== Overview + +The chunks in the knowledge graph include vector embeddings that allow for similarity search based on vector distance. + +In this lesson, you will create a vector retriever that uses these embeddings to find the most relevant chunks for a given query. + +The retriever can then use the structured and unstructured data in the knowledge graph to provide additional context. + +[.slide] +== Create the Vector Index + +You will need to create a vector index on the `Chunk` nodes `embedding` properties: + +[source, cypher] +---- +CREATE VECTOR INDEX chunkEmbedding IF NOT EXISTS +FOR (n:Chunk) +ON n.embedding +OPTIONS {indexConfig: { + `vector.dimensions`: 1536, + `vector.similarity_function`: 'cosine' +}}; +---- + +A vector index named `chunkEmbedding` will be created for nodes with a `Chunk` label, indexing the `embedding` property. +The index is configured to 1536 dimensions (as provided by the `text-embedding-ada-002` embedding model) and use cosine similarity for distance calculations. + +[.slide] +== Search the Vector Index + +You can search the vector index by creating an embedding for a search term: + +[source, cypher] +---- +WITH genai.vector.encode( + "Retrieval Augmented Generation", + "OpenAI", + { token: "sk-..." }) AS userEmbedding +CALL db.index.vector.queryNodes('chunkEmbedding', 5, userEmbedding) +YIELD node, score +RETURN node.text, score +---- + +[.transcript-only] +==== +[IMPORTANT] +.OpenAI token +===== +You will need to update the `$token` with your OpenAI API key. +===== +==== + +[.slide] +== Create a Vector + Cypher GraphRAG pipeline + +The `neo4j_graphrag` package includes a `VectorCypherRetriever` class that combines vector similarity search with Cypher retrieval. + +You can use this retriever to create a `GraphRAG` pipeline to: + +. Perform a vector similarity search to find the most relevant chunks for a given query. +. Use a Cypher query to add additional information to the context. +. Pass the context to an LLM to generate a response to the original query. + +[.slide-only] +==== +**Continue with the lesson to create the Vector + Cypher retriever.** +==== + +[.transcript-only] +=== Retriever + +Open `workshop-genai/vector_cypher_rag.py` and review the code: + +[source, python] +.vector_cypher_rag.py +---- +include::{repository-raw}/{branch}/workshop-genai/vector_cypher_rag.py[] +---- + +The retriever is configured to use the `chunkEmbedding` vector index you just created. + +[source, python] +.Retriever initialization +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/vector_cypher_rag.py[tag=retriever] +---- + +When you run the code: + +. The `VectorCypherRetriever` uses the vector index to find chunks similar to the query: ++ +_"Where can I learn more about knowledge graphs?"_ +. The `GraphRAG` pipeline passes the text from those chunks as context to the LLM. +. The response from the LLM is printed: ++ +_You can learn more about knowledge graphs in the Neo4j blog post linked here: link:https://neo4j.com/blog/what-is-knowledge-graph[What Is a Knowledge Graph?^]_ + +You can print the context passed to the LLM by adding the following to the end of the code: + +[source, python] +.Print context +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/vector_cypher_rag.py[tag=print_context] +---- + +[.transcript-only] +=== Retrieval Cypher Query + +The `VectorCypherRetriever` also allows you to define a Cypher query to retrieve additional context from the knowledge graph. + +Adding additional context can help the LLM generate more accurate responses. + +Update the `retrieval_query` to add additional information about the lessons, technologies, and concepts related to the chunks: + +[source, python] +.Enhanced retrieval query +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/vector_cypher_rag.py[tag=retrieval_query] +---- + +The retriever will execute the Cypher query adding more context. + +Running the code again for the same query, _"Where can I learn more about knowledge graphs?"_, will produce a more detailed response: + +_You can learn more about knowledge graphs in the Neo4j blog post linked here: link:https://neo4j.com/blog/what-is-knowledge-graph[What Is a Knowledge Graph?^]. Additionally, you can explore further lessons on knowledge graphs on the GraphAcademy website, specifically in the course "GenAI Fundamentals," including the sections "What is a Knowledge Graph" and "Creating Knowledge Graphs."_ + +The retrieval query includes additional context relating to technologies and concepts mentioned in the chunks. + +Experiment asking different questions relating to the knowledge graph such as _"What technologies and concepts support knowledge graphs?"_. + +[.transcript-only] +=== Generalize entity retrieval + +The retriever currently uses the knowledge graph to add additional context related to technologies and concepts. +The specific entities allow for targeted retrieval, however you may also want to generalize the retrieval to include all related entities. + +You can use the node labels and relationship types to create a response that includes details about the entities. + +This cypher query retrieves all related entities between the chunks: + +[source, cypher] +.Related entities +---- +MATCH (c:Chunk)<-[:FROM_CHUNK]-(entity)-[r]->(other)-[:FROM_CHUNK]->() +RETURN DISTINCT + labels(entity)[2], entity.name, entity.type, entity.description, + type(r), + labels(other)[2], other.name, other.type, other.description +---- + +The output uses the node labels, properties, and relationship types to output rows which form statements such as: + +* `Concept` "Semantic Search" `RELATED_TO` `Technology` "Vector Indexes" +* `Technology` "Retrieval Augmented Generation" `HAS_CHALLENGE` "Understanding what the user is asking for and finding the correct information to pass to the LLM"` + +These statements can be used to create additional context for the LLM to generate responses. + +Modify the `retrieval_query` to include all entities associated with the chunk: + +[source, python] +.Enhanced retrieval query with all related entities +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/vector_cypher_rag.py[tag=advanced_retrieval_query] +---- + +[TIP] +.Format the context +==== +The Cypher functions `reduce` and `coalesce` are used to format the associated entities into readable statements. The `reduce` function adds space characters between the values, and `coalesce` replaces null values with empty strings. +==== + +[.slide] +== Experiment + +Experiment running the code with different queries to see how the additional context changes the responses. + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you: + +* Created a vector index on the `Chunk` nodes in the knowledge graph. +* Used the `VectorCypherRetriever` to perform vector similarity search and Cypher retrieval. +* Created a `GraphRAG` pipeline to generate responses with context from the knowledge graph. + +In the next lesson, you will use the `Text2CypherRetriever` retriever to get information from the knowledge graph based on natural language questions. diff --git a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/3-text-to-cypher-retriever/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/3-text-to-cypher-retriever/lesson.adoc new file mode 100644 index 000000000..28bbf70ff --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/3-text-to-cypher-retriever/lesson.adoc @@ -0,0 +1,87 @@ += Text to Cypher retriever +:type: lesson +:order: 2 +:branch: new-workshop + +[.slide.discrete] +== Overview + +The `Text2CypherRetriever` retriever allows you to create `GraphRAG` pipelines that can answer natural language questions by generating and executing Cypher queries against the knowledge graph. + +Using text to cypher retrieval can help you get precise information from the knowledge graph based on user questions. For example, how many lessons are in a course, what concepts are covered in a module, or how technologies relate to each other. + +In this lesson, you will create a text to Cypher retriever and use it to answer questions about the data in knowledge graph. + +[.slide-only] +==== +**Continue with the lesson to create the text to Cypher retriever.** +==== + +[.transcript-only] +=== Create a Text2CypherRetriever GraphRAG pipeline + +Open `workshop-genai/text2cypher_rag.py` and review the code. + +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/text2cypher_rag.py[] +---- + +The retriever is configured to use your database connection and given an example of how to query nodes by name: + +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/text2cypher_rag.py[tag=examples] + +include::{repository-raw}/{branch}/workshop-genai/solutions/text2cypher_rag.py[tag=retriever] +---- + +The response includes the Cypher statement that the LLM generated and the results from executing the query: + +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/text2cypher_rag.py[tag=print_response] +---- + +Running the code for the query, _"How many technologies are mentioned in the knowledge graph?"_, will produce a response similar to: + +_114 technologies are mentioned in the knowledge graph._ + +The context shows that the LLM generated and executed the following Cypher query: + +[source, cypher] +---- +MATCH (t:Technology) RETURN count(t) AS technologyCount +---- + +The following data was returned from the knowledge graph and passed as context to the LLM: + +[source, python] +---- +[RetrieverResultItem(content='', metadata=None)] +---- + +[.slide] +== Experiment with Different Questions + +The `Text2CypherRetriever` passed the graph schema to the LLM to help it generate accurate Cypher queries. + +Try asking different questions about the knowledge graph such as: + +* _How does Neo4j relate to other technologies?_ +* _What entities exist in the knowledge graph?_ +* _Which lessons cover Generative AI concepts?_ + +Review the responses, the generated Cypher queries, and the results passed to the LLM. + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you: + +* Created a `GraphRAG` pipeline using the `Text2CypherRetriever`. +* Used natural language questions to generate and execute Cypher queries against the knowledge graph. + +In the next module you will explore how to customize the `SimpleKGPipeline` to create knowledge graphs for different types of data, scenarios, and use cases. diff --git a/asciidoc/courses/workshop-genai/modules/3-retrieval/module.adoc b/asciidoc/courses/workshop-genai/modules/3-retrieval/module.adoc new file mode 100644 index 000000000..87cd37b7d --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/3-retrieval/module.adoc @@ -0,0 +1,17 @@ += Retrieval +:order: 3 + + +== Module Overview + +In this module, you will learn: + +* How to use retrieval techniques to find relevant information from a knowledge graph. +* How vector, vector + cypher, and text to cypher retrievers can be used to get relevant data from a knowledge graph. + +[TIP] +The link:https://graphacademy.neo4j.com/courses/genai-fundamentals[GraphAcademy Neo4j and Generative AI course^] includes more information on retrievers and how to use them with graphs. + +If you are ready, let's get going! + +link:./1-vectors/[Ready? Let's go →, role=btn] diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/images/agent-process.svg b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/1-what-is-an-agent/images/agent-process.svg similarity index 100% rename from asciidoc/courses/workshop-genai/modules/3-agents/lessons/1-what-is-an-agent/images/agent-process.svg rename to asciidoc/courses/workshop-genai/modules/4-agents/lessons/1-what-is-an-agent/images/agent-process.svg diff --git a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/1-what-is-an-agent/lesson.adoc b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/1-what-is-an-agent/lesson.adoc new file mode 100644 index 000000000..4616c18ae --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/1-what-is-an-agent/lesson.adoc @@ -0,0 +1,58 @@ += What is an Agent? +:order: 1 +:type: lesson + +[.slide.discrete] +== Definition + +An **AI agent** is a system that combines a Large Language Model (LLM) with the ability to take actions in the real world. + +Unlike a simple chatbot that can only respond with text, an agent can interact with external systems, retrieve information, and execute tasks autonomously. + +[.slide] +== Key Components + +**LLM**: The agent uses an LLM for reasoning, planning, and decision-making. + +**Tools**: Agents have access to a set of _tools_ that extend their capabilities beyond text generation. Tools are typically retrievers that can: + +* Access databases +* Make API calls to external services +* Undertake File system operations +* Search the web +* Execute code + +**Decision Making**: The agent uses the LLM to analyze tasks, determine which tools are needed, and coordinate their use to achieve goals. + +[.slide.col-2] +== How Agents Work + +[.col] +==== +1. **Receive a task** or query from a user +2. **Plan and reason** using the LLM to break down complex tasks +3. **Select and execute tools** based on what's needed +4. **Observe and process results** and determine next steps +5. **Iterate** until the task is complete or provide a final response + +This autonomous capability makes agents particularly powerful for complex, multi-step tasks that require both reasoning and real-world interaction. +==== + +[.col] +image::./images/agent-process.svg["A flowchart showing the agent process from user input to LLM reasoning, tool selection, tool execution, and final output.", width=90%] + +[.slide] +== Creating an Agent + +You will use Neo4j, Python, and link:https://www.langchain.com/[LangChain^] to build an agent that will use the retrievers you've already learned about as tools. + +You will progressively add more tools to the agent, starting with a simple schema introspection tool, then adding document retrieval, and finally text-to-Cypher capabilities. + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you learned how agents use reasoning and tools to perform complex tasks autonomously. + +In the next lesson, you review a simple Python agent that uses LangChain to interact with Neo4j. diff --git a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/2-langchain-agent/lesson.adoc b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/2-langchain-agent/lesson.adoc new file mode 100644 index 000000000..75ab9d0ab --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/2-langchain-agent/lesson.adoc @@ -0,0 +1,111 @@ += LangChain Agent +:order: 2 +:type: challenge +:branch: new-workshop + +[.slide] +== Overview + +You will be updating a LangChain agent, adding a set of tools, to interact with Neo4j. + +In this lesson you will: + +* Review the agent code +* Investigate how the agent works +* Experiment with different queries + +[.slide-only] +==== +**Continue with the lesson to create the text to Cypher retriever.** +==== + +[.transcript-only] +=== Agent + +Open `workshop-genai/agent.py`. + +[source, python] +.agent.py +---- +include::{repository-raw}/{branch}/workshop-genai/agent.py[] +---- + +Review the code and try to answer the following questions: + +. What is the agent's function? +. What do you think the response to the `query` will be? +. How could you extend the agent? + +Run the agent to see what it does. + +[.transcript-only] +=== Review + +This program is a LangChain agent that uses a Neo4j database. +The agent has access to a single tool which retrieves the database schema. +The agent uses this tool to answer questions about the database structure. + +The code: + +. Creates an `OpenAI` LLM `model`. ++ +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent.py[tag=model] +---- +. Connects to your Neo4j database. ++ +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent.py[tag=driver] +---- +. Defines a `Get-graph-database-schema` tool. ++ +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent.py[tag=tools] +---- ++ +The tool uses the Neo4j driver to get the database schema and return it as a string. ++ +[NOTE] +.Determine what tool to use +==== +The agent will use the tool's name (`Get-graph-database-schema`), and docstring (`Get the schema of the graph database.`) to determine whether it should execute the tool to resolve a user's query. +==== +. Creates a react (Reasoning and Acting) agent using the `model` and `tools`. ++ +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent.py[tag=agent] +---- +. Runs the agent, passing the `query` and streams the response. ++ +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent.py[tag=run] +---- ++ +When you run the agent, you will see: + +** The messages between `Human`, `AI`, and `Tool` +** The context of the database schema +** The agent's final response + +[.slide] +== Experiment + +Experiment with agent, modify the `query` to ask different questions, for example: + +* `"What questions can I answer using this graph database?"` +* `"How are concepts related to other entities?"` +* `"How does the graph model relate technologies to benefits?"` + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you reviewed an agent which can answer questions about a Neo4j database schema. + +In the next lesson, you will add a vector + cypher tool to the agent to enable semantic search capabilities. diff --git a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/3-agent-search-lesson/lesson.adoc b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/3-agent-search-lesson/lesson.adoc new file mode 100644 index 000000000..d58d157d4 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/3-agent-search-lesson/lesson.adoc @@ -0,0 +1,126 @@ += Search lesson content +:order: 3 +:type: challenge +:branch: new-workshop + +[.slide.discrete] +== Overview + +In this lesson, you will enhance your agent by adding a search lesson tool using a vector + cypher retriever. + +The agent decide will decide which tool is best for each question: + +**Schema Tool** - to understand the database structure: + +- "What entities exist in the graph?" +- "How are technologies related to concepts?" + +**Search Lesson Tool** - for finding content within the lessons: + +- "What are the benefits of using GraphRAG?" +- "THow are Knowledge Graphs associated with other technologies?" + +[.slide] +== Search lessons tool + +You will modify the `agent.py` code to: + +. Create a `VectorCypherRetriever` retriever that uses the `Chunk` vector index. +. Define a new `tool` function that uses this retriever to search for lesson content. +. Add the new tool to the agent's list of available tools. + +[.slide-only] +==== +**Continue with the lesson to create the text to Cypher retriever.** +==== + +[.transcript-only] +=== Update the agent + +Open `workshop-genai\agent.py` and make the following changes: + +. Add an embedding model for the retriever to convert the user query into a vector. ++ +[source,python] +.embedder +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_vector.py[tag=import_embedder] + +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_vector.py[tag=embedder] +---- +. Create a `retrieval_query` that the retriever will use to add additional context to the vector search results. ++ +[source,python] +.retrieval_query +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_vector.py[tag=retrieval_query] +---- +. Create a `VectorCypherRetriever` using the `chunkEmbedding` index, Neo4j `driver`, and `embedder`. ++ +[source,python] +.retriever +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_vector.py[tag=import_retriever] + +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_vector.py[tag=retriever] +---- +. Define a tool function to search for lesson content using the retriever. ++ +[source,python] +.Search-lesson-content tool +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_vector.py[tag=search_lessons] +---- ++ +[NOTE] +.Tool description +==== +The tool name `search-lesson-content` and docstring `Search for lesson content related to the query.` help the agent decide when to use this tool. +==== +. Update the `tools` list to include the new lesson search tool. ++ +[source,python] +.tools +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_vector.py[tag=tools] +---- +. Modify the `query` variable to test the new lesson search tool. ++ +[source,python] +.query +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_vector.py[tag=query] +---- + +[%collapsible] +.Reveal the complete code +==== +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_vector.py[tag=**;!example_queries] +---- +==== + +Run the agent. The agent should decide to use the new tool based on the query. + +[.slide] +## Experiment + +Experiment with agent, modify the `query` to ask different questions, for example: + +* `"How are Knowledge Graphs associated with other technologies?"` +* `"Summarize what concepts are associated with Knowledge Graphs?"` +* `"How would you minimize hallucinations in LLMs?"` + +Asking questions related to the graph schema should still use the schema tool, for example: + +* `"What entities exist in the graph?"` + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you modified the agent to use an additional tool for searching lesson content using a vector + Cypher retriever. + +In the next lesson, you will add tool that can query the database directly using a text to Cypher retriever. diff --git a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/4-agent-query-db/lesson.adoc b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/4-agent-query-db/lesson.adoc new file mode 100644 index 000000000..822abbdee --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/4-agent-query-db/lesson.adoc @@ -0,0 +1,127 @@ +# Query database +:order: 4 +:type: challenge +:branch: new-workshop + +[.slide.discrete] +== Overview + +In this lesson, you will add a tool to your agent so it can query the database directly. + +The tool will use a `TextToCypherRetriever` retriever to convert user queries into Cypher statements and return the results as context. + +Text to Cypher tools are useful for "catch all" scenarios where the user may ask a question not covered by other tools, such as: + +* Finding specific data in the graph. +* Performing aggregations or calculations. +* Exploring relationships between entities. + +[.slide] +== Query database tool + +You will modify the `agent.py` code to: + +. Create a `Text2CypherRetriever` retriever that uses and `llm` to convert user queries into Cypher. +. Define a new `tool` function that uses this retriever to query the database. +. Add the new tool to the agent's list of available tools. + +[.slide-only] +==== +**Continue with the lesson to create the text to Cypher retriever.** +==== + +[.transcript-only] +=== Modify the agent + +Open `workshop-genai\agent.py` and make the following changes: + +. Instantiate a `llm` that will be used to generate the Cypher. ++ +[source,python] +.Cypher generating llm +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_text2cypher.py[tag=import_llm] + +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_text2cypher.py[tag=llm] +---- +. Create a `Text2CypherRetriever` using the `llm` and Neo4j `driver`. ++ +[source,python] +.Text2CypherRetriever +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_text2cypher.py[tag=import_retriever] + +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_text2cypher.py[tag=retriever] +---- +. Define a tool function to query the database using the retriever. ++ +[source,python] +.Query-database tool +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_text2cypher.py[tag=query_database] +---- +. Update the `tools` list to include the new database query tool. ++ +[source,python] +.tools +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_text2cypher.py[tag=tools] +---- +. Modify the `query` variable to test the new database query tool. ++ +[source,python] +.query +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_text2cypher.py[tag=query] +---- + +[%collapsible] +.Reveal the complete code +==== +[source, python] +---- +include::{repository-raw}/{branch}/workshop-genai/solutions/agent_text2cypher.py[tag=**;!example_queries] +---- +==== + +Run the agent. The agent should use the new database query tool to answer the question. + +You can see the Cypher query generated in the tool context's metadata. + +[.slide] +## Experiment + +Experiment with the agent, modify the `query` to ask different questions, for example: + +* `"Each lesson is part of a module. How many lessons are in each module?"` +* `"Search the graph and return a list of challenges."` +* `"What benefits are associated to the technologies described in the knowledge graph?"` + +Asking questions related to the graph schema or lesson content should still use the other tools, for example: + +* `"What entities exist in the graph?"` +* `"What are the benefits of using GraphRAG?"` + +You may find that the agent will execute multiple tools to answer some questions. + +[.transcript-only] +==== +[TIP] +.Specific tools +===== +You can create multiple Text to Cypher tools that are specialized for different types of queries. + +For example, you could create one tool for querying lessons and another for querying technologies. + +Each tool could have different prompt templates or examples to help the LLM generate more accurate Cypher for specific domains. +===== +==== + +read::Continue[] + +[.summary] +== Lesson Summary + +In this lesson, you added a query database tool to your agent using a text to Cypher retriever. + +In the next optional challenge, you will create your own agent with a custom set of tools. \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/5-create-an-agent/lesson.adoc b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/5-create-an-agent/lesson.adoc new file mode 100644 index 000000000..fc73e86f2 --- /dev/null +++ b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/5-create-an-agent/lesson.adoc @@ -0,0 +1,29 @@ += Create an agent +:type: challenge +:order: 5 + +[.slide.discrete] +== Overview + +In this optional challenge, you will apply what you have learned to create an agent with a custom set of tools. + +You should: + +. Use either the lesson knowledge graph or link:../../2-knowledge-graph-construction/7-create-a-kg[your own knowledge graph^] from the previous challenge. +. Create an agent using the example code from this workshop. +. Define a set of tools that the agent can use to answer user queries based on the knowledge graph, these could include: +** Cypher query tools that run Cypher queries against the graph and return the results +** Vector + Cypher retrievers to semantically search the knowledge graph. +** Text to Cypher tools to query specific data from the graph. +. Test the agent with different user queries to see how it uses the tools to provide answers. + +You can come back to this challenge at any time. + +read::Complete[] + +[.summary] +== Lesson Summary + +In this lesson, you applied what you have learned throughout the workshop to create your agent to interact with a knowledge graph. + +Congratulations on completing the workshop. \ No newline at end of file diff --git a/asciidoc/courses/workshop-genai/modules/3-agents/module.adoc b/asciidoc/courses/workshop-genai/modules/4-agents/module.adoc similarity index 97% rename from asciidoc/courses/workshop-genai/modules/3-agents/module.adoc rename to asciidoc/courses/workshop-genai/modules/4-agents/module.adoc index 5c745a553..32943fb05 100644 --- a/asciidoc/courses/workshop-genai/modules/3-agents/module.adoc +++ b/asciidoc/courses/workshop-genai/modules/4-agents/module.adoc @@ -1,5 +1,5 @@ = Agents -:order: 3 +:order: 4 In this module, you will: diff --git a/asciidoc/courses/workshop-genai/summary.adoc b/asciidoc/courses/workshop-genai/summary.adoc index 3c4acc9a3..213bc9a6b 100644 --- a/asciidoc/courses/workshop-genai/summary.adoc +++ b/asciidoc/courses/workshop-genai/summary.adoc @@ -1,12 +1,13 @@ = Course Summary -Congratulations on completing the GenAI workshop. +Congratulations on completing the Neo4j and Generative AI workshop. You have learned: * The basics of Generative AI and Large Language Models (LLMs) * What Retrieval-Augmented Generation (RAG) is and why it is important * How GraphRAG can improve the quality of LLM-generated content +* How to construct knowledge graphs from structured and unstructured data * How to use Vectors in Neo4j for similarity search * To build different types of retrievers using the `neo4j-graphrag` for Python package. * To create a simple agent using Neo4j, Python, and LangChain. From 088726f399042506ac7627c99c1474d25f80e3e9 Mon Sep 17 00:00:00 2001 From: Martin O'Hanlon Date: Mon, 1 Dec 2025 16:07:23 +0000 Subject: [PATCH 2/3] replace repo name --- asciidoc/courses/workshop-genai/course.adoc | 2 +- .../1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/asciidoc/courses/workshop-genai/course.adoc b/asciidoc/courses/workshop-genai/course.adoc index aaf6c3a88..970091b44 100644 --- a/asciidoc/courses/workshop-genai/course.adoc +++ b/asciidoc/courses/workshop-genai/course.adoc @@ -5,7 +5,7 @@ :usecase: blank-sandbox :key-points: Generative AI, GraphRAG, Knowledge Graph Construction, Vectors and Text to Cypher Retrievers, Agents :categories: workshops -:repository: neo4j-graphacademy/workshop-genai2 +:repository: neo4j-graphacademy/workshop-genai == Course Description diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc index f7bdc1ebd..22a39d84b 100644 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc @@ -2,7 +2,7 @@ :order: 1 :type: lesson :branch: new-workshop -:repository-dir-name: workshop-genai2 +:repository-dir-name: workshop-genai The link:https://neo4j.com/docs/neo4j-graphrag-python/current/[GraphRAG for Python^] package (`neo4j-graphrag`) allows you to access Neo4j Generative AI functions including: From 4650f15c3bb06ca7a4611e72225cac2cceeefa21 Mon Sep 17 00:00:00 2001 From: Martin O'Hanlon Date: Mon, 1 Dec 2025 16:33:06 +0000 Subject: [PATCH 3/3] updated branch to test --- .../1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc | 2 +- .../lessons/2-extract-schema/lesson.adoc | 2 +- .../lessons/3-create-a-graph/lesson.adoc | 2 +- .../lessons/4-chunk-size/lesson.adoc | 2 +- .../lessons/5-define-a-schema/lesson.adoc | 2 +- .../lessons/6-structured-data/lesson.adoc | 2 +- .../3-retrieval/lessons/2-vector-cypher-retriever/lesson.adoc | 2 +- .../3-retrieval/lessons/3-text-to-cypher-retriever/lesson.adoc | 2 +- .../modules/4-agents/lessons/2-langchain-agent/lesson.adoc | 2 +- .../modules/4-agents/lessons/3-agent-search-lesson/lesson.adoc | 2 +- .../modules/4-agents/lessons/4-agent-query-db/lesson.adoc | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc index 22a39d84b..96af39e46 100644 --- a/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/1-generative-ai/lessons/4-neo4j-graphrag/lesson.adoc @@ -1,7 +1,7 @@ = GraphRAG for Python :order: 1 :type: lesson -:branch: new-workshop +:branch: update-workshop :repository-dir-name: workshop-genai The link:https://neo4j.com/docs/neo4j-graphrag-python/current/[GraphRAG for Python^] package (`neo4j-graphrag`) allows you to access Neo4j Generative AI functions including: diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/lesson.adoc index bfe15c839..e1997796f 100644 --- a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/2-extract-schema/lesson.adoc @@ -1,7 +1,7 @@ = Extracting a schema from text :type: lesson :order: 2 -:branch: new-workshop +:branch: update-workshop [.slide.discrete] == Overview diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/lesson.adoc index c854a4206..2e60a1b2f 100644 --- a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/3-create-a-graph/lesson.adoc @@ -1,7 +1,7 @@ = Create a graph :type: lesson :order: 3 -:branch: new-workshop +:branch: update-workshop [.slide.discrete] == Overview diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/4-chunk-size/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/4-chunk-size/lesson.adoc index 32dc6ec5c..178e97b09 100644 --- a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/4-chunk-size/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/4-chunk-size/lesson.adoc @@ -1,7 +1,7 @@ = Chunk size :type: lesson :order: 4 -:branch: new-workshop +:branch: update-workshop [.slide.discrete] == Overview diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/5-define-a-schema/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/5-define-a-schema/lesson.adoc index 6b8df3a92..338fd1691 100644 --- a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/5-define-a-schema/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/5-define-a-schema/lesson.adoc @@ -1,7 +1,7 @@ = Define a schema :type: lesson :order: 5 -:branch: new-workshop +:branch: update-workshop [.slide.discrete] == Overview diff --git a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/lesson.adoc b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/lesson.adoc index ff89411e1..c79e9b008 100644 --- a/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/2-knowledge-graph-construction/lessons/6-structured-data/lesson.adoc @@ -1,7 +1,7 @@ = Add structured data to the knowledge graph :type: lesson :order: 6 -:branch: new-workshop +:branch: update-workshop [.slide.discrete] == Overview diff --git a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/2-vector-cypher-retriever/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/2-vector-cypher-retriever/lesson.adoc index 50481536d..caa262e02 100644 --- a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/2-vector-cypher-retriever/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/2-vector-cypher-retriever/lesson.adoc @@ -1,7 +1,7 @@ = Vector + Cypher retriever :type: lesson :order: 2 -:branch: new-workshop +:branch: update-workshop [.slide] == Overview diff --git a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/3-text-to-cypher-retriever/lesson.adoc b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/3-text-to-cypher-retriever/lesson.adoc index 28bbf70ff..94c543c1d 100644 --- a/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/3-text-to-cypher-retriever/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/3-retrieval/lessons/3-text-to-cypher-retriever/lesson.adoc @@ -1,7 +1,7 @@ = Text to Cypher retriever :type: lesson :order: 2 -:branch: new-workshop +:branch: update-workshop [.slide.discrete] == Overview diff --git a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/2-langchain-agent/lesson.adoc b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/2-langchain-agent/lesson.adoc index 75ab9d0ab..3aaa11c7e 100644 --- a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/2-langchain-agent/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/2-langchain-agent/lesson.adoc @@ -1,7 +1,7 @@ = LangChain Agent :order: 2 :type: challenge -:branch: new-workshop +:branch: update-workshop [.slide] == Overview diff --git a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/3-agent-search-lesson/lesson.adoc b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/3-agent-search-lesson/lesson.adoc index d58d157d4..b845725b1 100644 --- a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/3-agent-search-lesson/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/3-agent-search-lesson/lesson.adoc @@ -1,7 +1,7 @@ = Search lesson content :order: 3 :type: challenge -:branch: new-workshop +:branch: update-workshop [.slide.discrete] == Overview diff --git a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/4-agent-query-db/lesson.adoc b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/4-agent-query-db/lesson.adoc index 822abbdee..779486f35 100644 --- a/asciidoc/courses/workshop-genai/modules/4-agents/lessons/4-agent-query-db/lesson.adoc +++ b/asciidoc/courses/workshop-genai/modules/4-agents/lessons/4-agent-query-db/lesson.adoc @@ -1,7 +1,7 @@ # Query database :order: 4 :type: challenge -:branch: new-workshop +:branch: update-workshop [.slide.discrete] == Overview