MrSimple07 commited on
Commit
722ce17
·
1 Parent(s): fc9fe78

added the normalization of functions + max chars = 2500+ max rows = 15

Browse files
Files changed (4) hide show
  1. config.py +2 -2
  2. index_retriever.py +1 -1
  3. testing.py +24 -0
  4. utils.py +6 -3
config.py CHANGED
@@ -52,8 +52,8 @@ DEFAULT_MODEL = "Gemini 2.5 Flash"
52
  CHUNK_SIZE = 1500
53
  CHUNK_OVERLAP = 128
54
 
55
- MAX_CHARS_TABLE = 3000
56
- MAX_ROWS_TABLE = 10
57
 
58
  CUSTOM_PROMPT = """
59
  Вы являетесь высокоспециализированным Ассистентом для анализа нормативных документов (AIEXP). Ваша цель - предоставлять точные, корректные и контекстно релевантные ответы исключительно на основе предоставленного контекста из нормативной документации.
 
52
  CHUNK_SIZE = 1500
53
  CHUNK_OVERLAP = 128
54
 
55
+ MAX_CHARS_TABLE = 2500
56
+ MAX_ROWS_TABLE = 15
57
 
58
  CUSTOM_PROMPT = """
59
  Вы являетесь высокоспециализированным Ассистентом для анализа нормативных документов (AIEXP). Ваша цель - предоставлять точные, корректные и контекстно релевантные ответы исключительно на основе предоставленного контекста из нормативной документации.
index_retriever.py CHANGED
@@ -77,7 +77,7 @@ def create_query_engine(vector_index):
77
  vector_retriever = VectorIndexRetriever(
78
  index=vector_index,
79
  similarity_top_k=100,
80
- similarity_cutoff=0.45
81
  )
82
 
83
  hybrid_retriever = QueryFusionRetriever(
 
77
  vector_retriever = VectorIndexRetriever(
78
  index=vector_index,
79
  similarity_top_k=100,
80
+ similarity_cutoff=0.55
81
  )
82
 
83
  hybrid_retriever = QueryFusionRetriever(
testing.py ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import re
2
+
3
+ def normalize_query(query):
4
+ """
5
+ Only normalize type-like patterns (e.g., С-25, C-25, Т-40 → C25, T40)
6
+ without touching the rest of the Russian text.
7
+ """
8
+ def repl(m):
9
+ cyr_to_lat = {'С': 'C', 'с': 'C', 'Т': 'T', 'т': 'T', 'У': 'U', 'у': 'U'}
10
+ letter = cyr_to_lat.get(m.group(1), m.group(1))
11
+ return f"{letter}{m.group(2)}"
12
+
13
+ return re.sub(r'\b([СсТтУуCTU])[-\s]?(\d+)\b', repl, query)
14
+
15
+ tests = [
16
+ "8. какие размеры будут у сварного шва для типа С-25 ?",
17
+ "8. какие размеры будут у сварного шва для типа C-25 ?",
18
+ "8. какие размеры будут у сварного шва для типа С25 ?",
19
+ "8. какие размеры будут у сварного шва для типа Т-40 ?",
20
+ "8. какие размеры будут у сварного шва для типа У-16 ?"
21
+ ]
22
+
23
+ for t in tests:
24
+ print(normalize_query(t))
utils.py CHANGED
@@ -174,9 +174,12 @@ def deduplicate_nodes(nodes):
174
  return unique_nodes
175
 
176
  def normalize_query(query):
177
- pattern = r'([СсТтУу])-?(\d+)'
178
- query = re.sub(pattern, lambda m: f"{m.group(1).upper().translate(str.maketrans('СТУ', 'CTU'))}{m.group(2)}", query)
179
- return query
 
 
 
180
 
181
 
182
  def answer_question(question, query_engine, reranker, current_model, chunks_df=None):
 
174
  return unique_nodes
175
 
176
  def normalize_query(query):
177
+ def repl(m):
178
+ cyr_to_lat = {'С': 'C', 'с': 'C', 'Т': 'T', 'т': 'T', 'У': 'U', 'у': 'U'}
179
+ letter = cyr_to_lat.get(m.group(1), m.group(1))
180
+ return f"{letter}{m.group(2)}"
181
+
182
+ return re.sub(r'\b([СсТтУуCTU])[-\s]?(\d+)\b', repl, query)
183
 
184
 
185
  def answer_question(question, query_engine, reranker, current_model, chunks_df=None):