Neo4j Context Provider for Microsoft Agent Framework - RAG with knowledge graphs
Project description
agent-framework-neo4j
Neo4j Context Provider for Microsoft Agent Framework - RAG with knowledge graphs.
Quick Install
pip install agent-framework-neo4j --pre
# With Azure AI embeddings support
pip install agent-framework-neo4j[azure] --pre
Supported Platforms
- Python 3.10+
- Windows, macOS, Linux
Setup
Configure Neo4j credentials via environment variables or constructor parameters:
# Environment variables
export NEO4J_URI="neo4j+s://xxx.databases.neo4j.io"
export NEO4J_USERNAME="neo4j"
export NEO4J_PASSWORD="your-password"
Quick Start
Basic Fulltext Search
from agent_framework_neo4j import Neo4jContextProvider, Neo4jSettings
settings = Neo4jSettings() # Loads from environment
provider = Neo4jContextProvider(
uri=settings.uri,
username=settings.username,
password=settings.get_password(),
index_name="search_chunks",
index_type="fulltext",
)
async with provider:
# Use with Microsoft Agent Framework agent
pass
Vector Search with Azure AI Embeddings
from agent_framework_neo4j import Neo4jContextProvider, AzureAIEmbedder, AzureAISettings
from azure.identity.aio import AzureCliCredential
credential = AzureCliCredential()
ai_settings = AzureAISettings() # Loads from AZURE_AI_* env vars
embedder = AzureAIEmbedder(
endpoint=ai_settings.project_endpoint,
model_name=ai_settings.embedding_model,
credential=credential,
)
provider = Neo4jContextProvider(
uri="neo4j+s://xxx.databases.neo4j.io",
username="neo4j",
password="your-password",
index_name="chunkEmbeddings",
index_type="vector",
embedder=embedder,
top_k=5,
)
Hybrid Search (Vector + Fulltext)
provider = Neo4jContextProvider(
uri=settings.uri,
username=settings.username,
password=settings.get_password(),
index_name="chunkEmbeddings", # Vector index
fulltext_index_name="search_chunks", # Fulltext index
index_type="hybrid",
embedder=embedder,
)
Graph-Enriched Retrieval
Use custom Cypher queries to traverse relationships after the initial index search:
provider = Neo4jContextProvider(
uri=settings.uri,
username=settings.username,
password=settings.get_password(),
index_name="chunkEmbeddings",
index_type="vector",
embedder=embedder,
retrieval_query="""
MATCH (node)-[:FROM_DOCUMENT]->(doc:Document)
RETURN node.text AS text, score, doc.title AS title
ORDER BY score DESC
""",
)
Retrieval query requirements:
- Must use
nodeandscorevariables from the index search - Must return at least
textandscorecolumns - Use
ORDER BY score DESCto maintain relevance ranking
Features
- Vector Search - Semantic similarity using embeddings
- Fulltext Search - Keyword matching with Lucene
- Hybrid Search - Combined vector + fulltext for best of both
- Graph Enrichment - Custom Cypher queries for relationship traversal
- Message History - Configurable conversation context windowing
- Pydantic Settings - Environment-based configuration with validation
Configuration Parameters
Connection
| Parameter | Description |
|---|---|
uri |
Neo4j connection URI |
username |
Database username |
password |
Database password |
Search
| Parameter | Default | Description |
|---|---|---|
index_name |
required | Name of the Neo4j index to query |
index_type |
"vector" |
Search type: "vector", "fulltext", or "hybrid" |
fulltext_index_name |
None |
Fulltext index name (required for hybrid) |
embedder |
None |
Embedder for vector/hybrid search (required for those types) |
top_k |
5 |
Number of results to retrieve |
retrieval_query |
None |
Custom Cypher for graph traversal |
message_history_count |
10 |
Recent messages used for search query |
filter_stop_words |
None |
Filter stop words (defaults True for fulltext) |
Environment Variables
| Variable | Description |
|---|---|
NEO4J_URI |
Neo4j connection URI |
NEO4J_USERNAME |
Database username |
NEO4J_PASSWORD |
Database password |
NEO4J_INDEX_NAME |
Default index name |
NEO4J_VECTOR_INDEX_NAME |
Vector index name (default: chunkEmbeddings) |
NEO4J_FULLTEXT_INDEX_NAME |
Fulltext index name (default: search_chunks) |
AZURE_AI_PROJECT_ENDPOINT |
Azure AI project endpoint (for embeddings) |
AZURE_AI_EMBEDDING_NAME |
Embedding model name |
More Examples
See the samples directory for complete working examples.
Documentation
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_framework_neo4j-0.5.4.tar.gz.
File metadata
- Download URL: agent_framework_neo4j-0.5.4.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
afded2f7f93a1ae769eddb49814c4f0fe3ce82e1f7fdf011878233a3fec9ac5f
|
|
| MD5 |
42dd8c39361f90208ae972cec3c86b0a
|
|
| BLAKE2b-256 |
374ae322da45744fbfb6647497f709fbc29fe3c2377b64e2a53084269bd64804
|
Provenance
The following attestation bundles were made for agent_framework_neo4j-0.5.4.tar.gz:
Publisher:
release.yml on neo4j-labs/neo4j-maf-provider
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_framework_neo4j-0.5.4.tar.gz -
Subject digest:
afded2f7f93a1ae769eddb49814c4f0fe3ce82e1f7fdf011878233a3fec9ac5f - Sigstore transparency entry: 999898481
- Sigstore integration time:
-
Permalink:
neo4j-labs/neo4j-maf-provider@ebd1ca68dccd81743f770a004c9619ae254d1058 -
Branch / Tag:
refs/tags/v0.5.4 - Owner: https://github.com/neo4j-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ebd1ca68dccd81743f770a004c9619ae254d1058 -
Trigger Event:
push
-
Statement type:
File details
Details for the file agent_framework_neo4j-0.5.4-py3-none-any.whl.
File metadata
- Download URL: agent_framework_neo4j-0.5.4-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e69a55740c4714bcf4e1eeff31b2169dbef96533a7d8d6588309729074ce317a
|
|
| MD5 |
a2a80836554656032bd6f041dc0d1553
|
|
| BLAKE2b-256 |
4ba83a186c79146f7bff64918703c38f6e2ef016259581ef4be43b8b6fcb9f4d
|
Provenance
The following attestation bundles were made for agent_framework_neo4j-0.5.4-py3-none-any.whl:
Publisher:
release.yml on neo4j-labs/neo4j-maf-provider
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_framework_neo4j-0.5.4-py3-none-any.whl -
Subject digest:
e69a55740c4714bcf4e1eeff31b2169dbef96533a7d8d6588309729074ce317a - Sigstore transparency entry: 999898498
- Sigstore integration time:
-
Permalink:
neo4j-labs/neo4j-maf-provider@ebd1ca68dccd81743f770a004c9619ae254d1058 -
Branch / Tag:
refs/tags/v0.5.4 - Owner: https://github.com/neo4j-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ebd1ca68dccd81743f770a004c9619ae254d1058 -
Trigger Event:
push
-
Statement type: