File size: 2,917 Bytes
c59d808 |
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# Database and vector store configuration
import os
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
class DatabaseSettings:
"""Simple database settings class that reads environment variables directly"""
def __init__(self):
# ===========================================
# Vector Store Configuration
# ===========================================
self.VECTOR_STORE_PROVIDER = os.getenv("VECTOR_STORE_PROVIDER", "chromadb")
# ChromaDB Configuration
self.DB_PATH = os.getenv("DB_PATH", "./data/chromadb")
self.DB_COLLECTION_NAME = os.getenv("DB_COLLECTION_NAME", "recipes")
self.DB_PERSIST_DIRECTORY = os.getenv("DB_PERSIST_DIRECTORY", "./data/chromadb_persist")
self.DB_REFRESH_ON_START = os.getenv("DB_REFRESH_ON_START", "false").lower() == "true"
# MongoDB Atlas Configuration
self.MONGODB_URI = os.getenv("MONGODB_URI")
self.MONGODB_DATABASE = os.getenv("MONGODB_DATABASE", "recipe_bot")
self.MONGODB_COLLECTION = os.getenv("MONGODB_COLLECTION", "recipes")
self.MONGODB_INDEX_NAME = os.getenv("MONGODB_INDEX_NAME", "vector_index")
self.MONGODB_VECTOR_FIELD = os.getenv("MONGODB_VECTOR_FIELD", "embedding")
self.MONGODB_TEXT_FIELD = os.getenv("MONGODB_TEXT_FIELD", "text")
self.MONGODB_SIMILARITY_METRIC = os.getenv("MONGODB_SIMILARITY_METRIC", "cosine")
self.MONGODB_NUM_CANDIDATES = int(os.getenv("MONGODB_NUM_CANDIDATES", "50"))
def get_vector_store_config(self):
"""Get vector store configuration based on selected provider"""
if self.VECTOR_STORE_PROVIDER == "chromadb":
return {
"provider": "chromadb",
"path": self.DB_PATH,
"collection_name": self.DB_COLLECTION_NAME,
"persist_directory": self.DB_PERSIST_DIRECTORY,
"refresh_on_start": self.DB_REFRESH_ON_START
}
elif self.VECTOR_STORE_PROVIDER == "mongodb":
if not self.MONGODB_URI:
raise ValueError("MongoDB URI is required when using MongoDB Atlas as vector store")
return {
"provider": "mongodb",
"uri": self.MONGODB_URI,
"database": self.MONGODB_DATABASE,
"collection_name": self.MONGODB_COLLECTION,
"index_name": self.MONGODB_INDEX_NAME,
"vector_field": self.MONGODB_VECTOR_FIELD,
"text_field": self.MONGODB_TEXT_FIELD,
"similarity_metric": self.MONGODB_SIMILARITY_METRIC,
"num_candidates": self.MONGODB_NUM_CANDIDATES
}
else:
raise ValueError(f"Unsupported vector store provider: {self.VECTOR_STORE_PROVIDER}")
# Create global database settings instance
db_settings = DatabaseSettings()
|