feat: add qdrant and neo4j for RAG vector/graph storage
Adds the two databases as infra services (own volume, ai-stack network, host-published UI ports like comfyui) for an upcoming RAG pipeline. Extraction/chunking/orchestration code is out of scope for this repo — it's app logic that calls into these DBs and llama-server, not compose infra. Neo4j password follows the omniroute secret pattern: blank in .env.example, auto-generated by scripts/update.sh. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DjhxWirQepKFEQj1huXNJR
This commit is contained in:
@@ -141,3 +141,8 @@ LLAMA_FAST_PARALLEL=1
|
|||||||
COMFYUI_DIFFUSION_MODEL_FILE=qwen_image_fp8_e4m3fn.safetensors
|
COMFYUI_DIFFUSION_MODEL_FILE=qwen_image_fp8_e4m3fn.safetensors
|
||||||
COMFYUI_TEXT_ENCODER_FILE=qwen_2.5_vl_7b_fp8_scaled.safetensors
|
COMFYUI_TEXT_ENCODER_FILE=qwen_2.5_vl_7b_fp8_scaled.safetensors
|
||||||
COMFYUI_VAE_FILE=qwen_image_vae.safetensors
|
COMFYUI_VAE_FILE=qwen_image_vae.safetensors
|
||||||
|
|
||||||
|
# --- RAG databases (qdrant + neo4j, see wayfinder notes) ---
|
||||||
|
# No auth on qdrant (its default) — same trust boundary as llama-server:
|
||||||
|
# ai-stack is not exposed off-box. Random, filled in automatically:
|
||||||
|
NEO4J_PASSWORD=
|
||||||
|
|||||||
@@ -303,6 +303,34 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- llama-server
|
- llama-server
|
||||||
|
|
||||||
|
# RAG vector store — see docs/agents/... (wayfinder). Dashboard UI published
|
||||||
|
# directly like comfyui above, not gatewayed through omniroute (it isn't an
|
||||||
|
# LLM provider).
|
||||||
|
qdrant:
|
||||||
|
image: qdrant/qdrant:latest
|
||||||
|
container_name: qdrant
|
||||||
|
volumes:
|
||||||
|
- qdrant-data:/qdrant/storage
|
||||||
|
ports:
|
||||||
|
- "6333:6333"
|
||||||
|
restart: unless-stopped
|
||||||
|
networks: [ai-stack]
|
||||||
|
|
||||||
|
# RAG graph store, native vector index too (can absorb qdrant's job later
|
||||||
|
# if the two-DB split proves unnecessary — see wayfinder notes).
|
||||||
|
neo4j:
|
||||||
|
image: neo4j:5-community
|
||||||
|
container_name: neo4j
|
||||||
|
environment:
|
||||||
|
- NEO4J_AUTH=neo4j/${NEO4J_PASSWORD:?run scripts/update.sh first to resolve this}
|
||||||
|
volumes:
|
||||||
|
- neo4j-data:/data
|
||||||
|
ports:
|
||||||
|
- "7474:7474" # browser UI
|
||||||
|
- "7687:7687" # bolt
|
||||||
|
restart: unless-stopped
|
||||||
|
networks: [ai-stack]
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
ai-stack:
|
ai-stack:
|
||||||
|
|
||||||
@@ -310,3 +338,5 @@ volumes:
|
|||||||
models:
|
models:
|
||||||
omniroute-data:
|
omniroute-data:
|
||||||
comfyui-data:
|
comfyui-data:
|
||||||
|
qdrant-data:
|
||||||
|
neo4j-data:
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ set_if_blank OMNIROUTE_STORAGE_ENCRYPTION_KEY "$(openssl rand -hex 32)"
|
|||||||
set_if_blank OMNIROUTE_MACHINE_ID_SALT "$(openssl rand -hex 16)"
|
set_if_blank OMNIROUTE_MACHINE_ID_SALT "$(openssl rand -hex 16)"
|
||||||
set_if_blank OMNIROUTE_CLI_SALT "$(openssl rand -hex 16)"
|
set_if_blank OMNIROUTE_CLI_SALT "$(openssl rand -hex 16)"
|
||||||
set_if_blank OMNIROUTE_WS_BRIDGE_SECRET "$(openssl rand -hex 32)"
|
set_if_blank OMNIROUTE_WS_BRIDGE_SECRET "$(openssl rand -hex 32)"
|
||||||
|
set_if_blank NEO4J_PASSWORD "$(openssl rand -hex 16)"
|
||||||
|
|
||||||
echo "==> resolving SEARXNG_LAN_IP"
|
echo "==> resolving SEARXNG_LAN_IP"
|
||||||
# search.home is a LAN mDNS/local-DNS name — resolvable from this host, just
|
# search.home is a LAN mDNS/local-DNS name — resolvable from this host, just
|
||||||
|
|||||||
Reference in New Issue
Block a user