From 5d39fe1038acedc8af8d1c014e8e59e8be9e398a 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: Mon, 25 May 2026 22:10:58 +0000 Subject: [PATCH] add init_knowledge.py --- init_knowledge.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 init_knowledge.py diff --git a/init_knowledge.py b/init_knowledge.py new file mode 100644 index 0000000..262f202 --- /dev/null +++ b/init_knowledge.py @@ -0,0 +1,41 @@ +"""Загрузка документов из директории в векторное хранилище.""" +from __future__ import annotations + +import argparse +from pathlib import Path + +from vector_store import add_document_to_store + +SUPPORTED_SUFFIXES = {".txt", ".md", ".markdown"} + + +def load_directory(directory: str | Path) -> int: + root = Path(directory) + if not root.exists(): + raise FileNotFoundError(f"Директория не найдена: {root}") + + total_chunks = 0 + 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 + + +def main() -> None: + parser = argparse.ArgumentParser(description="Инициализация базы знаний из папки") + parser.add_argument( + "--dir", + default="./docs", + help="Путь к директории с .txt/.md файлами", + ) + args = parser.parse_args() + chunks = load_directory(args.dir) + print(f"Готово. Всего чанков: {chunks}") + + +if __name__ == "__main__": + main()