yangdx commited on
Commit
31269c4
·
1 Parent(s): ca122a4

Remove unnesessary CLI arguments, reduce CLI arguments complexity

Browse files

• Move storage config from CLI
• Move LLM and embedding binding config from CLI
• Remove chunk config from CLI

Files changed (1) hide show
  1. lightrag/api/utils_api.py +36 -112
lightrag/api/utils_api.py CHANGED
@@ -122,47 +122,6 @@ def parse_args() -> argparse.Namespace:
122
  description="LightRAG FastAPI Server with separate working and input directories"
123
  )
124
 
125
- parser.add_argument(
126
- "--kv-storage",
127
- default=get_env_value(
128
- "LIGHTRAG_KV_STORAGE", DefaultRAGStorageConfig.KV_STORAGE
129
- ),
130
- help=f"KV storage implementation (default: {DefaultRAGStorageConfig.KV_STORAGE})",
131
- )
132
- parser.add_argument(
133
- "--doc-status-storage",
134
- default=get_env_value(
135
- "LIGHTRAG_DOC_STATUS_STORAGE", DefaultRAGStorageConfig.DOC_STATUS_STORAGE
136
- ),
137
- help=f"Document status storage implementation (default: {DefaultRAGStorageConfig.DOC_STATUS_STORAGE})",
138
- )
139
- parser.add_argument(
140
- "--graph-storage",
141
- default=get_env_value(
142
- "LIGHTRAG_GRAPH_STORAGE", DefaultRAGStorageConfig.GRAPH_STORAGE
143
- ),
144
- help=f"Graph storage implementation (default: {DefaultRAGStorageConfig.GRAPH_STORAGE})",
145
- )
146
- parser.add_argument(
147
- "--vector-storage",
148
- default=get_env_value(
149
- "LIGHTRAG_VECTOR_STORAGE", DefaultRAGStorageConfig.VECTOR_STORAGE
150
- ),
151
- help=f"Vector storage implementation (default: {DefaultRAGStorageConfig.VECTOR_STORAGE})",
152
- )
153
-
154
- # Bindings configuration
155
- parser.add_argument(
156
- "--llm-binding",
157
- default=get_env_value("LLM_BINDING", "ollama"),
158
- help="LLM binding to be used. Supported: lollms, ollama, openai (default: from env or ollama)",
159
- )
160
- parser.add_argument(
161
- "--embedding-binding",
162
- default=get_env_value("EMBEDDING_BINDING", "ollama"),
163
- help="Embedding binding to be used. Supported: lollms, ollama, openai (default: from env or ollama)",
164
- )
165
-
166
  # Server configuration
167
  parser.add_argument(
168
  "--host",
@@ -188,65 +147,6 @@ def parse_args() -> argparse.Namespace:
188
  help="Directory containing input documents (default: from env or ./inputs)",
189
  )
190
 
191
- # LLM Model configuration
192
- parser.add_argument(
193
- "--llm-binding-host",
194
- default=get_env_value("LLM_BINDING_HOST", None),
195
- help="LLM server host URL. If not provided, defaults based on llm-binding:\n"
196
- + "- ollama: http://localhost:11434\n"
197
- + "- lollms: http://localhost:9600\n"
198
- + "- openai: https://api.openai.com/v1",
199
- )
200
-
201
- default_llm_api_key = get_env_value("LLM_BINDING_API_KEY", None)
202
-
203
- parser.add_argument(
204
- "--llm-binding-api-key",
205
- default=default_llm_api_key,
206
- help="llm server API key (default: from env or empty string)",
207
- )
208
-
209
- parser.add_argument(
210
- "--llm-model",
211
- default=get_env_value("LLM_MODEL", "mistral-nemo:latest"),
212
- help="LLM model name (default: from env or mistral-nemo:latest)",
213
- )
214
-
215
- # Embedding model configuration
216
- parser.add_argument(
217
- "--embedding-binding-host",
218
- default=get_env_value("EMBEDDING_BINDING_HOST", None),
219
- help="Embedding server host URL. If not provided, defaults based on embedding-binding:\n"
220
- + "- ollama: http://localhost:11434\n"
221
- + "- lollms: http://localhost:9600\n"
222
- + "- openai: https://api.openai.com/v1",
223
- )
224
-
225
- default_embedding_api_key = get_env_value("EMBEDDING_BINDING_API_KEY", "")
226
- parser.add_argument(
227
- "--embedding-binding-api-key",
228
- default=default_embedding_api_key,
229
- help="embedding server API key (default: from env or empty string)",
230
- )
231
-
232
- parser.add_argument(
233
- "--embedding-model",
234
- default=get_env_value("EMBEDDING_MODEL", "bge-m3:latest"),
235
- help="Embedding model name (default: from env or bge-m3:latest)",
236
- )
237
-
238
- parser.add_argument(
239
- "--chunk_size",
240
- default=get_env_value("CHUNK_SIZE", 1200),
241
- help="chunk chunk size default 1200",
242
- )
243
-
244
- parser.add_argument(
245
- "--chunk_overlap_size",
246
- default=get_env_value("CHUNK_OVERLAP_SIZE", 100),
247
- help="chunk overlap size default 100",
248
- )
249
-
250
  def timeout_type(value):
