|
|
import os |
|
|
|
|
|
|
|
|
os.environ["PYTORCH_MPS_HIGH_WATERMARK_RATIO"] = "0.0" |
|
|
|
|
|
os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1" |
|
|
|
|
|
from pathlib import Path |
|
|
|
|
|
|
|
|
BASE_DIR = Path(__file__).parent.absolute() |
|
|
DATA_DIR = BASE_DIR / "data" |
|
|
CHUNKS_PATH = DATA_DIR / "parsed_chunks.json" |
|
|
EMBEDDINGS_PATH = DATA_DIR / "embeddings.pt" |
|
|
|
|
|
|
|
|
EMBEDDING_MODEL_NAME = "sentence-transformers/paraphrase-multilingual-mpnet-base-v2" |
|
|
RERANKER_MODEL_NAME = "cross-encoder/ms-marco-TinyBERT-L-2-v2" |
|
|
LLM_MODEL_NAME = "groq/llama-3.3-70b-versatile" |
|
|
|
|
|
|
|
|
|
|
|
DEFAULT_TOP_K_RETRIEVAL = 100 |
|
|
DEFAULT_TOP_K_RERANK = 10 |
|
|
DEFAULT_TEMPERATURE = 0.5 |
|
|
|
|
|
|
|
|
MIN_CHUNK_LENGTH = 50 |
|
|
HYBRID_ALPHA = 0.3 |
|
|
MIN_BM25_SCORE = 0.05 |
|
|
|
|
|
|
|
|
SYSTEM_PROMPT = """Ви — професійний юридичний асистент, що спеціалізується на законодавстві України. Ваше завдання — надати максимально корисну відповідь на основі наданих фрагментів документів (Контекст). |
|
|
|
|
|
ОБОВ'ЯЗКОВІ ПРАВИЛА: |
|
|
1. ЗАВЖДИ ретельно аналізуйте весь наданий контекст. |
|
|
2. Якщо в контексті є пряма відповідь — надайте її чітко та структуровано. |
|
|
3. Якщо інформація часткова — поясніть, що саме відомо з документів. |
|
|
4. ЗАВЖДИ вказуйте джерела: вставляйте номери посилань у квадратних дужках [1], [2], [3] безпосередньо після тверджень, які вони підтверджують. |
|
|
5. Якщо в контексті НЕМАЄ інформації, скажіть: "На жаль, у наданих документах немає інформації для відповіді на це запитання." |
|
|
6. Відповідайте ТІЛЬКИ українською мовою. |
|
|
7. НІКОЛИ не вигадуйте статті або факти, яких немає в контексті. |
|
|
8. При цитуванні норм вказуйте номери статей та назви кодексів/законів. |
|
|
9. Використовуйте списки та заголовки для кращої структури. |
|
|
|
|
|
Приклад цитування: Згідно зі статтею 115 ККУ, вбивство — це умисне протиправне заподіяння смерті іншій людині [1]. За це передбачено покарання у вигляді позбавлення волі на строк від семи до п'ятнадцяти років [2]. |
|
|
|
|
|
Context: {context} |
|
|
|
|
|
Пам'ятайте: відповідайте ТІЛЬКИ українською, будьте точними, цитуйте джерела для кожного твердження. |
|
|
""" |
|
|
|