From e0d4a29efaa40bdf4a72211b6eb1586ff0a56d35 Mon Sep 17 00:00:00 2001 From: Markov Andrey Date: Tue, 30 Jun 2026 08:50:15 +0000 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20create=5Fqdrant=5Fcollec?= =?UTF-8?q?tion.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/create_qdrant_collection.py | 59 +++++++++++++++++++------------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/core/create_qdrant_collection.py b/core/create_qdrant_collection.py index 3cb472a..a7ae82f 100644 --- a/core/create_qdrant_collection.py +++ b/core/create_qdrant_collection.py @@ -1,35 +1,37 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ -Скрипт для создания коллекции в Qdrant на основе конфигурации профиля бота. -Использует BotConfig для чтения параметров подключения к Qdrant. +Скрипт для создания коллекции в Qdrant на основе core.conf. +Используется для единой коллекции всех ботов. """ import sys import argparse +import yaml from pathlib import Path -# Добавляем путь к core (чтобы импортировать BotConfig) -sys.path.insert(0, str(Path(__file__).parent.parent)) - -from core.utils.config_loader import BotConfig from qdrant_client import QdrantClient from qdrant_client.http import models +def load_config(config_path: str) -> dict: + """Загружает core.conf как YAML.""" + with open(config_path, 'r', encoding='utf-8') as f: + return yaml.safe_load(f) + + def main(): parser = argparse.ArgumentParser( - description="Создать коллекцию в Qdrant для профиля бота" + description="Создать коллекцию в Qdrant для RAG-сервера" ) parser.add_argument( - "collection_name", - nargs="?", - help="Имя коллекции (переопределяет значение из конфига)" + "--config", + default="core/core.conf", + help="Путь к core.conf (по умолчанию core/core.conf)" ) parser.add_argument( - "--profile-dir", - required=True, - help="Путь к директории профиля (содержит bot.conf)" + "--collection", + help="Имя коллекции (переопределяет значение из core.conf)" ) parser.add_argument( "--force", @@ -38,24 +40,33 @@ def main(): ) args = parser.parse_args() - # Загружаем конфигурацию профиля + # Загружаем конфигурацию + config_path = Path(args.config) + if not config_path.exists(): + print(f"Ошибка: файл {config_path} не найден") + sys.exit(1) + try: - config = BotConfig(args.profile_dir) + config = load_config(config_path) except Exception as e: print(f"Ошибка загрузки конфигурации: {e}") sys.exit(1) - # Определяем имя коллекции - collection = args.collection_name or config.qdrant_collection - if not collection: - print("Ошибка: не указано имя коллекции и нет qdrant_collection в конфиге") + # Извлекаем параметры Qdrant + qdrant_cfg = config.get('qdrant') + if not qdrant_cfg: + print("Ошибка: в конфиге отсутствует секция 'qdrant'") sys.exit(1) - # Параметры подключения к Qdrant - host = config.qdrant_host - port = config.qdrant_port - vector_size = config.qdrant_vector_size - distance = config.qdrant_distance + host = qdrant_cfg.get('host', 'localhost') + port = qdrant_cfg.get('port', 6333) + vector_size = qdrant_cfg.get('vector_size', 1024) + distance = qdrant_cfg.get('distance', 'Cosine') + collection = args.collection or qdrant_cfg.get('collection') + + if not collection: + print("Ошибка: не указано имя коллекции (в core.conf или через --collection)") + sys.exit(1) print(f"Подключение к Qdrant: {host}:{port}") client = QdrantClient(host=host, port=port)