Spaces:
Runtime error
Runtime error
bourdoiscatie
commited on
Commit
•
9026ec3
1
Parent(s):
3b6e12f
Update app.py
Browse files
app.py
CHANGED
@@ -58,13 +58,13 @@ def search(query, top_k: int = 20, rescore_multiplier: int = 1, use_approx: bool
|
|
58 |
top_k_indices = binary_ids[indices]
|
59 |
top_k_scores = scores[indices]
|
60 |
top_k_titles, top_k_texts = zip(*[(wikipedia_dataset[idx]["title"], wikipedia_dataset[idx]["text"]) for idx in top_k_indices.tolist()])
|
61 |
-
df = pd.DataFrame({"
|
62 |
-
score_sum = df.groupby('Titre')['
|
63 |
df = pd.merge(df, score_sum, on='Titre', how='left')
|
64 |
-
df.rename(columns={'
|
65 |
-
df.rename(columns={'
|
66 |
-
df = df[["
|
67 |
-
df = df.sort_values('
|
68 |
# df = df.groupby('Titre')[['Score', 'Texte']].agg({'Score': 'sum', 'Texte': '\n\n'.join}).reset_index().sort_values('Score', ascending=False)
|
69 |
sort_time = time.time() - start_time
|
70 |
|
@@ -106,7 +106,7 @@ Il n'est pas exclus d'ensuite utiliser une version plus récente de Wikipedia (o
|
|
106 |
3. Un index binaire (250K <i>embeddings</i> binaires pesant 32MB de mémoire/espace disque) est requêté (en binaire si l'option approximative est sélectionnée, en int8 si l'option exacte est sélectionnée).
|
107 |
4. Les <i>n</i> textes demandés par l'utilisateur jugés les plus pertinents sont chargés à la volée à partir d'un index int8 sur disque (250K <i>embeddings</i> int8 ; 0 bytes de mémoire, 293MB d'espace disque).
|
108 |
5. Les <i>n</i> textes sont rescorés en utilisant la requête en float32 et les enchâssements en int8.
|
109 |
-
6. Les <i>n</i> premiers textes sont triés par score et affichés. Le "
|
110 |
|
111 |
Ce processus est conçu pour être rapide et efficace en termes de mémoire : l'index binaire étant suffisamment petit pour tenir dans la mémoire et l'index int8 étant chargé en tant que vue pour économiser de la mémoire.
|
112 |
Au total, ce processus nécessite de conserver 1) le modèle en mémoire, 2) l'index binaire en mémoire et 3) l'index int8 sur le disque.
|
|
|
58 |
top_k_indices = binary_ids[indices]
|
59 |
top_k_scores = scores[indices]
|
60 |
top_k_titles, top_k_texts = zip(*[(wikipedia_dataset[idx]["title"], wikipedia_dataset[idx]["text"]) for idx in top_k_indices.tolist()])
|
61 |
+
df = pd.DataFrame({"Score_paragraphe": [round(value, 2) for value in top_k_scores], "Titre": top_k_titles, "Texte": top_k_texts})
|
62 |
+
score_sum = df.groupby('Titre')['Score_paragraphe'].sum().reset_index()
|
63 |
df = pd.merge(df, score_sum, on='Titre', how='left')
|
64 |
+
df.rename(columns={'Score_paragraphe_y': 'Score_article'}, inplace=True)
|
65 |
+
df.rename(columns={'Score_paragraphe_x': 'Score_paragraphe'}, inplace=True)
|
66 |
+
df = df[["Score_article", "Score_paragraphe", "Titre", "Texte"]]
|
67 |
+
df = df.sort_values('Score_article', ascending=False)
|
68 |
# df = df.groupby('Titre')[['Score', 'Texte']].agg({'Score': 'sum', 'Texte': '\n\n'.join}).reset_index().sort_values('Score', ascending=False)
|
69 |
sort_time = time.time() - start_time
|
70 |
|
|
|
106 |
3. Un index binaire (250K <i>embeddings</i> binaires pesant 32MB de mémoire/espace disque) est requêté (en binaire si l'option approximative est sélectionnée, en int8 si l'option exacte est sélectionnée).
|
107 |
4. Les <i>n</i> textes demandés par l'utilisateur jugés les plus pertinents sont chargés à la volée à partir d'un index int8 sur disque (250K <i>embeddings</i> int8 ; 0 bytes de mémoire, 293MB d'espace disque).
|
108 |
5. Les <i>n</i> textes sont rescorés en utilisant la requête en float32 et les enchâssements en int8.
|
109 |
+
6. Les <i>n</i> premiers textes sont triés par score et affichés. Le "Score_paragraphe" correspond au score individuel de chaque paragraphe d'être pertinant vis-à-vis de la requête. Le "Score_article" correspond à la somme de tous les scores individuels des paragraphes issus d'un même article Wikipedia. L'objectif est alors de mettre en avant l'article source plutôt qu'un bout de texte le composant.
|
110 |
|
111 |
Ce processus est conçu pour être rapide et efficace en termes de mémoire : l'index binaire étant suffisamment petit pour tenir dans la mémoire et l'index int8 étant chargé en tant que vue pour économiser de la mémoire.
|
112 |
Au total, ce processus nécessite de conserver 1) le modèle en mémoire, 2) l'index binaire en mémoire et 3) l'index int8 sur le disque.
|