|
@@ -75,6 +75,8 @@ from open_webui.config import (
|
|
|
RAG_FILE_MAX_SIZE,
|
|
|
RAG_OPENAI_API_BASE_URL,
|
|
|
RAG_OPENAI_API_KEY,
|
|
|
+ RAG_OLLAMA_BASE_URL,
|
|
|
+ RAG_OLLAMA_API_KEY,
|
|
|
RAG_RELEVANCE_THRESHOLD,
|
|
|
RAG_RERANKING_MODEL,
|
|
|
RAG_RERANKING_MODEL_AUTO_UPDATE,
|
|
@@ -163,6 +165,9 @@ app.state.config.RAG_TEMPLATE = RAG_TEMPLATE
|
|
|
app.state.config.OPENAI_API_BASE_URL = RAG_OPENAI_API_BASE_URL
|
|
|
app.state.config.OPENAI_API_KEY = RAG_OPENAI_API_KEY
|
|
|
|
|
|
+app.state.config.OLLAMA_BASE_URL = RAG_OLLAMA_BASE_URL
|
|
|
+app.state.config.OLLAMA_API_KEY = RAG_OLLAMA_API_KEY
|
|
|
+
|
|
|
app.state.config.PDF_EXTRACT_IMAGES = PDF_EXTRACT_IMAGES
|
|
|
|
|
|
app.state.config.YOUTUBE_LOADER_LANGUAGE = YOUTUBE_LOADER_LANGUAGE
|
|
@@ -261,8 +266,16 @@ app.state.EMBEDDING_FUNCTION = get_embedding_function(
|
|
|
app.state.config.RAG_EMBEDDING_ENGINE,
|
|
|
app.state.config.RAG_EMBEDDING_MODEL,
|
|
|
app.state.sentence_transformer_ef,
|
|
|
- app.state.config.OPENAI_API_KEY,
|
|
|
- app.state.config.OPENAI_API_BASE_URL,
|
|
|
+ (
|
|
|
+ app.state.config.OPENAI_API_BASE_URL
|
|
|
+ if app.state.config.RAG_EMBEDDING_ENGINE == "openai"
|
|
|
+ else app.state.config.OLLAMA_BASE_URL
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ app.state.config.OPENAI_API_KEY
|
|
|
+ if app.state.config.RAG_EMBEDDING_ENGINE == "openai"
|
|
|
+ else app.state.config.OLLAMA_API_KEY
|
|
|
+ ),
|
|
|
app.state.config.RAG_EMBEDDING_BATCH_SIZE,
|
|
|
)
|
|
|
|
|
@@ -312,6 +325,10 @@ async def get_embedding_config(user=Depends(get_admin_user)):
|
|
|
"url": app.state.config.OPENAI_API_BASE_URL,
|
|
|
"key": app.state.config.OPENAI_API_KEY,
|
|
|
},
|
|
|
+ "ollama_config": {
|
|
|
+ "url": app.state.config.OLLAMA_BASE_URL,
|
|
|
+ "key": app.state.config.OLLAMA_API_KEY,
|
|
|
+ },
|
|
|
}
|
|
|
|
|
|
|
|
@@ -328,8 +345,14 @@ class OpenAIConfigForm(BaseModel):
|
|
|
key: str
|
|
|
|
|
|
|
|
|
+class OllamaConfigForm(BaseModel):
|
|
|
+ url: str
|
|
|
+ key: str
|
|
|
+
|
|
|
+
|
|
|
class EmbeddingModelUpdateForm(BaseModel):
|
|
|
openai_config: Optional[OpenAIConfigForm] = None
|
|
|
+ ollama_config: Optional[OllamaConfigForm] = None
|
|
|
embedding_engine: str
|
|
|
embedding_model: str
|
|
|
embedding_batch_size: Optional[int] = 1
|
|
@@ -350,6 +373,11 @@ async def update_embedding_config(
|
|
|
if form_data.openai_config is not None:
|
|
|
app.state.config.OPENAI_API_BASE_URL = form_data.openai_config.url
|
|
|
app.state.config.OPENAI_API_KEY = form_data.openai_config.key
|
|
|
+
|
|
|
+ if form_data.ollama_config is not None:
|
|
|
+ app.state.config.OLLAMA_BASE_URL = form_data.ollama_config.url
|
|
|
+ app.state.config.OLLAMA_API_KEY = form_data.ollama_config.key
|
|
|
+
|
|
|
app.state.config.RAG_EMBEDDING_BATCH_SIZE = form_data.embedding_batch_size
|
|
|
|
|
|
update_embedding_model(app.state.config.RAG_EMBEDDING_MODEL)
|
|
@@ -358,8 +386,16 @@ async def update_embedding_config(
|
|
|
app.state.config.RAG_EMBEDDING_ENGINE,
|
|
|
app.state.config.RAG_EMBEDDING_MODEL,
|
|
|
app.state.sentence_transformer_ef,
|
|
|
- app.state.config.OPENAI_API_KEY,
|
|
|
- app.state.config.OPENAI_API_BASE_URL,
|
|
|
+ (
|
|
|
+ app.state.config.OPENAI_API_BASE_URL
|
|
|
+ if app.state.config.RAG_EMBEDDING_ENGINE == "openai"
|
|
|
+ else app.state.config.OLLAMA_BASE_URL
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ app.state.config.OPENAI_API_KEY
|
|
|
+ if app.state.config.RAG_EMBEDDING_ENGINE == "openai"
|
|
|
+ else app.state.config.OLLAMA_API_KEY
|
|
|
+ ),
|
|
|
app.state.config.RAG_EMBEDDING_BATCH_SIZE,
|
|
|
)
|
|
|
|
|
@@ -372,6 +408,10 @@ async def update_embedding_config(
|
|
|
"url": app.state.config.OPENAI_API_BASE_URL,
|
|
|
"key": app.state.config.OPENAI_API_KEY,
|
|
|
},
|
|
|
+ "ollama_config": {
|
|
|
+ "url": app.state.config.OLLAMA_BASE_URL,
|
|
|
+ "key": app.state.config.OLLAMA_API_KEY,
|
|
|
+ },
|
|
|
}
|
|
|
except Exception as e:
|
|
|
log.exception(f"Problem updating embedding model: {e}")
|
|
@@ -785,8 +825,16 @@ def save_docs_to_vector_db(
|
|
|
app.state.config.RAG_EMBEDDING_ENGINE,
|
|
|
app.state.config.RAG_EMBEDDING_MODEL,
|
|
|
app.state.sentence_transformer_ef,
|
|
|
- app.state.config.OPENAI_API_KEY,
|
|
|
- app.state.config.OPENAI_API_BASE_URL,
|
|
|
+ (
|
|
|
+ app.state.config.OPENAI_API_BASE_URL
|
|
|
+ if app.state.config.RAG_EMBEDDING_ENGINE == "openai"
|
|
|
+ else app.state.config.OLLAMA_BASE_URL
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ app.state.config.OPENAI_API_KEY
|
|
|
+ if app.state.config.RAG_EMBEDDING_ENGINE == "openai"
|
|
|
+ else app.state.config.OLLAMA_API_KEY
|
|
|
+ ),
|
|
|
app.state.config.RAG_EMBEDDING_BATCH_SIZE,
|
|
|
)
|
|
|
|