Я хочу удалить постоянную коллекцию 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
Как удалить постоянную коллекцию chromadb ⇐ Python
Программы на Python
1767034829
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79815515/how-to-delete-a-persistent-chromadb-collection[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия