X commited on
Commit
008d009
·
verified ·
1 Parent(s): 16e244f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -10
app.py CHANGED
@@ -38,7 +38,7 @@ else:
38
  query_logs = []
39
 
40
  # ===================================================================
41
- # 2. ЗАГРУЗКА ДАННЫХ (с кэшированием)
42
  # ===================================================================
43
 
44
  @st.cache_resource
@@ -65,11 +65,14 @@ def load_embedder():
65
  return SentenceTransformer(MODEL_NAME)
66
 
67
  @st.cache_resource
68
- def create_embeddings(articles, embedder):
69
- """Создаёт эмбеддинги статей"""
 
 
 
70
  with st.spinner("🔢 Создаю эмбеддинги статей..."):
71
- texts = [f"{a['title']}\n\n{a['text']}" for a in articles]
72
- return embedder.encode(texts, normalize_embeddings=True)
73
 
74
  # Загружаем всё
75
  articles = load_wikipedia()
@@ -80,7 +83,7 @@ embeddings = create_embeddings(articles, embedder)
80
  # 3. ФУНКЦИИ ПОИСКА И ЛОГИРОВАНИЯ
81
  # ===================================================================
82
 
83
- def search_wikipedia(query):
84
  """Ищет ответ на вопрос в Википедии"""
85
  if not query:
86
  return None
@@ -88,15 +91,15 @@ def search_wikipedia(query):
88
  start_time = time.time()
89
 
90
  # Поиск
91
- query_vector = embedder.encode([query], normalize_embeddings=True)[0]
92
- scores = embeddings @ query_vector
93
  top_indices = np.argsort(-scores)[:3]
94
 
95
  results = []
96
  for idx in top_indices:
97
  score = float(scores[int(idx)])
98
  if score > 0.3:
99
- article = articles[int(idx)]
100
  results.append({
101
  "title": article['title'],
102
  "score": score,
@@ -250,7 +253,7 @@ if query and (search_clicked or query != st.session_state.get("last_query", ""))
250
  st.session_state.last_query = query
251
 
252
  with st.spinner("🔎 Ищу ответ..."):
253
- results = search_wikipedia(query)
254
 
255
  if results:
256
  for i, result in enumerate(results, 1):
 
38
  query_logs = []
39
 
40
  # ===================================================================
41
+ # 2. ЗАГРУЗКА ДАННЫХ (с кэшированием) - ИСПРАВЛЕНО
42
  # ===================================================================
43
 
44
  @st.cache_resource
 
65
  return SentenceTransformer(MODEL_NAME)
66
 
67
  @st.cache_resource
68
+ def create_embeddings(_articles, _embedder):
69
+ """
70
+ Создаёт эмбеддинги статей
71
+ _articles и _embedder - с подчёркиванием, чтобы Streamlit их не хешировал
72
+ """
73
  with st.spinner("🔢 Создаю эмбеддинги статей..."):
74
+ texts = [f"{a['title']}\n\n{a['text']}" for a in _articles]
75
+ return _embedder.encode(texts, normalize_embeddings=True)
76
 
77
  # Загружаем всё
78
  articles = load_wikipedia()
 
83
  # 3. ФУНКЦИИ ПОИСКА И ЛОГИРОВАНИЯ
84
  # ===================================================================
85
 
86
+ def search_wikipedia(query, _articles, _embeddings, _embedder):
87
  """Ищет ответ на вопрос в Википедии"""
88
  if not query:
89
  return None
 
91
  start_time = time.time()
92
 
93
  # Поиск
94
+ query_vector = _embedder.encode([query], normalize_embeddings=True)[0]
95
+ scores = _embeddings @ query_vector
96
  top_indices = np.argsort(-scores)[:3]
97
 
98
  results = []
99
  for idx in top_indices:
100
  score = float(scores[int(idx)])
101
  if score > 0.3:
102
+ article = _articles[int(idx)]
103
  results.append({
104
  "title": article['title'],
105
  "score": score,
 
253
  st.session_state.last_query = query
254
 
255
  with st.spinner("🔎 Ищу ответ..."):
256
+ results = search_wikipedia(query, articles, embeddings, embedder)
257
 
258
  if results:
259
  for i, result in enumerate(results, 1):