Spaces:
Configuration error
Configuration error
File size: 1,468 Bytes
ceaf3bb 9ec5a92 ceaf3bb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import os
import hashlib
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
def get_base_directory() -> str:
"""
HF Spaces-safe data root:
- Prefer explicit override via APP_DATA_DIR or PERSISTENT_STORAGE_PATH
- Else use /data/<app> only if it exists and is writable
- Else use $HOME/.cache/<app>
- Else use /tmp/<app>
"""
override = (os.environ.get("APP_DATA_DIR") or os.environ.get("PERSISTENT_STORAGE_PATH") or "").strip()
if override:
os.makedirs(override, exist_ok=True)
return override
if os.path.isdir("/data") and os.access("/data", os.W_OK):
base = "/data/pdf-rag"
os.makedirs(base, exist_ok=True)
return base
home = os.environ.get("HOME")
if home:
base = os.path.join(home, ".cache", "pdf-rag")
os.makedirs(base, exist_ok=True)
return base
base = "/tmp/pdf-rag"
os.makedirs(base, exist_ok=True)
return base
# Define path relative to the base directory
CHROMA_DB_BASE = os.path.join(get_base_directory(), "root databases")
os.makedirs(CHROMA_DB_BASE, exist_ok=True)
def compute_file_hash(content: bytes) -> str:
return hashlib.md5(content).hexdigest()
def get_vectorstore(category: str, embedding_model):
path = os.path.join(CHROMA_DB_BASE, category.strip())
os.makedirs(path, exist_ok=True)
return Chroma(persist_directory=path, embedding_function=embedding_model) |