from llama_index.core import VectorStoreIndex, Settings from llama_index.core.query_engine import RetrieverQueryEngine from llama_index.core.retrievers import VectorIndexRetriever from llama_index.core.response_synthesizers import get_response_synthesizer, ResponseMode from llama_index.core.prompts import PromptTemplate from my_logging import log_message from config import PROMPT_SIMPLE_POISK def create_vector_index(documents): log_message("Строю векторный индекс") return VectorStoreIndex.from_documents(documents) def create_query_engine(vector_index): try: # --- Semantic-only retriever --- vector_retriever = VectorIndexRetriever( index=vector_index, similarity_top_k=30, # recommended default similarity_cutoff=0.78 # filter weak matches ) custom_prompt_template = PromptTemplate(PROMPT_SIMPLE_POISK) response_synthesizer = get_response_synthesizer( response_mode=ResponseMode.TREE_SUMMARIZE, text_qa_template=custom_prompt_template ) query_engine = RetrieverQueryEngine( retriever=vector_retriever, response_synthesizer=response_synthesizer ) log_message("Semantic-only query engine успешно создан") return query_engine except Exception as e: log_message(f"Ошибка создания query engine: {str(e)}") raise