Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
import os
|
| 2 |
import json
|
| 3 |
import pickle
|
|
@@ -201,20 +207,20 @@ class VectorRAGSystem:
|
|
| 201 |
|
| 202 |
📊 **Технические характеристики:**
|
| 203 |
- 📦 Векторных эмбеддингов: {total_chunks}
|
| 204 |
-
- 🔍 Режим поиска: {mode}
|
| 205 |
- 🧠 Модель генерации: {self.generation_model}
|
| 206 |
- 🎯 LLM реранкинг: {self.reranking_model}
|
| 207 |
- 📄 Parent-page enrichment: {pdf_enrichment}
|
| 208 |
- 📋 Структурированный вывод: {structured_output}
|
| 209 |
|
| 210 |
🚀 **Архитектурные особенности:**
|
| 211 |
-
- 🔎 **Векторный поиск** с text-embedding-3-large
|
| 212 |
- 📄 **Parent-page enrichment** через PyMuPDF
|
| 213 |
- 🧠 **LLM реранкинг** для повышения релевантности
|
| 214 |
- 🤔 **Chain-of-Thought** рассуждения
|
| 215 |
- 📋 **JSON Schema** для структурированных ответов
|
| 216 |
- 📊 **Confidence scoring** и детальная аналитика
|
| 217 |
-
- 📚 **Предобработка**
|
| 218 |
|
| 219 |
💡 **Готова к интеллектуальному анализу отчета ПАО Сбербанк 2023!**"""
|
| 220 |
|
|
@@ -512,10 +518,15 @@ class VectorRAGSystem:
|
|
| 512 |
|
| 513 |
# Подготовка источников
|
| 514 |
sources = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 515 |
for chunk, score in reranked_results[:self.final_chunks_count]:
|
| 516 |
sources.append({
|
| 517 |
"page": chunk["page"],
|
| 518 |
-
"search_score":
|
| 519 |
"rerank_score": score,
|
| 520 |
"preview": chunk["text"][:200] + "..." if len(chunk["text"]) > 200 else chunk["text"]
|
| 521 |
})
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""
|
| 3 |
+
Финальная векторная RAG система для HuggingFace Spaces
|
| 4 |
+
Адаптированная версия с поддержкой векторного поиска и резервным режимом
|
| 5 |
+
"""
|
| 6 |
+
|
| 7 |
import os
|
| 8 |
import json
|
| 9 |
import pickle
|
|
|
|
| 207 |
|
| 208 |
📊 **Технические характеристики:**
|
| 209 |
- 📦 Векторных эмбеддингов: {total_chunks}
|
| 210 |
+
- 🔍 Режим поиска: {mode} (только векторный)
|
| 211 |
- 🧠 Модель генерации: {self.generation_model}
|
| 212 |
- 🎯 LLM реранкинг: {self.reranking_model}
|
| 213 |
- 📄 Parent-page enrichment: {pdf_enrichment}
|
| 214 |
- 📋 Структурированный вывод: {structured_output}
|
| 215 |
|
| 216 |
🚀 **Архитектурные особенности:**
|
| 217 |
+
- 🔎 **Векторный поиск** с text-embedding-3-large (только)
|
| 218 |
- 📄 **Parent-page enrichment** через PyMuPDF
|
| 219 |
- 🧠 **LLM реранкинг** для повышения релевантности
|
| 220 |
- 🤔 **Chain-of-Thought** рассуждения
|
| 221 |
- 📋 **JSON Schema** для структурированных ответов
|
| 222 |
- 📊 **Confidence scoring** и детальная аналитика
|
| 223 |
+
- 📚 **Предобработка** с pdfplumber + таблицы
|
| 224 |
|
| 225 |
💡 **Готова к интеллектуальному анализу отчета ПАО Сбербанк 2023!**"""
|
| 226 |
|
|
|
|
| 518 |
|
| 519 |
# Подготовка источников
|
| 520 |
sources = []
|
| 521 |
+
# Создаем словарь для быстрого поиска search_score по chunk_index
|
| 522 |
+
search_scores = {}
|
| 523 |
+
for chunk, score in search_results:
|
| 524 |
+
search_scores[chunk.get("chunk_index", -1)] = score
|
| 525 |
+
|
| 526 |
for chunk, score in reranked_results[:self.final_chunks_count]:
|
| 527 |
sources.append({
|
| 528 |
"page": chunk["page"],
|
| 529 |
+
"search_score": search_scores.get(chunk.get("chunk_index", -1), 0),
|
| 530 |
"rerank_score": score,
|
| 531 |
"preview": chunk["text"][:200] + "..." if len(chunk["text"]) > 200 else chunk["text"]
|
| 532 |
})
|