ollama 无法一次提交超过5,461个嵌入,

jtjikinw  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(36)

问题是什么?

在 langchain-python-rag-privategpt 中,存在一个错误 '无法一次提交超过x个嵌入',这个问题已经在不同的场景下被提及过,最近查看了 #2572
现在,在使用 Ollama 版本 0.1.38 时,chromadb 版本已经更新到了 0.47,但是 max_batch_size 计算仍然似乎存在问题,具体问题案例可以查看 chroma-core/chroma#2181
同时,对于 Ollama 有没有解决方法?

(.venv) dcaso [ ~/ollama/examples/langchain-python-rag-privategpt ]$ python ./ingest.py
Creating new vectorstore
Loading documents from source_documents
Loading new documents: 100%|████████████████| 1355/1355 [00:15<00:00, 88.77it/s]
Loaded 80043 new documents from source_documents
Split into 478012 chunks of text (max. 500 tokens each)
Creating embeddings. May take some minutes...
Traceback (most recent call last):
  File "/home/dcaso/ollama/examples/langchain-python-rag-privategpt/./ingest.py", line 161, in <module>
    main()
  File "/home/dcaso/ollama/examples/langchain-python-rag-privategpt/./ingest.py", line 153, in main
    db = Chroma.from_documents(texts, embeddings, persist_directory=persist_directory)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dcaso/ollama/examples/langchain-python-rag-privategpt/.venv/lib/python3.11/site-packages/langchain/vectorstores/chroma.py", line 612, in from_documents
    return cls.from_texts(
           ^^^^^^^^^^^^^^^
  File "/home/dcaso/ollama/examples/langchain-python-rag-privategpt/.venv/lib/python3.11/site-packages/langchain/vectorstores/chroma.py", line 576, in from_texts
    chroma_collection.add_texts(texts=texts, metadatas=metadatas, ids=ids)
  File "/home/dcaso/ollama/examples/langchain-python-rag-privategpt/.venv/lib/python3.11/site-packages/langchain/vectorstores/chroma.py", line 222, in add_texts
    raise e
  File "/home/dcaso/ollama/examples/langchain-python-rag-privategpt/.venv/lib/python3.11/site-packages/langchain/vectorstores/chroma.py", line 208, in add_texts
    self._collection.upsert(
  File "/home/dcaso/ollama/examples/langchain-python-rag-privategpt/.venv/lib/python3.11/site-packages/chromadb/api/models/Collection.py", line 298, in upsert
    self._client._upsert(
  File "/home/dcaso/ollama/examples/langchain-python-rag-privategpt/.venv/lib/python3.11/site-packages/chromadb/api/segment.py", line 290, in _upsert
    self._producer.submit_embeddings(coll["topic"], records_to_submit)
  File "/home/dcaso/ollama/examples/langchain-python-rag-privategpt/.venv/lib/python3.11/site-packages/chromadb/db/mixins/embeddings_queue.py", line 127, in submit_embeddings
    raise ValueError(
ValueError:
                Cannot submit more than 5,461 embeddings at once.
                Please submit your embeddings in batches of size
                5,461 or less.

(.venv) dcaso [ ~/ollama/examples/langchain-python-rag-privategpt ]$

操作系统

WSL2

GPU

Nvidia

CPU

Intel

Ollama 版本

0.1.38

研究发现

ingest.pydef maint() 中,我修改了 else 的条件如下,但这并没有解决问题(仍然存在相同的问题)。

35g0bw71

35g0bw711#

这可能是另一个子组件问题。在v0.1.38版本中,langchain的版本是0.0.274。

pip3 list | grep langchain
langchain                0.0.274

未使用例如langchain_community。
作为解决方法,我已经更新了所有组件。但这并不推荐,因为通常它会产生更多的副作用,而且更难重现问题。

pip --disable-pip-version-check list --outdated --format=json | python -c "import json, sys; print('\n'.join([x['name'] for x in json.load(sys.stdin)]))" | sudo xargs -n1 pip install -U

之后,安装了以下langchain包:

pip3 list |grep langchain
langchain                0.1.20
langchain-community      0.0.38
langchain-core           0.1.52
langchain-text-splitters 0.0.2

python ingest.pypython privateGPT.py 运行成功,但输出中包含各种已弃用的langchain组件的警告。从目前发现的情况来看,一个经过整理的需求.txt列表会很有帮助。
python ingest.py 总是以 Creating new vectorstore 开始。它不会保留已经加载的文档。为什么?

gpnt7bae

gpnt7bae2#

v0.1.39版本也存在同样的问题。幸运的是,这个解决方法有效,使用Nvidia驱动程序552(参见#4563)。

6月5日编辑:v0.1.41版本也存在同样的问题。

6月19日编辑:v0.1.44版本也存在同样的问题。添加pip install chromadb==0.5.0

相关问题