import pandas as pd # Налаштування Google Embeddings GOOGLE_EMBEDDING_MODEL = "text-embedding-004" # Модель Google Embeddings USE_GOOGLE_EMBEDDINGS = True # Прапорець для вмикання/вимикання Google Embeddings # Налаштування для моделей ембедингів DEFAULT_EMBEDDING_MODEL = "paraphrase-multilingual-MiniLM-L12-v2" FALLBACK_EMBEDDING_MODEL = "sentence-transformers/all-MiniLM-L6-v2" # Налаштування для індексування CHUNK_SIZE = 2048 # Розмір чанка для розбиття документів CHUNK_OVERLAP = 128 # Перекриття між чанками SIMILARITY_TOP_K = 10 # Кількість найбільш релевантних документів для пошуку # Додаткові налаштування для форсування CPU FORCE_CPU = True # Налаштування LLM MAX_TOKENS = 8192 # Виключені метадані EXCLUDED_EMBED_METADATA_KEYS = ["node_info", "project"] # Метадані, які не використовуються для ембедингів EXCLUDED_LLM_METADATA_KEYS = ["node_info", "project"] # Метадані, які не передаються в LLM # Налаштування для гібридного пошуку HYBRID_SEARCH_MODE = "reciprocal_rerank" # Режим гібридного пошуку (reciprocal_rerank, simple) def get_metadata_csv(row, idx): return { "issue_key": row.get('Issue key', '') if pd.notna(row.get('Issue key', '')) else "", "issue_type": row.get('Issue Type', '') if pd.notna(row.get('Issue Type', '')) else "", "status": row.get('Status', '') if pd.notna(row.get('Status', '')) else "", "priority": row.get('Priority', '') if pd.notna(row.get('Priority', '')) else "", "assignee": row.get('Assignee', '') if pd.notna(row.get('Assignee', '')) else "", "reporter": row.get('Reporter', '') if pd.notna(row.get('Reporter', '')) else "", "created": str(row.get('Created', '')) if pd.notna(row.get('Created', '')) else "", "updated": str(row.get('Updated', '')) if pd.notna(row.get('Updated', '')) else "", "summary": row.get('Summary', '') if pd.notna(row.get('Summary', '')) else "", "project": row.get('Project name', '') if pd.notna(row.get('Project name', '')) else "", "project_key": row.get('Project key', '') if pd.notna(row.get('Project key', '')) else "", "labels": row.get('Labels', '') if pd.notna(row.get('Labels', '')) else "", "comment": row.get('Comment', '') if pd.notna(row.get('Comment', '')) else "", "row_index": idx }