Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -24,6 +24,7 @@ PROMPT_TEMPLATE = """
|
|
24 |
|
25 |
# Инициализация базы данных Chroma один раз при запуске
|
26 |
def initialize_chroma():
|
|
|
27 |
if not os.path.exists(CHROMA_PATH):
|
28 |
generate_data_store()
|
29 |
embeddings = HuggingFaceEmbeddings(
|
@@ -38,37 +39,6 @@ def initialize_chroma():
|
|
38 |
)
|
39 |
return db
|
40 |
|
41 |
-
def main():
|
42 |
-
# Создаем папки при необходимости
|
43 |
-
os.makedirs("/tmp/model_cache", exist_ok=True)
|
44 |
-
os.makedirs("/tmp/chroma", exist_ok=True)
|
45 |
-
|
46 |
-
# Генерируем или загружаем базу данных Chroma один раз
|
47 |
-
if not os.path.exists(CHROMA_PATH):
|
48 |
-
generate_data_store()
|
49 |
-
|
50 |
-
# Инициализация эмбеддингов
|
51 |
-
embeddings = HuggingFaceEmbeddings(
|
52 |
-
model_name="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
|
53 |
-
cache_folder="model_cache"
|
54 |
-
)
|
55 |
-
|
56 |
-
# Загрузка векторной БД
|
57 |
-
db = Chroma(
|
58 |
-
persist_directory=CHROMA_PATH,
|
59 |
-
embedding_function=embeddings
|
60 |
-
)
|
61 |
-
|
62 |
-
print("Чат готов. Введите ваш вопрос или 'exit' для выхода.")
|
63 |
-
|
64 |
-
# Интерактивный цикл чата
|
65 |
-
while True:
|
66 |
-
query_text = input("Вы: ")
|
67 |
-
if query_text.lower() in ["exit", "quit"]:
|
68 |
-
print("Выход из чата.")
|
69 |
-
break
|
70 |
-
process_query(query_text, db)
|
71 |
-
|
72 |
|
73 |
def generate_data_store():
|
74 |
documents = load_documents()
|
@@ -96,6 +66,7 @@ def split_text(documents: list[Document]):
|
|
96 |
print(f"Разделено {len(documents)} документов на {len(chunks)} частей.")
|
97 |
return chunks
|
98 |
|
|
|
99 |
def save_to_chroma(chunks: list[Document]):
|
100 |
# Очищаем базу данных перед сохранением
|
101 |
if os.path.exists(CHROMA_PATH):
|
@@ -117,6 +88,8 @@ def save_to_chroma(chunks: list[Document]):
|
|
117 |
)
|
118 |
print(f"Сохранено {len(chunks)} частей в {CHROMA_PATH}.")
|
119 |
|
|
|
|
|
120 |
# Обработка запроса пользователя
|
121 |
def process_query(query_text: str, db):
|
122 |
results = db.similarity_search_with_relevance_scores(query_text, k=3)
|
@@ -139,6 +112,10 @@ def chat_interface(query_text):
|
|
139 |
response, sources = process_query(query_text, db)
|
140 |
return f"Ответ: {response}\n\nИсточники: {', '.join(sources) if sources else 'Нет источников'}"
|
141 |
|
|
|
|
|
|
|
|
|
142 |
# Создание и запуск интерфейса Gradio
|
143 |
interface = gr.Interface(
|
144 |
fn=chat_interface,
|
@@ -149,4 +126,4 @@ interface = gr.Interface(
|
|
149 |
)
|
150 |
|
151 |
if __name__ == "__main__":
|
152 |
-
|
|
|
24 |
|
25 |
# Инициализация базы данных Chroma один раз при запуске
|
26 |
def initialize_chroma():
|
27 |
+
|
28 |
if not os.path.exists(CHROMA_PATH):
|
29 |
generate_data_store()
|
30 |
embeddings = HuggingFaceEmbeddings(
|
|
|
39 |
)
|
40 |
return db
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
def generate_data_store():
|
44 |
documents = load_documents()
|
|
|
66 |
print(f"Разделено {len(documents)} документов на {len(chunks)} частей.")
|
67 |
return chunks
|
68 |
|
69 |
+
|
70 |
def save_to_chroma(chunks: list[Document]):
|
71 |
# Очищаем базу данных перед сохранением
|
72 |
if os.path.exists(CHROMA_PATH):
|
|
|
88 |
)
|
89 |
print(f"Сохранено {len(chunks)} частей в {CHROMA_PATH}.")
|
90 |
|
91 |
+
|
92 |
+
|
93 |
# Обработка запроса пользователя
|
94 |
def process_query(query_text: str, db):
|
95 |
results = db.similarity_search_with_relevance_scores(query_text, k=3)
|
|
|
112 |
response, sources = process_query(query_text, db)
|
113 |
return f"Ответ: {response}\n\nИсточники: {', '.join(sources) if sources else 'Нет источников'}"
|
114 |
|
115 |
+
# Создаем папки при необходимости
|
116 |
+
os.makedirs("/tmp/model_cache", exist_ok=True)
|
117 |
+
os.makedirs("/tmp/chroma", exist_ok=True)
|
118 |
+
|
119 |
# Создание и запуск интерфейса Gradio
|
120 |
interface = gr.Interface(
|
121 |
fn=chat_interface,
|
|
|
126 |
)
|
127 |
|
128 |
if __name__ == "__main__":
|
129 |
+
interface.launch()
|