forked from open-webui/open-webui
		
	feat: external embeddings support
This commit is contained in:
		
							parent
							
								
									8b10b058e5
								
							
						
					
					
						commit
						2952e61167
					
				
					 6 changed files with 312 additions and 118 deletions
				
			
		|  | @ -654,6 +654,55 @@ async def generate_embeddings( | |||
|         ) | ||||
| 
 | ||||
| 
 | ||||
| def generate_ollama_embeddings( | ||||
|     form_data: GenerateEmbeddingsForm, | ||||
|     url_idx: Optional[int] = None, | ||||
| ): | ||||
|     if url_idx == None: | ||||
|         model = form_data.model | ||||
| 
 | ||||
|         if ":" not in model: | ||||
|             model = f"{model}:latest" | ||||
| 
 | ||||
|         if model in app.state.MODELS: | ||||
|             url_idx = random.choice(app.state.MODELS[model]["urls"]) | ||||
|         else: | ||||
|             raise HTTPException( | ||||
|                 status_code=400, | ||||
|                 detail=ERROR_MESSAGES.MODEL_NOT_FOUND(form_data.model), | ||||
|             ) | ||||
| 
 | ||||
|     url = app.state.OLLAMA_BASE_URLS[url_idx] | ||||
|     log.info(f"url: {url}") | ||||
| 
 | ||||
|     try: | ||||
|         r = requests.request( | ||||
|             method="POST", | ||||
|             url=f"{url}/api/embeddings", | ||||
|             data=form_data.model_dump_json(exclude_none=True).encode(), | ||||
|         ) | ||||
|         r.raise_for_status() | ||||
| 
 | ||||
|         data = r.json() | ||||
| 
 | ||||
|         if "embedding" in data: | ||||
|             return data["embedding"] | ||||
|         else: | ||||
|             raise "Something went wrong :/" | ||||
|     except Exception as e: | ||||
|         log.exception(e) | ||||
|         error_detail = "Open WebUI: Server Connection Error" | ||||
|         if r is not None: | ||||
|             try: | ||||
|                 res = r.json() | ||||
|                 if "error" in res: | ||||
|                     error_detail = f"Ollama: {res['error']}" | ||||
|             except: | ||||
|                 error_detail = f"Ollama: {e}" | ||||
| 
 | ||||
|         raise error_detail | ||||
| 
 | ||||
| 
 | ||||
| class GenerateCompletionForm(BaseModel): | ||||
|     model: str | ||||
|     prompt: str | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek