Как удалить постоянную коллекцию chromadbPython

Программы на Python
Ответить
Anonymous
 Как удалить постоянную коллекцию chromadb

Сообщение Anonymous »

Я хочу удалить постоянную коллекцию chromadb через 12 часов. В настоящее время я сохраняю время создания коллекции в mongodb, а затем сверяю ее с текущим временем.
Если ей 12 часов, я удаляю ее. Проблема в том, что когда коллекция пользователя удаляется, а затем тот же пользователь пытается вставить новые данные, я получаю сообщение об ошибке.
Я использую цветность с сервера LangChain и FastAPI и нашел несколько обходных путей, таких как перезапуск API и непосредственно перед перезапуском удаление всех коллекций с истекшим сроком действия, но я просто хотел знать, есть ли другой способ сделать это.
Я использую этот код для вставки данные:
def get_user_chroma(user_id: str, create_if_missing: bool = True):
"""Return or create a Chroma collection isolated for a user"""
os.makedirs(CHROMA_PATH, exist_ok=True)
collection_name = user_id
persist_dir = os.path.join(CHROMA_PATH, collection_name)

if not os.path.exists(persist_dir):
if not create_if_missing:
return None
os.makedirs(persist_dir, exist_ok=True)

return Chroma(
collection_name=collection_name,
embedding_function=embeddings,
persist_directory=persist_dir
)
async def add_embeddings_to_chroma(user_id: str, chunks: list[str], metadata: dict):
from pathlib import Path

persist_dir = Path(CHROMA_PATH) / user_id

persist_dir.mkdir(parents=True, exist_ok=True)
db = get_db()
logger.info(f"DB connection established: {db.name}")
expire = db['rag_expiration_time']
logger.info(f"Collection name: {expire.name}")

current_time = datetime.now(timezone.utc)
await expire.update_one({"user_id": user_id}, {"$set": {"created_at": datetime.now(timezone.utc).isoformat()}}, upsert=True)

vector_store = get_user_chroma(user_id)

enhanced_metadata = {
**metadata,
"user_id": user_id,
"created_at": current_time.isoformat()
}

docs = [Document(page_content=chunk, metadata=enhanced_metadata) for chunk in chunks]
ids = [str(uuid4()) for _ in docs]
vector_store.add_documents(docs, ids=ids)

logger.info(f"Added {len(docs)} chunks for user {user_id}")
return len(docs)


Подробнее здесь: https://stackoverflow.com/questions/798 ... collection
Ответить

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

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

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

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

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