# Examples Index This folder contains examples usage for the different features supported by the `neo4j-graphrag` package: - [Automatic Schema Extraction](#schema-extraction) from PDF or text - [Build Knowledge Graph](#build-knowledge-graph) from PDF or text - [Retrieve](#retrieve) information from the graph - [Question Answering](#answer-graphrag) (Q&A) Each of these steps have many customization options which are listed in [the last section of this file](#customize). ## Build Knowledge Graph - [End to end PDF to graph simple pipeline](build_graph/simple_kg_builder_from_pdf.py) - [End to end text to graph simple pipeline](build_graph/simple_kg_builder_from_text.py) - [Build KG pipeline from config file](build_graph/from_config_files/simple_kg_pipeline_from_config_file.py) - [Build KG pipeline with PDF URL](build_graph/from_config_files/simple_kg_pipeline_from_config_file_with_url.py) ## Retrieve - [Retriever from an embedding vector](retrieve/similarity_search_for_vector.py) - [Retriever from a text](retrieve/similarity_search_for_text.py) - [Graph-based retrieval with VectorCypherRetriever](retrieve/vector_cypher_retriever.py) - [Hybrid retriever](./retrieve/hybrid_retriever.py) - [Hybrid Cypher retriever](./retrieve/hybrid_cypher_retriever.py) - [Text2Cypher retriever](./retrieve/text2cypher_search.py) - [Cypher Template retriever](./retrieve/tools/cypher_template_to_tool_example.py) ### External Retrievers #### Weaviate - [Vector search](customize/retrievers/external/weaviate/weaviate_vector_search.py) - [Text search with local embeder](customize/retrievers/external/weaviate/weaviate_text_search_local_embedder.py) - [Text search with remote embeder](customize/retrievers/external/weaviate/weaviate_text_search_remote_embedder.py) #### Pinecone - [Vector search](./customize/retrievers/external/pinecone/pinecone_vector_search.py) - [Text search](./customize/retrievers/external/pinecone/pinecone_text_search.py) ### Qdrant - [Vector search](./customize/retrievers/external/qdrant/qdrant_vector_search.py) - [Text search](./customize/retrievers/external/qdrant/qdrant_text_search.py) ## Answer: GraphRAG - [End to end GraphRAG](./answer/graphrag.py) - [GraphRAG with message history](./question_answering/graphrag_with_message_history.py) - [GraphRAG with Neo4j message history](./question_answering/graphrag_with_neo4j_message_history.py) ## Customize ### Retriever - [Control result format for VectorRetriever](customize/retrievers/result_formatter_vector_retriever.py) - [Control result format for VectorCypherRetriever](customize/retrievers/result_formatter_vector_cypher_retriever.py) - [Use pre-filters](customize/retrievers/use_pre_filters.py) - [Text2Cypher: use a custom prompt](customize/retrievers/text2cypher_custom_prompt.py) ### LLMs - [OpenAI (GPT)](./customize/llms/openai_llm.py) - [Azure OpenAI]() - [VertexAI (Gemini)](./customize/llms/vertexai_llm.py) - [MistralAI](./customize/llms/mistalai_llm.py) - [Cohere](./customize/llms/cohere_llm.py) - [Anthropic (Claude)](./customize/llms/anthropic_llm.py) - [Ollama](./customize/llms/ollama_llm.py) - [Custom LLM](./customize/llms/custom_llm.py) - [Message history](./customize/llms/llm_with_message_history.py) - [Message history with Neo4j](./customize/llms/llm_with_neo4j_message_history.py) - [System Instruction](./customize/llms/llm_with_system_instructions.py) - [Tool Calling with OpenAI](./customize/llms/openai_tool_calls.py) - [Tool Calling with VertexAI](./customize/llms/vertexai_tool_calls.py) - [Tool Calling with Ollama](./customize/llms/ollama_tool_calls.py) ### Prompts - [Using a custom prompt for RAG](customize/answer/custom_prompt.py) ### Embedders - [OpenAI](./customize/embeddings/openai_embeddings.py) - [Azure OpenAI](./customize/embeddings/azure_openai_embeddings.py) - [VertexAI](./customize/embeddings/vertexai_embeddings.py) - [MistralAI](./customize/embeddings/mistalai_embeddings.py) - [Cohere](./customize/embeddings/cohere_embeddings.py) - [Ollama](./customize/embeddings/ollama_embeddings.py) - [Custom LLM](./customize/embeddings/custom_embeddings.py) ### KG Construction - Pipeline - [End to end example with explicit components and text input](./customize/build_graph/pipeline/kg_builder_from_text.py) - [End to end example with explicit components and PDF input](./customize/build_graph/pipeline/kg_builder_from_pdf.py) - [Process multiple documents](./customize/build_graph/pipeline/kg_builder_two_documents_entity_resolution.py) - [Export lexical graph creation into another pipeline](./customize/build_graph/pipeline/text_to_lexical_graph_to_entity_graph_two_pipelines.py) - [Build pipeline from config file](customize/build_graph/pipeline/from_config_files/pipeline_from_config_file.py) - [Add event listener to get notification about Pipeline progress](./customize/build_graph/pipeline/pipeline_with_notifications.py) - [Use component context to send notifications about Component progress](./customize/build_graph/pipeline/pipeline_with_component_notifications.py) #### Components - Loaders: - [Load PDF file](./customize/build_graph/components/loaders/pdf_loader.py) - [Custom](./customize/build_graph/components/loaders/custom_loader.py) - Text Splitter: - [Fixed size splitter](./customize/build_graph/components/splitters/fixed_size_splitter.py) - [Splitter from LangChain](./customize/build_graph/components/splitters/langhchain_splitter.py) - [Splitter from LLamaIndex](./customize/build_graph/components/splitters/llamaindex_splitter.py) - [Custom](./customize/build_graph/components/splitters/custom_splitter.py) - [Chunk embedder]() - Schema Builder: - [User-defined](./customize/build_graph/components/schema_builders/schema.py) - [Automatic schema extraction](./automatic_schema_extraction/schema_from_text.py) - Entity Relation Extractor: - [LLM-based](./customize/build_graph/components/extractors/llm_entity_relation_extractor.py) - [LLM-based with custom prompt](./customize/build_graph/components/extractors/llm_entity_relation_extractor_with_custom_prompt.py) - [Custom](./customize/build_graph/components/extractors/custom_extractor.py) - [Graph Pruner](./customize/build_graph/components/pruners/graph_pruner.py) - Knowledge Graph Writer: - [Neo4j writer](./customize/build_graph/components/writers/neo4j_writer.py) - [Custom](./customize/build_graph/components/writers/custom_writer.py) - Entity Resolver: - [FuzzyMatchResolver](./customize/build_graph/components/resolvers/fuzzy_match_entity_resolver_pre_filter.py) - [SinglePropertyExactMatchResolver with pre-filter](./customize/build_graph/components/resolvers/simple_entity_resolver_pre_filter.py) - [SpaCySemanticMatchResolver with pre-filter](./customize/build_graph/components/resolvers/spacy_entity_resolver_pre_filter.py) - [Custom resolver](./customize/build_graph/components/resolvers/custom_resolver.py) - [Custom component](./customize/build_graph/components/custom_component.py) ### Answer: GraphRAG - [LangChain compatibility](./customize/answer/langchain_compatiblity.py) - [Use a custom prompt](./customize/answer/custom_prompt.py) ## Database Operations - [Create vector index](database_operations/create_vector_index.py) - [Create full text index](create_fulltext_index.py) - [Populate vector index](populate_vector_index.py)