@@ -90,13 +90,64 @@ def get_activation_vllm_config() -> dict[str, Any]:
9090 }
9191
9292 @staticmethod
93- def get_neo4j_config () -> dict [str , Any ]:
93+ def get_embedder_config () -> dict [str , Any ]:
94+ """Get embedder configuration."""
95+ embedder_backend = os .getenv ("MOS_EMBEDDER_BACKEND" , "ollama" )
96+
97+ if embedder_backend == "universal_api" :
98+ return {
99+ "backend" : "universal_api" ,
100+ "config" : {
101+ "provider" : os .getenv ("MOS_EMBEDDER_PROVIDER" , "openai" ),
102+ "api_key" : os .getenv ("OPENAI_API_KEY" , "sk-xxxx" ),
103+ "model_name_or_path" : os .getenv ("MOS_EMBEDDER_MODEL" , "text-embedding-3-large" ),
104+ "base_url" : os .getenv ("OPENAI_API_BASE" , "http://openai.com" ),
105+ },
106+ }
107+ else : # ollama
108+ return {
109+ "backend" : "ollama" ,
110+ "config" : {
111+ "model_name_or_path" : os .getenv (
112+ "MOS_EMBEDDER_MODEL" , "nomic-embed-text:latest"
113+ ),
114+ "api_base" : os .getenv ("OLLAMA_API_BASE" , "http://localhost:11434" ),
115+ },
116+ }
117+
118+ @staticmethod
119+ def get_neo4j_config (user_id : str | None = None ) -> dict [str , Any ]:
120+ """Get Neo4j configuration."""
121+ if os .getenv ("MOS_NEO4J_SHARED_DB" , "false" ).lower () == "true" :
122+ return APIConfig .get_neo4j_shared_config (user_id )
123+ else :
124+ return APIConfig .get_noshared_neo4j_config (user_id )
125+
126+ @staticmethod
127+ def get_noshared_neo4j_config (user_id ) -> dict [str , Any ]:
94128 """Get Neo4j configuration."""
95129 return {
96130 "uri" : os .getenv ("NEO4J_URI" , "bolt://localhost:7687" ),
97131 "user" : os .getenv ("NEO4J_USER" , "neo4j" ),
132+ "db_name" : f"memos{ user_id .replace ('-' , '' )} " ,
98133 "password" : os .getenv ("NEO4J_PASSWORD" , "12345678" ),
99134 "auto_create" : True ,
135+ "use_multi_db" : True ,
136+ "embedding_dimension" : 3072 ,
137+ }
138+
139+ @staticmethod
140+ def get_neo4j_shared_config (user_id : str | None = None ) -> dict [str , Any ]:
141+ """Get Neo4j configuration."""
142+ return {
143+ "uri" : os .getenv ("NEO4J_URI" , "bolt://localhost:7687" ),
144+ "user" : os .getenv ("NEO4J_USER" , "neo4j" ),
145+ "db_name" : os .getenv ("NEO4J_DB_NAME" , "shared-tree-textual-memory" ),
146+ "password" : os .getenv ("NEO4J_PASSWORD" , "12345678" ),
147+ "user_name" : f"memos{ user_id .replace ('-' , '' )} " ,
148+ "auto_create" : True ,
149+ "use_multi_db" : False ,
150+ "embedding_dimension" : 3072 ,
100151 }
101152
102153 @staticmethod
@@ -157,13 +208,7 @@ def get_product_default_config() -> dict[str, Any]:
157208 "backend" : "openai" ,
158209 "config" : openai_config ,
159210 },
160- "embedder" : {
161- "backend" : "ollama" ,
162- "config" : {
163- "model_name_or_path" : "nomic-embed-text:latest" ,
164- "api_base" : os .getenv ("OLLAMA_API_BASE" , "http://localhost:11434" ),
165- },
166- },
211+ "embedder" : APIConfig .get_embedder_config (),
167212 "chunker" : {
168213 "backend" : "sentence" ,
169214 "config" : {
@@ -229,7 +274,7 @@ def get_start_default_config() -> dict[str, Any]:
229274 def create_user_config (user_name : str , user_id : str ) -> tuple [MOSConfig , GeneralMemCube ]:
230275 """Create configuration for a specific user."""
231276 openai_config = APIConfig .get_openai_config ()
232- neo4j_config = APIConfig .get_neo4j_config ()
277+ neo4j_config = APIConfig .get_neo4j_config (user_id )
233278 qwen_config = APIConfig .qwen_config ()
234279 vllm_config = APIConfig .vllm_config ()
235280 backend = os .getenv ("MOS_CHAT_MODEL_PROVIDER" , "openai" )
@@ -252,13 +297,7 @@ def create_user_config(user_name: str, user_id: str) -> tuple[MOSConfig, General
252297 "backend" : "openai" ,
253298 "config" : openai_config ,
254299 },
255- "embedder" : {
256- "backend" : "ollama" ,
257- "config" : {
258- "model_name_or_path" : "nomic-embed-text:latest" ,
259- "api_base" : os .getenv ("OLLAMA_API_BASE" , "http://localhost:11434" ),
260- },
261- },
300+ "embedder" : APIConfig .get_embedder_config (),
262301 "chunker" : {
263302 "backend" : "sentence" ,
264303 "config" : {
@@ -298,23 +337,9 @@ def create_user_config(user_name: str, user_id: str) -> tuple[MOSConfig, General
298337 "dispatcher_llm" : {"backend" : "openai" , "config" : openai_config },
299338 "graph_db" : {
300339 "backend" : "neo4j" ,
301- "config" : {
302- "uri" : neo4j_config ["uri" ],
303- "user" : neo4j_config ["user" ],
304- "password" : neo4j_config ["password" ],
305- "db_name" : os .getenv (
306- "NEO4J_DB_NAME" , f"memos{ user_id .replace ('-' , '' )} "
307- ), # , replace with
308- "auto_create" : neo4j_config ["auto_create" ],
309- },
310- },
311- "embedder" : {
312- "backend" : "ollama" ,
313- "config" : {
314- "model_name_or_path" : "nomic-embed-text:latest" ,
315- "api_base" : os .getenv ("OLLAMA_API_BASE" , "http://localhost:11434" ),
316- },
340+ "config" : neo4j_config ,
317341 },
342+ "embedder" : APIConfig .get_embedder_config (),
318343 },
319344 },
320345 "act_mem" : {}
@@ -338,7 +363,7 @@ def get_default_cube_config() -> GeneralMemCubeConfig | None:
338363 return None
339364
340365 openai_config = APIConfig .get_openai_config ()
341- neo4j_config = APIConfig .get_neo4j_config ()
366+ neo4j_config = APIConfig .get_neo4j_config (user_id = "default" )
342367
343368 return GeneralMemCubeConfig .model_validate (
344369 {
@@ -353,13 +378,7 @@ def get_default_cube_config() -> GeneralMemCubeConfig | None:
353378 "backend" : "neo4j" ,
354379 "config" : neo4j_config ,
355380 },
356- "embedder" : {
357- "backend" : "ollama" ,
358- "config" : {
359- "model_name_or_path" : "nomic-embed-text:latest" ,
360- "api_base" : os .getenv ("OLLAMA_API_BASE" , "http://localhost:11434" ),
361- },
362- },
381+ "embedder" : APIConfig .get_embedder_config (),
363382 "reorganize" : os .getenv ("MOS_ENABLE_REORGANIZE" , "false" ).lower () == "true" ,
364383 },
365384 },
0 commit comments