Spaces:
Sleeping
Sleeping
Commit
·
722ce17
1
Parent(s):
fc9fe78
added the normalization of functions + max chars = 2500+ max rows = 15
Browse files- config.py +2 -2
- index_retriever.py +1 -1
- testing.py +24 -0
- 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 =
|
| 56 |
-
MAX_ROWS_TABLE =
|
| 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.
|
| 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 |
-
|
| 178 |
-
|
| 179 |
-
|
|
|
|
|
|
|
|
|
|
| 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):
|