From 9fa12528ed1fbfdb625cd040e95df4fc5b800aae Mon Sep 17 00:00:00 2001 From: RomanKurlygin Date: Wed, 27 May 2026 08:23:32 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20rag=5Ftools.py=20=E2=80=94=20lazy=20RAG?= =?UTF-8?q?=20+=20build=5F*=20=D0=B4=D0=BB=D1=8F=20=D0=B0=D0=B2=D1=82?= =?UTF-8?q?=D0=BE=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rag_tools.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rag_tools.py b/rag_tools.py index c3f45b0..995c18b 100644 --- a/rag_tools.py +++ b/rag_tools.py @@ -3,12 +3,16 @@ from __future__ import annotations from langchain.tools import tool -from knowledge_base import KnowledgeBase +from knowledge_base import KnowledgeBase, build_knowledge_base -_kb = KnowledgeBase() +_kb: KnowledgeBase | None = None def get_knowledge_base() -> KnowledgeBase: + """Ленивая инициализация — не подключаем Ollama при импорте модуля.""" + global _kb + if _kb is None: + _kb = build_knowledge_base() return _kb @@ -20,7 +24,7 @@ def search_knowledge_base(query: str, max_results: int = 5) -> str: query: Поисковый запрос на естественном языке. max_results: Максимум результатов (по умолчанию 5). """ - results = _kb.search(query, max_results=max_results) + results = get_knowledge_base().search(query, max_results=max_results) if not results: return "По запросу ничего не найдено." lines = [f"Найдено: {len(results)} фрагмент(ов)\n"] @@ -43,5 +47,5 @@ def add_to_knowledge_base(content: str, title: str) -> str: return "Ошибка: пустой content." if not title.strip(): return "Ошибка: пустой title." - chunks = _kb.add_document(content.strip(), title.strip()) + chunks = get_knowledge_base().add_document(content.strip(), title.strip()) return f"Документ «{title}» добавлен ({chunks} чанк(ов))."