File size: 2,701 Bytes
4ad5efa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
    }