mirror of
https://github.com/open-webui/open-webui.git
synced 2026-07-16 23:21:44 -05:00
[GH-ISSUE #7942] issue: hybrid search #69542
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ghost on GitHub (Dec 19, 2024).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/7942
Bug Report
Installation Method
pip (updated once)
Environment
Open WebUI Version: v0.4.8
Ollama (if applicable): ollama -v = 0.5.4
Operating System: Ubuntu 24.04.1 LTS
Browser (if applicable): LibreWolf (Firefox fork from stable latest)
Confirmation:
Expected Behavior:
When invoking RAG on the referenced library (uploaded folder) with # it goes always with some info returning to me in the chat flow.
But I can't know reliably if it does what is to be expected from that - go through the chunks from that #referenced_folder (with help of some RAG template) as > embed <> rerank > send it to LLM.
Can get some sense only after it does something (because of what is returned back from LLM).
But as the results were often unsatisfactory did 'dig in the process' and actually seems to me it failing silently - with different stages - to be described below.
Only clear error is if the request is too big for context window of LLM, otherwise the effort is wasted or incomplete response.
Actual Behavior:
There are 3 states of what hybrid search (as sourcing document from knowledge/RAG) ending after run with my set up:
INFO [open_webui.apps.retrieval.utils] query_doc_with_hybrid_search:result [[]] [[]]For this obtained answer from LLM usually stating 'Unfortunately, no document was provided for this task. However, I can provide some general information ..' because there is no info processed from knowledge base.
/Deleted quite a lot of lines - should that be here(?) - it's similar to the Traceback, just different .py files./
ending with this:
and last part
Similar to(?) #https://github.com/open-webui/open-webui/discussions/7437
INFO [open_webui.apps.retrieval.utils] query_doc_with_hybrid_search:result.Usually if it return matching {chunks0},{chunk1}..up to {chunkXX}, that the next after this first is:
a) less filled or even empty,
or
b) empty and 3th containing few chunks
Obtained so far maximum of 3 returned if it does not fail.
Don't know really how many returned
query_doc_with_hybrid_search:result [[]] [[]]there should be.Description
Bug Summary:
It will be great to let me know there is some state of returned RAG and ask me if I would like to:
or
or
Reproduction Details
Steps to Reproduce:
Not sure if it can be reproduce, it just does happen, don't know why or how to trigger that with certainty.
My installation is, maybe that help:
starting service with env variable (
export USE_CUDA_DOCKER=true) in ~/.bashrc(Info from #https://github.com/open-webui/open-webui/discussions/6530)
source open-webui/venv/bin/activate
open-webui serve --port some_port
OWUI does start with CUDA info:
and only warning is
CORS_ALLOW_ORIGIN IS SET TO '*' - NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS.Ollama is running as well - from
watch -n 10 'journalctl -e -u ollama'I can't see any error during the RAG.Tika, Ollama and the Open AI API are OK - confirming connection in the settings.
Have Nvidia only with 4GB VRAM - yet models does fit in afaik.
(NVIDIA-SMI 550.120 Driver Version: 550.120 CUDA Version: 12.4)
GPU utilization spike up (when first attempt made after start of OWIU, it fill up VRAM or load again if there has been a release after no use for awhile) but despite that no returned data in array.
In case of Error it seems to me that there is attempt, but small spike just as quick sharp angle to be seen on graph.
But as I do not know for sure it happening until LLM response - do not catch that up yet to be sure.
Usually after one or occasionally more attempts there is meaningful outcome - if the empty one or error happened.
Also sometimes the referenced files are in line below response (if can't fit in, with drop down to list them all) and sometimes they are referenced directly in the response.
Not sure how can that be controlled so far - but definitely best LLM response is with direct link to the doc from rather than the below option.
Logs and Screenshots
Docker Container Logs:
Can only see those and the time does not match the behavior/attempts for RAG - it does match the document processing (embedding).
Example:
WARN [qtp47918293-17] 19:39:03,238 org.apache.pdfbox.pdmodel.font.PDTrueTypeFont Using fallback font LiberationSans for ArialMT
INFO [qtp47918293-21] 19:39:08,333 org.apache.tika.server.core.resource.TikaResource /tika (application/pdf)
Additional Information
feels a bit like happening often as with the first attempt to RAG the referenced library, or after starting the OWUI
do not know what that error is
that is somehow correct response from the hybrid search - just it's odd if multiple of them is returned with one empty
What is correct finish of this procedure anyway?
Overall - the very next invoked repeat from UI (so no change in prompt - just repeating the same again) are usually OK, rarely it fail twice in a row.
So far more than 200 questions in chat with RAG, multiple times did reset Upload and Vector storage.
Fiddling with Chunk params, Query params (Minimum score helps a lot to have at least 'some').
Changing the Embed/Rerank models (but mostly to fit it in VRAM and not having to wait for load while also can work RAG'ing through files - so can't compare much as bigger ones having problems as GPU memory insufficient - thus not anyhow related to this).
Found out this #https://github.com/open-webui/open-webui/discussions/3868#discussioncomment-10782274 - but unsure if that is the same case. My prompt is not above 2048 words/tokens counting for with RAG template, and my chunk is half size to be processed.
I'm missing something here maybe?
Did set the Context length to 4K at least for my chosen Embedding Model: nomic-embed-text:latest - run some RAG several times and still having for example the empty HS response case.
Can't set up that for reranker - it's downloaded (that can be seen in cli after pressing download button) but not in the Models list.
I do not import documents into chat but rather reference them after mass importing into knowledge base to have it more on one place - thematically. It's not big numbers - usually 20 or so books or up to 50 .pdf to keep the context of the files concentrated.
And also to ease the load on machine.
RAM definitely with some free space at the moment and the CPU doesn't spike more than +-2/3 utilization while normally processing from RAG with good outcome.
Info below this - outdated: this #https://github.com/open-webui/open-webui/discussions/7821#discussioncomment-11641870 does solve the VRAM problem for me so far. Retained for context.
@mahenning commented on GitHub (Dec 19, 2024):
Please add the full traceback for 2.
@mahenning commented on GitHub (Dec 19, 2024):
I can re-create 1., and I think the problem is the minimum score of 0.2, at least it is for me. My tested knowledge base is 4 documents of varying size and research topics, and if I ask a general question like
The LLM (gemma2:2b) can answer me, but the relevance scores are at max at 0.01 (you can click on a source below the answer to see the relevance scores). If I set the min score to 0.2, the model get none of the sources because of the low relevance score.
When I ask a question about e.g. swin transformers (one of the papers is about that), I get a lot of chunks that far exceeds the 0.2 threshold and are therefore used.
One other thing, when I use sentence transformers as embedding model, I get the following error:
open-webui version: 0.4.8, docker with CUDA
Model: gemma2:2b, Ollama (GPU)
Embedding settings:
@ghost commented on GitHub (Dec 22, 2024):
Yay, find it, there it is:
INFO [open_webui.apps.ollama.main] get_all_models() INFO [open_webui.apps.ollama.main] url: http://localhost:11434 ERROR [open_webui.apps.retrieval.utils] Error when querying the collection with hybrid_search: 'dict' object has no attribute 'split' Traceback (most recent call last): File "/home/home/open-webui/venv/lib/python3.11/site-packages/open_webui/apps/retrieval/utils.py", line 216, in query_collection_with_hybrid_search result = query_doc_with_hybrid_search( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/open_webui/apps/retrieval/utils.py", line 130, in query_doc_with_hybrid_search raise e File "/home/home/open-webui/venv/lib/python3.11/site-packages/open_webui/apps/retrieval/utils.py", line 117, in query_doc_with_hybrid_search result = compression_retriever.invoke(query) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain_core/retrievers.py", line 266, in invoke raise e File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain_core/retrievers.py", line 259, in invoke result = self._get_relevant_documents( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain/retrievers/contextual_compression.py", line 44, in _get_relevant_documents docs = self.base_retriever.invoke( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain/retrievers/ensemble.py", line 118, in invoke raise e File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain/retrievers/ensemble.py", line 115, in invoke result = self.rank_fusion(input, run_manager=run_manager, config=config) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain/retrievers/ensemble.py", line 222, in rank_fusion retriever_docs = [ ^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain/retrievers/ensemble.py", line 223, in <listcomp> retriever.invoke( File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain_core/retrievers.py", line 266, in invoke raise e File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain_core/retrievers.py", line 259, in invoke result = self._get_relevant_documents( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain_community/retrievers/bm25.py", line 101, in _get_relevant_documents processed_query = self.preprocess_func(query) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/langchain_community/retrievers/bm25.py", line 12, in default_preprocessing_func return text.split() ^^^^^^^^^^ AttributeError: 'dict' object has no attribute 'split' 400 Client Error: Bad Request for url: http://localhost:11434/api/embed 'NoneType' object has no attribute 'ids' ERROR [open_webui.apps.retrieval.utils] Error when querying the collection: 'NoneType' object has no attribute 'ids' Traceback (most recent call last): File "/home/home/open-webui/venv/lib/python3.11/site-packages/open_webui/apps/retrieval/utils.py", line 188, in query_collection result = query_doc( ^^^^^^^^^^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/open_webui/apps/retrieval/utils.py", line 77, in query_doc raise e File "/home/home/open-webui/venv/lib/python3.11/site-packages/open_webui/apps/retrieval/utils.py", line 73, in query_doc log.info(f"query_doc:result {result.ids} {result.metadatas}") ^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'ids' 400 Client Error: Bad Request for url: http://localhost:11434/api/embed 'NoneType' object has no attribute 'ids' ERROR [open_webui.apps.retrieval.utils] Error when querying the collection: 'NoneType' object has no attribute 'ids' Traceback (most recent call last): File "/home/home/open-webui/venv/lib/python3.11/site-packages/open_webui/apps/retrieval/utils.py", line 188, in query_collection result = query_doc( ^^^^^^^^^^ File "/home/home/open-webui/venv/lib/python3.11/site-packages/open_webui/apps/retrieval/utils.py", line 77, in query_doc raise e File "/home/home/open-webui/venv/lib/python3.11/site-packages/open_webui/apps/retrieval/utils.py", line 73, in query_doc log.info(f"query_doc:result {result.ids} {result.metadatas}") ^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'ids'@ghost commented on GitHub (Dec 22, 2024):
You are right, me having 30 books per one # referenced folder never accounted for that process being able to pull.. nothing out of such wast amount of text.
Despite being asking more precise and not that general questions.
That is sort of misunderstanding as 'normal' noRAG question into LLM's will usually return some hallucination at least one expecting it here as well.
Also did set for Nomic the Context Length for max. 8192.
But unsure how and if the rest of params for model are applied even for embedding/RAG or it is just here in general but shouldn't be use in this case(?)
So far the top_k and min. score had to be adjusted manually per texts to be retrieved and also counting for context window of the receiving LLM. And that balancing is some tedious job.
So the warning from UI could help, then this can be tackled immediately as the warning will eventually mark such occurrence.
Or a 'Tip' below prompt window:
If too much is retrieved (and send) > API error as it does not fit in context w. + if it does may it be also full of garbage and/or double-dealing with having 'same content' chunks occupying the precious space despite re-ranking.
(Good test for this is using 1st end 2nd edition of the same, lets say, a manual - it's to be seen immediately as LLM return duplicate statement.)
If too little then
a) if prompt (and/or RAG template) restrictive, no meaningful outcome
b) it just return some blatant not much target related text
Did have a lot of b) options not even know that what being returned is not much relevant to the content of actual files.
So as countermeasure my now used prompt is kinda restrictive:
Do not add or infer anything into what is provided in the first place. Be as precise as possible using information available within the documents. Print the name of the source. Only if nothing else can be obtained from source add as last paragraph some external content relevant to previous informationand such.That does work quite well so far.
But it's yes or no option and mainly only one or two facts summary can be obtained from the documents for me.
No middle ground.
Basically one of biggest help is that have, after years, my files somehow in folders - related by topic - and they are similar but diverse enough to be usable almost instantly.
But when started with this went the way 'lets take a pile of not-yet-sorted books and sort them with no reading'.
No way yet, we aren't here.
@ghost commented on GitHub (Dec 26, 2024):
It's happening to me that if only one (or very few) document are presented from the # option, with hybrid search on, I'm unable to pull simple summary of file.
If the case is I do not know what it is about, had to switch the HS off.
Only thereafter the first summary is completed, then can try search again (now knowing some semantics context from the source).
basically getting back with HS = on:
WARNI [chromadb.segment.impl.vector.local_persistent_hnsw] Number of requested results 65 is greater than number of elements in index 5, updating n_results = 5 INFO [open_webui.retrieval.utils] query_doc_with_hybrid_search:result [[]] [[]]That's ok, those are my settings (top_k=65) for entire folder with dozen or so documents. So that's easy to 'hit' something through re-ranking.
But with only few doc and 0 knowledge about that, it doesn't work straightforward.
(Say for making summary of a show I didn't see yet.)
Maybe manual trigger 'Summary/Unknown content' (doing HS on/of) for resolving the status of discrepancy:
the knowledge the person thinks he have as asking the question vs the documents content.
Triggered by the presence of 'RAG' (# of Knowledge or a manual import of files).
With title such as: Is the content known to me yet?
@gabriel-ecegi commented on GitHub (Feb 3, 2025):
It is fixed in 0.5.6 by moving hybrid_search process to background.
@ivanbaldo commented on GitHub (Mar 4, 2025):
If it's fixed then maybe this issue can be closed?
@AttaInsularis can you confirm?
@ghost commented on GitHub (Mar 6, 2025):
Hi, sorry for the delay.
As of now:
have no access for API that can handle a prompt containing that much information obtained from the RAG.
Also not atm near the machine that can handle RAG the way I did that (local database + local re-ranking with GPU).
So can't confirm any changes - 'solved by moving hybrid_search process to background.' - don't know what that really changed.
But as none contributed with any issues and the RAG is complicated in general, so my way of doing it probably hitting several different areas, I'm closing this.
Thank you all for whatever done! Really.
@jarojdk commented on GitHub (Jan 23, 2026):
Open WebUI Version v0.7.2
Ollama Version 0.14.3
I cleaned up all documents
ggml_backend_cuda_device_get_memory device GPU-19909e1b-137d-3100-6af8-f4abcbeb8f2c utilizing NVML memory reporting free: 9156427776
with already loaded VL model
when I process PNG
2026-01-23 08:18:31.392 | ERROR | open_webui.retrieval.utils:query_collection_with_hybrid_search:484 - Failed to fetch collection file-afda2986-56d1-4316-be90-b050c1e6c245: Collection [file-afda2986-56d1-4316-be90-b050c1e6c245] does not exist
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 4, in
uvicorn.main()
│ └
└ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/init.py'>
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1485, in call
return self.main(args, **kwargs)
│ │ │ └ {}
│ │ └ ()
│ └ <function Command.main at 0x7f3b59787060>
└
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1406, in main
rv = self.invoke(ctx)
│ │ └ <click.core.Context object at 0x7f3b5a4bd210>
│ └ <function Command.invoke at 0x7f3b59786d40>
└
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1269, in invoke
return ctx.invoke(self.callback, **ctx.params)
│ │ │ │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
│ │ │ │ └ <click.core.Context object at 0x7f3b5a4bd210>
│ │ │ └ <function main at 0x7f3b59583880>
│ │ └
│ └ <function Context.invoke at 0x7f3b59785f80>
└ <click.core.Context object at 0x7f3b5a4bd210>
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 824, in invoke
return callback(args, **kwargs)
│ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
│ └ ()
└ <function main at 0x7f3b59583880>
File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 424, in main
run(
└ <function run at 0x7f3b59621a80>
File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 594, in run
server.run()
│ └ <function Server.run at 0x7f3b59621300>
└ <uvicorn.server.Server object at 0x7f3b597b9f90>
File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run
return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory())
│ │ │ │ │ │ └ <function Config.get_loop_factory at 0x7f3b59754540>
│ │ │ │ │ └ <uvicorn.config.Config object at 0x7f3b5a4b8e50>
│ │ │ │ └ <uvicorn.server.Server object at 0x7f3b597b9f90>
│ │ │ └ None
│ │ └ <function Server.serve at 0x7f3b596213a0>
│ └ <uvicorn.server.Server object at 0x7f3b597b9f90>
└ <function asyncio_run at 0x7f3b59789f80>
File "/usr/local/lib/python3.11/site-packages/uvicorn/_compat.py", line 30, in asyncio_run
return runner.run(main)
│ │ └ <coroutine object Server.serve at 0x7f3b594df4c0>
│ └ <function Runner.run at 0x7f3b599e0f40>
└ <asyncio.runners.Runner object at 0x7f3b59597010>
File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
│ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:71> wai...
│ │ └ <cyfunction Loop.run_until_complete at 0x7f3b595a2080>
│ └ <uvloop.Loop running=True closed=False debug=False>
└ <asyncio.runners.Runner object at 0x7f3b59597010>
File "/app/backend/open_webui/main.py", line 1710, in process_chat
form_data, metadata, events = await process_chat_payload(
│ │ └ <function process_chat_payload at 0x7f3915bcca40>
│ └ {'user_id': '65ecb1cf-b72d-467a-ab6f-29c3b64e26c5', 'chat_id': '8151855a-8f36-40a3-8b76-170bebffcaf4', 'message_id': '4e9832c...
└ {'stream': True, 'model': 'qwen3-vl:8b', 'messages': [{'role': 'system', 'content': 'User Context:\n1. [2026-01-13] \n\n'}, {...
File "/app/backend/open_webui/utils/middleware.py", line 1867, in process_chat_payload
form_data, flags = await chat_completion_files_handler(
│ └ <function chat_completion_files_handler at 0x7f3915bcc860>
└ {'stream': True, 'model': 'qwen3-vl:8b', 'messages': [{'role': 'system', 'content': 'User Context:\n1. [2026-01-13] \n\n'}, {...
File "/app/backend/open_webui/utils/middleware.py", line 1249, in chat_completion_files_handler
sources = await get_sources_from_items(
└ <function get_sources_from_items at 0x7f3917f69da0>
File "/app/backend/open_webui/retrieval/utils.py", line 1158, in get_sources_from_items
query_result = await query_collection_with_hybrid_search(
└ <function query_collection_with_hybrid_search at 0x7f3917f68cc0>
File "/app/backend/open_webui/retrieval/vector/dbs/chroma.py", line 131, in get
collection = self.client.get_collection(name=collection_name)
│ │ │ └ 'file-afda2986-56d1-4316-be90-b050c1e6c245'
│ │ └ <function Client.get_collection at 0x7f39f71ccea0>
│ └ <chromadb.api.client.Client object at 0x7f39f5596a90>
└ <open_webui.retrieval.vector.dbs.chroma.ChromaClient object at 0x7f39f76506d0>
File "/usr/local/lib/python3.11/site-packages/chromadb/api/client.py", line 208, in get_collection
model = self._server.get_collection(
│ │ └ <function RustBindingsAPI.get_collection at 0x7f39f50f9440>
│ └ <chromadb.api.rust.RustBindingsAPI object at 0x7f39f521d650>
└ <chromadb.api.client.Client object at 0x7f39f5596a90>
File "/usr/local/lib/python3.11/site-packages/chromadb/api/rust.py", line 270, in get_collection
collection = self.bindings.get_collection(name, tenant, database)
│ │ │ │ │ └ 'default_database'
│ │ │ │ └ 'default_tenant'
│ │ │ └ 'file-afda2986-56d1-4316-be90-b050c1e6c245'
│ │ └ <method 'get_collection' of 'builtins.Bindings' objects>
│ └ <builtins.Bindings object at 0x561dc46e4860>
└ <chromadb.api.rust.RustBindingsAPI object at 0x7f39f521d650>
chromadb.errors.NotFoundError: Collection [file-afda2986-56d1-4316-be90-b050c1e6c245] does not exist
2026-01-23 08:18:31.396 | INFO | open_webui.retrieval.utils:query_collection_with_hybrid_search:487 - Starting hybrid search for 1 queries in 1 collections...
2026-01-23 08:18:31.396 | ERROR | open_webui.retrieval.utils:query_collection_with_hybrid_search:484 - Failed to fetch collection file-927704eb-03c2-4a37-a46a-9cdc215c9ece: Collection [file-927704eb-03c2-4a37-a46a-9cdc215c9ece] does not exist
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 4, in
uvicorn.main()
│ └
└ <module 'uvicorn' from '/usr/local/lib/python3.11/site-packages/uvicorn/init.py'>
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1485, in call
return self.main(args, **kwargs)
│ │ │ └ {}
│ │ └ ()
│ └ <function Command.main at 0x7f3b59787060>
└
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1406, in main
rv = self.invoke(ctx)
│ │ └ <click.core.Context object at 0x7f3b5a4bd210>
│ └ <function Command.invoke at 0x7f3b59786d40>
└
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1269, in invoke
return ctx.invoke(self.callback, **ctx.params)
│ │ │ │ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
│ │ │ │ └ <click.core.Context object at 0x7f3b5a4bd210>
│ │ │ └ <function main at 0x7f3b59583880>
│ │ └
│ └ <function Context.invoke at 0x7f3b59785f80>
└ <click.core.Context object at 0x7f3b5a4bd210>
File "/usr/local/lib/python3.11/site-packages/click/core.py", line 824, in invoke
return callback(args, **kwargs)
│ │ └ {'host': '0.0.0.0', 'port': 8080, 'forwarded_allow_ips': '', 'workers': 1, 'app': 'open_webui.main:app', 'uds': None, 'fd': ...
│ └ ()
└ <function main at 0x7f3b59583880>
File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 424, in main
run(
└ <function run at 0x7f3b59621a80>
File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 594, in run
server.run()
│ └ <function Server.run at 0x7f3b59621300>
└ <uvicorn.server.Server object at 0x7f3b597b9f90>
File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 67, in run
return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory())
│ │ │ │ │ │ └ <function Config.get_loop_factory at 0x7f3b59754540>
│ │ │ │ │ └ <uvicorn.config.Config object at 0x7f3b5a4b8e50>
│ │ │ │ └ <uvicorn.server.Server object at 0x7f3b597b9f90>
│ │ │ └ None
│ │ └ <function Server.serve at 0x7f3b596213a0>
│ └ <uvicorn.server.Server object at 0x7f3b597b9f90>
└ <function asyncio_run at 0x7f3b59789f80>
File "/usr/local/lib/python3.11/site-packages/uvicorn/_compat.py", line 30, in asyncio_run
return runner.run(main)
│ │ └ <coroutine object Server.serve at 0x7f3b594df4c0>
│ └ <function Runner.run at 0x7f3b599e0f40>
└ <asyncio.runners.Runner object at 0x7f3b59597010>
File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
│ │ │ └ <Task pending name='Task-1' coro=<Server.serve() running at /usr/local/lib/python3.11/site-packages/uvicorn/server.py:71> wai...
│ │ └ <cyfunction Loop.run_until_complete at 0x7f3b595a2080>
│ └ <uvloop.Loop running=True closed=False debug=False>
└ <asyncio.runners.Runner object at 0x7f3b59597010>
File "/app/backend/open_webui/main.py", line 1710, in process_chat
form_data, metadata, events = await process_chat_payload(
│ │ └ <function process_chat_payload at 0x7f3915bcca40>
│ └ {'user_id': '65ecb1cf-b72d-467a-ab6f-29c3b64e26c5', 'chat_id': '8151855a-8f36-40a3-8b76-170bebffcaf4', 'message_id': '4e9832c...
└ {'stream': True, 'model': 'qwen3-vl:8b', 'messages': [{'role': 'system', 'content': 'User Context:\n1. [2026-01-13] \n\n'}, {...
File "/app/backend/open_webui/utils/middleware.py", line 1867, in process_chat_payload
form_data, flags = await chat_completion_files_handler(
│ └ <function chat_completion_files_handler at 0x7f3915bcc860>
└ {'stream': True, 'model': 'qwen3-vl:8b', 'messages': [{'role': 'system', 'content': 'User Context:\n1. [2026-01-13] \n\n'}, {...
File "/app/backend/open_webui/utils/middleware.py", line 1249, in chat_completion_files_handler
sources = await get_sources_from_items(
└ <function get_sources_from_items at 0x7f3917f69da0>
File "/app/backend/open_webui/retrieval/utils.py", line 1158, in get_sources_from_items
query_result = await query_collection_with_hybrid_search(
└ <function query_collection_with_hybrid_search at 0x7f3917f68cc0>
File "/app/backend/open_webui/retrieval/vector/dbs/chroma.py", line 131, in get
collection = self.client.get_collection(name=collection_name)
│ │ │ └ 'file-927704eb-03c2-4a37-a46a-9cdc215c9ece'
│ │ └ <function Client.get_collection at 0x7f39f71ccea0>
│ └ <chromadb.api.client.Client object at 0x7f39f5596a90>
└ <open_webui.retrieval.vector.dbs.chroma.ChromaClient object at 0x7f39f76506d0>
File "/usr/local/lib/python3.11/site-packages/chromadb/api/client.py", line 208, in get_collection
model = self._server.get_collection(
│ │ └ <function RustBindingsAPI.get_collection at 0x7f39f50f9440>
│ └ <chromadb.api.rust.RustBindingsAPI object at 0x7f39f521d650>
└ <chromadb.api.client.Client object at 0x7f39f5596a90>
File "/usr/local/lib/python3.11/site-packages/chromadb/api/rust.py", line 270, in get_collection
collection = self.bindings.get_collection(name, tenant, database)
│ │ │ │ │ └ 'default_database'
│ │ │ │ └ 'default_tenant'
│ │ │ └ 'file-927704eb-03c2-4a37-a46a-9cdc215c9ece'
│ │ └ <method 'get_collection' of 'builtins.Bindings' objects>
│ └ <builtins.Bindings object at 0x561dc46e4860>
└ <chromadb.api.rust.RustBindingsAPI object at 0x7f39f521d650>
chromadb.errors.NotFoundError: Collection [file-927704eb-03c2-4a37-a46a-9cdc215c9ece] does not exist