From 0af30e1c68d2bca96e7fdecc3e4029dca4f16653 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AD=D0=BC=D0=B8=D0=BB=D1=8C=20=D0=90=D0=BC=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Wed, 27 May 2026 13:28:01 +0000 Subject: [PATCH] restore own solution: init_knowledge.py --- init_knowledge.py | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/init_knowledge.py b/init_knowledge.py index 58663f3..262f202 100644 --- a/init_knowledge.py +++ b/init_knowledge.py @@ -4,30 +4,24 @@ from __future__ import annotations import argparse from pathlib import Path -from knowledge_base import KnowledgeBase +from vector_store import add_document_to_store SUPPORTED_SUFFIXES = {".txt", ".md", ".markdown"} -def load_directory(knowledge_dir: Path, kb: KnowledgeBase | None = None) -> int: - kb = kb or KnowledgeBase() - if not knowledge_dir.exists(): - knowledge_dir.mkdir(parents=True, exist_ok=True) - print(f"Создана пустая директория: {knowledge_dir}") - return 0 +def load_directory(directory: str | Path) -> int: + root = Path(directory) + if not root.exists(): + raise FileNotFoundError(f"Директория не найдена: {root}") total_chunks = 0 - files = [p for p in knowledge_dir.rglob("*") if p.suffix.lower() in SUPPORTED_SUFFIXES] - if not files: - print(f"Нет файлов {SUPPORTED_SUFFIXES} в {knowledge_dir}") - return 0 - - for file_path in sorted(files): - chunks = kb.add_file(file_path) - total_chunks += chunks - print(f" + {file_path.name}: {chunks} чанк(ов)") - - print(f"Готово: {len(files)} файл(ов), {total_chunks} чанк(ов).") + for path in sorted(root.rglob("*")): + if not path.is_file() or path.suffix.lower() not in SUPPORTED_SUFFIXES: + continue + content = path.read_text(encoding="utf-8") + title = str(path.relative_to(root)) + total_chunks += add_document_to_store(content, title) + print(f"Загружен: {title} ({len(content)} символов)") return total_chunks @@ -35,11 +29,12 @@ def main() -> None: parser = argparse.ArgumentParser(description="Инициализация базы знаний из папки") parser.add_argument( "--dir", - default="./knowledge", - help="Путь к директории с документами (.txt, .md)", + default="./docs", + help="Путь к директории с .txt/.md файлами", ) args = parser.parse_args() - load_directory(Path(args.dir)) + chunks = load_directory(args.dir) + print(f"Готово. Всего чанков: {chunks}") if __name__ == "__main__":