251
  if value is None or value == "None":
252
  return None
@@ -272,18 +172,6 @@ def parse_args() -> argparse.Namespace:
272
  default=get_env_value("MAX_TOKENS", 32768, int),
273
  help="Maximum token size (default: from env or 32768)",
274
  )
275
- parser.add_argument(
276
- "--embedding-dim",
277
- type=int,
278
- default=get_env_value("EMBEDDING_DIM", 1024, int),
279
- help="Embedding dimensions (default: from env or 1024)",
280
- )
281
- parser.add_argument(
282
- "--max-embed-tokens",
283
- type=int,
284
- default=get_env_value("MAX_EMBED_TOKENS", 8192, int),
285
- help="Maximum embedding token size (default: from env or 8192)",
286
- )
287
 
288
  # Logging configuration
289
  parser.add_argument(
@@ -376,6 +264,42 @@ def parse_args() -> argparse.Namespace:
376
  args.working_dir = os.path.abspath(args.working_dir)
377
  args.input_dir = os.path.abspath(args.input_dir)
378
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  ollama_server_infos.LIGHTRAG_MODEL = args.simulated_model_name
380
 
381
  return args
 
122
  description="LightRAG FastAPI Server with separate working and input directories"
123
  )
124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  # Server configuration
126
  parser.add_argument(
127
  "--host",
 
147
  help="Directory containing input documents (default: from env or ./inputs)",
148
  )
149
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  def timeout_type(value):
151
  if value is None or value == "None":
152
  return None
 
172
  default=get_env_value("MAX_TOKENS", 32768, int),
173
  help="Maximum token size (default: from env or 32768)",
174
  )
 
 
 
 
 
 
 
 
 
 
 
 
175
 
176
  # Logging configuration
177
  parser.add_argument(
 
264
  args.working_dir = os.path.abspath(args.working_dir)
265
  args.input_dir = os.path.abspath(args.input_dir)
266
 
267
+ # Inject storage configuration from environment variables
268
+ args.kv_storage = get_env_value(
269
+ "LIGHTRAG_KV_STORAGE", DefaultRAGStorageConfig.KV_STORAGE
270
+ )
271
+ args.doc_status_storage = get_env_value(
272
+ "LIGHTRAG_DOC_STATUS_STORAGE", DefaultRAGStorageConfig.DOC_STATUS_STORAGE
273
+ )
274
+ args.graph_storage = get_env_value(
275
+ "LIGHTRAG_GRAPH_STORAGE", DefaultRAGStorageConfig.GRAPH_STORAGE
276
+ )
277
+ args.vector_storage = get_env_value(
278
+ "LIGHTRAG_VECTOR_STORAGE", DefaultRAGStorageConfig.VECTOR_STORAGE
279
+ )
280
+
281
+ # Inject binding configuration
282
+ args.llm_binding = get_env_value("LLM_BINDING", "ollama")
283
+ args.embedding_binding = get_env_value("EMBEDDING_BINDING", "ollama")
284
+ args.llm_binding_host = get_env_value(
285
+ "LLM_BINDING_HOST", get_default_host(args.llm_binding)
286
+ )
287
+ args.embedding_binding_host = get_env_value(
288
+ "EMBEDDING_BINDING_HOST", get_default_host(args.embedding_binding)
289
+ )
290
+ args.llm_binding_api_key = get_env_value("LLM_BINDING_API_KEY", None)
291
+ args.embedding_binding_api_key = get_env_value("EMBEDDING_BINDING_API_KEY", "")
292
+
293
+ # Inject model configuration
294
+ args.llm_model = get_env_value("LLM_MODEL", "mistral-nemo:latest")
295
+ args.embedding_model = get_env_value("EMBEDDING_MODEL", "bge-m3:latest")
296
+ args.embedding_dim = get_env_value("EMBEDDING_DIM", 1024, int)
297
+ args.max_embed_tokens = get_env_value("MAX_EMBED_TOKENS", 8192, int)
298
+
299
+ # Inject chunk configuration
300
+ args.chunk_size = get_env_value("CHUNK_SIZE", 1200, int)
301
+ args.chunk_overlap_size = get_env_value("CHUNK_OVERLAP_SIZE", 100, int)
302
+
303
  ollama_server_infos.LIGHTRAG_MODEL = args.simulated_model_name
304
 
305
  return args