|
|
@ -17,7 +17,7 @@ from typing import (
|
|
|
|
|
|
|
|
|
|
|
|
from langchain_core.documents import Document
|
|
|
|
from langchain_core.documents import Document
|
|
|
|
from langchain_core.embeddings import Embeddings
|
|
|
|
from langchain_core.embeddings import Embeddings
|
|
|
|
from langchain_core.utils import get_from_env
|
|
|
|
from langchain_core.utils import get_from_dict_or_env
|
|
|
|
from langchain_core.vectorstores import VectorStore
|
|
|
|
from langchain_core.vectorstores import VectorStore
|
|
|
|
|
|
|
|
|
|
|
|
from langchain_community.vectorstores.utils import DistanceStrategy
|
|
|
|
from langchain_community.vectorstores.utils import DistanceStrategy
|
|
|
@ -155,7 +155,7 @@ class Neo4jVector(VectorStore):
|
|
|
|
password: Optional[str] = None,
|
|
|
|
password: Optional[str] = None,
|
|
|
|
url: Optional[str] = None,
|
|
|
|
url: Optional[str] = None,
|
|
|
|
keyword_index_name: Optional[str] = "keyword",
|
|
|
|
keyword_index_name: Optional[str] = "keyword",
|
|
|
|
database: str = "neo4j",
|
|
|
|
database: Optional[str] = None,
|
|
|
|
index_name: str = "vector",
|
|
|
|
index_name: str = "vector",
|
|
|
|
node_label: str = "Chunk",
|
|
|
|
node_label: str = "Chunk",
|
|
|
|
embedding_node_property: str = "embedding",
|
|
|
|
embedding_node_property: str = "embedding",
|
|
|
@ -186,11 +186,19 @@ class Neo4jVector(VectorStore):
|
|
|
|
# Handle if the credentials are environment variables
|
|
|
|
# Handle if the credentials are environment variables
|
|
|
|
|
|
|
|
|
|
|
|
# Support URL for backwards compatibility
|
|
|
|
# Support URL for backwards compatibility
|
|
|
|
url = os.environ.get("NEO4J_URL", url)
|
|
|
|
if not url:
|
|
|
|
url = get_from_env("url", "NEO4J_URI", url)
|
|
|
|
url = os.environ.get("NEO4J_URL")
|
|
|
|
username = get_from_env("username", "NEO4J_USERNAME", username)
|
|
|
|
|
|
|
|
password = get_from_env("password", "NEO4J_PASSWORD", password)
|
|
|
|
url = get_from_dict_or_env({"url": url}, "url", "NEO4J_URI")
|
|
|
|
database = get_from_env("database", "NEO4J_DATABASE", database)
|
|
|
|
username = get_from_dict_or_env(
|
|
|
|
|
|
|
|
{"username": username}, "username", "NEO4J_USERNAME"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
password = get_from_dict_or_env(
|
|
|
|
|
|
|
|
{"password": password}, "password", "NEO4J_PASSWORD"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
database = get_from_dict_or_env(
|
|
|
|
|
|
|
|
{"database": database}, "database", "NEO4J_DATABASE", "neo4j"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
self._driver = neo4j.GraphDatabase.driver(url, auth=(username, password))
|
|
|
|
self._driver = neo4j.GraphDatabase.driver(url, auth=(username, password))
|
|
|
|
self._database = database
|
|
|
|
self._database = database
|
|
|
|