From 20a1ffab6bba78ce62790c3de07d26dddabcbf57 Mon Sep 17 00:00:00 2001 From: Anush008 Date: Thu, 7 Nov 2024 02:58:58 +0530 Subject: [PATCH] docs: Neo4j integration Signed-off-by: Anush008 --- .../documentation/frameworks/_index.md | 47 ++++++------- .../frameworks/neo4j-graphrag.md | 69 +++++++++++++++++++ 2 files changed, 93 insertions(+), 23 deletions(-) create mode 100644 qdrant-landing/content/documentation/frameworks/neo4j-graphrag.md diff --git a/qdrant-landing/content/documentation/frameworks/_index.md b/qdrant-landing/content/documentation/frameworks/_index.md index c6442235e..7491cd7ab 100644 --- a/qdrant-landing/content/documentation/frameworks/_index.md +++ b/qdrant-landing/content/documentation/frameworks/_index.md @@ -5,26 +5,27 @@ weight: 20 ## Framework Integrations -| Framework | Description | -| ------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| [AutoGen](/documentation/frameworks/autogen/) | Framework from Microsoft building LLM applications using multiple conversational agents. | -| [Canopy](/documentation/frameworks/canopy/) | Framework from Pinecone for building RAG applications using LLMs and knowledge bases. | -| [Cheshire Cat](/documentation/frameworks/cheshire-cat/) | Framework to create personalized AI assistants using custom data. | -| [DocArray](/documentation/frameworks/docarray/) | Python library for managing data in multi-modal AI applications. | -| [DSPy](/documentation/frameworks/dspy/) | Framework for algorithmically optimizing LM prompts and weights. | -| [Fifty-One](/documentation/frameworks/fifty-one/) | Toolkit for building high-quality datasets and computer vision models. | -| [Genkit](/documentation/frameworks/genkit/) | Framework to build, deploy, and monitor production-ready AI-powered apps. | -| [Haystack](/documentation/frameworks/haystack/) | LLM orchestration framework to build customizable, production-ready LLM applications. | -| [Lakechain](/documentation/frameworks/lakechain/) | Python framework for deploying document processing pipelines on AWS using infrastructure-as-code. | -| [Langchain](/documentation/frameworks/langchain/) | Python framework for building context-aware, reasoning applications using LLMs. | -| [Langchain-Go](/documentation/frameworks/langchain-go/) | Go framework for building context-aware, reasoning applications using LLMs. | -| [Langchain4j](/documentation/frameworks/langchain4j/) | Java framework for building context-aware, reasoning applications using LLMs. | -| [LlamaIndex](/documentation/frameworks/llama-index/) | A data framework for building LLM applications with modular integrations. | -| [Mem0](/documentation/frameworks/mem0/) | Self-improving memory layer for LLM applications, enabling personalized AI experiences. | -| [MemGPT](/documentation/frameworks/memgpt/) | System to build LLM agents with long term memory & custom tools | -| [Pandas-AI](/documentation/frameworks/pandas-ai/) | Python library to query/visualize your data (CSV, XLSX, PostgreSQL, etc.) in natural language | -| [Semantic Router](/documentation/frameworks/semantic-router/) | Python library to build a decision-making layer for AI applications using vector search. | -| [Spring AI](/documentation/frameworks/spring-ai/) | Java AI framework for building with Spring design principles such as portability and modular design. | -| [Sycamore](/documentation/frameworks/sycamore/) | Document processing engine for ETL, RAG, LLM-based applications, and analytics on unstructured data. | -| [txtai](/documentation/frameworks/txtai/) | Python library for semantic search, LLM orchestration and language model workflows. | -| [Vanna AI](/documentation/frameworks/vanna-ai/) | Python RAG framework for SQL generation and querying. | +| Framework | Description | +| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| [AutoGen](/documentation/frameworks/autogen/) | Framework from Microsoft building LLM applications using multiple conversational agents. | +| [Canopy](/documentation/frameworks/canopy/) | Framework from Pinecone for building RAG applications using LLMs and knowledge bases. | +| [Cheshire Cat](/documentation/frameworks/cheshire-cat/) | Framework to create personalized AI assistants using custom data. | +| [DocArray](/documentation/frameworks/docarray/) | Python library for managing data in multi-modal AI applications. | +| [DSPy](/documentation/frameworks/dspy/) | Framework for algorithmically optimizing LM prompts and weights. | +| [Fifty-One](/documentation/frameworks/fifty-one/) | Toolkit for building high-quality datasets and computer vision models. | +| [Genkit](/documentation/frameworks/genkit/) | Framework to build, deploy, and monitor production-ready AI-powered apps. | +| [Haystack](/documentation/frameworks/haystack/) | LLM orchestration framework to build customizable, production-ready LLM applications. | +| [Lakechain](/documentation/frameworks/lakechain/) | Python framework for deploying document processing pipelines on AWS using infrastructure-as-code. | +| [Langchain](/documentation/frameworks/langchain/) | Python framework for building context-aware, reasoning applications using LLMs. | +| [Langchain-Go](/documentation/frameworks/langchain-go/) | Go framework for building context-aware, reasoning applications using LLMs. | +| [Langchain4j](/documentation/frameworks/langchain4j/) | Java framework for building context-aware, reasoning applications using LLMs. | +| [LlamaIndex](/documentation/frameworks/llama-index/) | A data framework for building LLM applications with modular integrations. | +| [Mem0](/documentation/frameworks/mem0/) | Self-improving memory layer for LLM applications, enabling personalized AI experiences. | +| [MemGPT](/documentation/frameworks/memgpt/) | System to build LLM agents with long term memory & custom tools | +| [Neo4j GraphRAG](/documentation/frameworks/neo4j-graphrag/) | Package to build graph retrieval augmented generation (GraphRAG) applications using Neo4j and Python. | +| [Pandas-AI](/documentation/frameworks/pandas-ai/) | Python library to query/visualize your data (CSV, XLSX, PostgreSQL, etc.) in natural language | +| [Semantic Router](/documentation/frameworks/semantic-router/) | Python library to build a decision-making layer for AI applications using vector search. | +| [Spring AI](/documentation/frameworks/spring-ai/) | Java AI framework for building with Spring design principles such as portability and modular design. | +| [Sycamore](/documentation/frameworks/sycamore/) | Document processing engine for ETL, RAG, LLM-based applications, and analytics on unstructured data. | +| [txtai](/documentation/frameworks/txtai/) | Python library for semantic search, LLM orchestration and language model workflows. | +| [Vanna AI](/documentation/frameworks/vanna-ai/) | Python RAG framework for SQL generation and querying. | diff --git a/qdrant-landing/content/documentation/frameworks/neo4j-graphrag.md b/qdrant-landing/content/documentation/frameworks/neo4j-graphrag.md new file mode 100644 index 000000000..69e42f8d2 --- /dev/null +++ b/qdrant-landing/content/documentation/frameworks/neo4j-graphrag.md @@ -0,0 +1,69 @@ +--- +title: Neo4j GraphRAG +--- + +# Neo4j GraphRAG + +[Neo4j GraphRAG](https://neo4j.com/docs/neo4j-graphrag-python/current/) is a Python package to build graph retrieval augmented generation (GraphRAG) applications using Neo4j and Python. As a first-party library, it offers a robust, feature-rich, and high-performance solution, with the added assurance of long-term support and maintenance directly from Neo4j. It offers a Qdrant retriever natively to search for vectors stored in a Qdrant collection. + +## Installation + +```bash +pip install neo4j-graphrag[qdrant] +``` + +## Usage + +A vector query with Neo4j and Qdrant could look like: + +```python +from neo4j import GraphDatabase +from neo4j_graphrag.retrievers import QdrantNeo4jRetriever +from qdrant_client import QdrantClient +from examples.embedding_biology import EMBEDDING_BIOLOGY + +NEO4J_URL = "neo4j://localhost:7687" +NEO4J_AUTH = ("neo4j", "password") + +with GraphDatabase.driver(NEO4J_URL, auth=NEO4J_AUTH) as neo4j_driver: + retriever = QdrantNeo4jRetriever( + driver=neo4j_driver, + client=QdrantClient(url="http://localhost:6333"), + collection_name="{collection_name}", + id_property_external="neo4j_id", + id_property_neo4j="id", + ) + +retriever.search(query_vector=[0.5523, 0.523, 0.132, 0.523, ...], top_k=5) +``` + +Alternatively, you can use any [Langchain embeddings providers](https://python.langchain.com/docs/integrations/text_embedding/), to vectorize text queries automatically. + +```python +from langchain_huggingface.embeddings import HuggingFaceEmbeddings +from neo4j import GraphDatabase +from neo4j_graphrag.retrievers import QdrantNeo4jRetriever +from qdrant_client import QdrantClient + +NEO4J_URL = "neo4j://localhost:7687" +NEO4J_AUTH = ("neo4j", "password") + +with GraphDatabase.driver(NEO4J_URL, auth=NEO4J_AUTH) as neo4j_driver: + embedder = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2") + retriever = QdrantNeo4jRetriever( + driver=neo4j_driver, + client=QdrantClient(url="http://localhost:6333"), + collection_name="{collection_name}", + id_property_external="neo4j_id", + id_property_neo4j="id", + embedder=embedder, + ) + +retriever.search(query_text="my user query", top_k=10) +``` + +## Further Reading + +- [Neo4j GraphRAG Reference](https://neo4j.com/docs/neo4j-graphrag-python/current/index.html) +- [Qdrant Retriever Reference](https://neo4j.com/docs/neo4j-graphrag-python/current/user_guide_rag.html#qdrant-neo4j-retriever-user-guide) +- [Source](https://github.com/neo4j/neo4j-graphrag-python/tree/main/src/neo4j_graphrag/retrievers/external/qdrant)