This repo provides a docker setup to run the LangChain neo4j-advanced-rag template using langserve.
-
Example LangSmith traces (using the Dune content from the template)
- Create a
.env
file:
OPENAI_API_KEY=sk-...
LANGCHAIN_API_KEY=ls__...
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_TRACING_V2=true
LANGCHAIN_PROJECT="langchain-neo4j-advanced-rag-docker"
NEO4J_PASSWORD=langchain-neo4j-advanced-rag-docker
- Create a
docker-compose.yml
file:
version: '3.8'
services:
neo4j:
image: neo4j:5.14.0
container_name: neo4j
volumes:
- neo4j-data:/data
environment:
- "NEO4J_AUTH=neo4j/${NEO4J_PASSWORD:-langchain-neo4j-advanced-rag-docker}"
- "NEO4J_PLUGINS=[\"apoc\"]"
networks:
- langchain-neo4j-advanced-rag-docker
healthcheck:
test: wget http://localhost:7474 || exit 1
interval: 1s
timeout: 10s
retries: 20
start_period: 3s
restart: always
neo4j-init:
image: joshuasundance/langchain-neo4j-advanced-rag-docker:1.0.4
container_name: neo4j-init
environment:
- "OPENAI_API_KEY=${OPENAI_API_KEY:?}"
- "NEO4J_URI=bolt://neo4j:7687"
- "NEO4J_USERNAME=neo4j"
- "NEO4J_PASSWORD=${NEO4J_PASSWORD:-langchain-neo4j-advanced-rag-docker}"
- "LANGCHAIN_API_KEY=${LANGCHAIN_API_KEY-placeholder}"
- "LANGCHAIN_TRACING_V2=${LANGCHAIN_TRACING_V2:-false}"
- "LANGCHAIN_PROJECT=${LANGCHAIN_PROJECT:-langchain-neo4j-advanced-rag-docker}"
depends_on:
neo4j:
condition: service_healthy
networks:
- langchain-neo4j-advanced-rag-docker
command: ["/bin/bash", "/home/appuser/neo4j-advanced-rag/ingest.sh"]
langchain-neo4j-advanced-rag-docker:
image: joshuasundance/langchain-neo4j-advanced-rag-docker:1.0.4
container_name: langchain-neo4j-advanced-rag-docker
environment:
- "OPENAI_API_KEY=${OPENAI_API_KEY:?}"
- "NEO4J_URI=bolt://neo4j:7687"
- "NEO4J_USERNAME=neo4j"
- "NEO4J_PASSWORD=${NEO4J_PASSWORD:-langchain-neo4j-advanced-rag-docker}"
- "LANGCHAIN_API_KEY=${LANGCHAIN_API_KEY-placeholder}"
- "LANGCHAIN_TRACING_V2=${LANGCHAIN_TRACING_V2:-false}"
- "LANGCHAIN_PROJECT=${LANGCHAIN_PROJECT:-langchain-neo4j-advanced-rag-docker}"
ports:
- "${APP_PORT:-8000}:8000"
depends_on:
neo4j:
condition: service_healthy
neo4j-init:
condition: service_completed_successfully
networks:
- langchain-neo4j-advanced-rag-docker
volumes:
neo4j-data:
networks:
langchain-neo4j-advanced-rag-docker:
driver: bridge
- Start the services using
docker compose up
docker run -d --name langchain-neo4j-advanced-rag-docker \
-e OPENAI_API_KEY=sk-... \
-e LANGCHAIN_API_KEY=ls__... \
-e LANGCHAIN_TRACING_V2=true \
-e LANGCHAIN_PROJECT=langchain-neo4j-advanced-rag-docker \
-e NEO4J_URI=... \
-e NEO4J_USERNAME=... \
-e NEO4J_PASSWORD=... \
-p 8000:8000 \
joshuasundance/langchain-neo4j-advanced-rag-docker:1.0.4
-
The service will be available at
http://localhost:8000
. -
You can access the OpenAPI documentation at
http://localhost:8000/docs
,http://localhost:8000/redoc
, andhttp://localhost:8000/openapi.json
. -
Access the Research Playground at
http://127.0.0.1:8000/neo4j-advanced-rag/playground/
. -
You can also use the
RemoteRunnable
class to interact with the service:
from langserve.client import RemoteRunnable
runnable = RemoteRunnable("http://localhost:8000/neo4j-advanced-rag")
See the LangChain docs for more information.