Воссоздание вложений ChromaDB: sqlite3.OperationalError: невозможно открыть файл базы данных.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Воссоздание вложений ChromaDB: sqlite3.OperationalError: невозможно открыть файл базы данных.

Сообщение Anonymous »

Я работаю над приложением RAG, которое предоставляет службу пользовательского бота GPT. Я храню URL-адреса файлов, которые GPT использует для ответа на запрос пользователя.
Изображение

Я сохраняю встраивание для каждого bot_id отдельно. Ниже приведены вложения для каждого бота, хранящиеся отдельно, которые извлекаются на основе используемого bot_id.
[img]https://i.sstatic .net/P1ECX.png[/img]

Когда пользователь меняет URL-адреса файлов, я удаляю существующую папку ChromaDB для этого бота и заново создаю встраивания для нового URL-адреса файла, и появляется следующая ошибка при воссоздании вложений:

Код: Выделить всё

    Traceback (most recent call last):
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/api/client.py", line 438, in _validate_tenant_database
self._admin_client.get_tenant(name=tenant)
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/api/client.py", line 486, in get_tenant
return self._server.get_tenant(name=name)
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/api/segment.py", line 140, in get_tenant
return self._sysdb.get_tenant(name=name)
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/db/mixins/sysdb.py", line 125, in get_tenant
with self.tx() as cur:
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/db/impl/sqlite.py", line 131, in tx
return TxWrapper(self._conn_pool, stack=self._tx_stack)
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/db/impl/sqlite.py", line 31, in __init__
self._conn = conn_pool.connect()
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/db/impl/sqlite_pool.py", line 141, in connect
new_connection = Connection(
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/db/impl/sqlite_pool.py", line 20, in __init__
self._conn = sqlite3.connect(
sqlite3.OperationalError: unable to open database file

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 1463, in wsgi_app
response = self.full_dispatch_request()
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 872, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 870, in full_dispatch_request
rv = self.dispatch_request()
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 855, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
File "/home/ubuntu/chatbot/main.py", line 460, in qa
message = storeEmbeddings(embedding_model, raw_text, bot_id)
File "/home/ubuntu/chatbot/embeddings.py", line 12, in storeEmbeddings
db = Chroma.from_documents(
File "/home/ubuntu/.local/lib/python3.10/site-packages/langchain_community/vectorstores/chroma.py", line 778, in from_documents
return cls.from_texts(
File "/home/ubuntu/.local/lib/python3.10/site-packages/langchain_community/vectorstores/chroma.py", line 714, in from_texts
chroma_collection = cls(
File "/home/ubuntu/.local/lib/python3.10/site-packages/langchain_community/vectorstores/chroma.py", line 120, in __init__
self._client = chromadb.Client(_client_settings)
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/__init__.py", line 274, in Client
return ClientCreator(tenant=tenant, database=database, settings=settings)
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/api/client.py", line 144, in __init__
self._validate_tenant_database(tenant=tenant, database=database)
File "/home/ubuntu/.local/lib/python3.10/site-packages/chromadb/api/client.py", line 447, in _validate_tenant_database
raise ValueError(
ValueError: Could not connect to tenant default_tenant. Are you sure it exists?
Похоже, что он все еще пытается получить доступ к старой базе данных ChromaDB для этого бота, хотя папка была успешно удалена. Я удалил по папке, используя:

Код: Выделить всё

import shutil
shutil.rmtree("Embeddings/1001")
Функция, создающая и сохраняющая внедрения:

Код: Выделить всё

def storeEmbeddings(embedding, text, bot_id, embedding_folder):

try:

text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)

texts = text_splitter.create_documents([text])

db = Chroma.from_documents(
texts,
embedding,
persist_directory=embedding_folder+"//"+bot_id,
client_settings=Settings(anonymized_telemetry=False,is_persistent=True,),
)

return sucessMessage

except Exception as e:
return str(e)
И самое странное то, что когда я на этом этапе останавливаю и запускаю приложение Python, оно воссоздает встроенные элементы для этого бота.
Как лучше всего удалить существующие внедрения ChromaDB и создать новые документы?

Подробнее здесь: https://stackoverflow.com/questions/780 ... -open-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»