|
|
|
|
|
import os |
|
|
from dotenv import load_dotenv |
|
|
|
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
class DatabaseSettings: |
|
|
"""Simple database settings class that reads environment variables directly""" |
|
|
|
|
|
def __init__(self): |
|
|
|
|
|
|
|
|
|
|
|
self.VECTOR_STORE_PROVIDER = os.getenv("VECTOR_STORE_PROVIDER", "chromadb") |
|
|
|
|
|
|
|
|
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" |
|
|
|
|
|
|
|
|
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}") |
|
|
|
|
|
|
|
|
db_settings = DatabaseSettings() |
|
|
|