diff --git a/api/apps/conversation_app.py b/api/apps/conversation_app.py
index 1f7e6cef6e0cc7fad0fa834e264b64c2ef17c14d..a0c2369979d9c1a3e9f0246b7cbd6baa5056cb1c 100644
--- a/api/apps/conversation_app.py
+++ b/api/apps/conversation_app.py
@@ -212,14 +212,17 @@ def chat(dialog, messages, **kwargs):
     if "max_tokens" in gen_conf:
         gen_conf["max_tokens"] = min(gen_conf["max_tokens"], llm.max_tokens - used_token_count)
     answer = chat_mdl.chat(prompt_config["system"].format(**kwargs), msg, gen_conf)
+    stat_logger.info("User: {}|Assistant: {}".format(msg[-1]["content"], answer))
 
     if knowledges:
-        answer = retrievaler.insert_citations(answer,
+        answer, idx = retrievaler.insert_citations(answer,
                                           [ck["content_ltks"] for ck in kbinfos["chunks"]],
                                           [ck["vector"] for ck in kbinfos["chunks"]],
                                           embd_mdl,
                                           tkweight=1 - dialog.vector_similarity_weight,
                                           vtweight=dialog.vector_similarity_weight)
+        idx = set([kbinfos["chunks"][int(i)]["doc_id"] for i in idx])
+        kbinfos["doc_aggs"] = [d for d in kbinfos["doc_aggs"] if d["doc_id"] in idx]
     for c in kbinfos["chunks"]:
         if c.get("vector"): del c["vector"]
     return {"answer": answer, "reference": kbinfos}
diff --git a/rag/app/presentation.py b/rag/app/presentation.py
index 16c11bd76efe36a0a4c6d749270644e26f4ae79a..7525946a3c617a74abe5bbe3f611932df8f547d7 100644
--- a/rag/app/presentation.py
+++ b/rag/app/presentation.py
@@ -88,20 +88,25 @@ def chunk(filename, binary=None, from_page=0, to_page=100000, lang="Chinese", ca
     res = []
     if re.search(r"\.pptx?$", filename, re.IGNORECASE):
         ppt_parser = Ppt()
-        for txt,img in ppt_parser(filename if not binary else binary, from_page, 1000000, callback):
+        for pn, (txt,img) in enumerate(ppt_parser(filename if not binary else binary, from_page, 1000000, callback)):
             d = copy.deepcopy(doc)
+            pn += from_page
             d["image"] = img
-            tokenize(d, txt, ppt_parser.is_english)
+            d["page_num_int"] = [pn+1]
+            d["top_int"] = [0]
+            d["position_int"] = [(pn + 1, 0, img.size[0], 0, img.size[1])]
+            tokenize(d, txt, eng)
             res.append(d)
         return res
     elif re.search(r"\.pdf$", filename, re.IGNORECASE):
         pdf_parser = Pdf()
         for pn, (txt,img) in enumerate(pdf_parser(filename if not binary else binary, from_page=from_page, to_page=to_page, callback=callback)):
             d = copy.deepcopy(doc)
+            pn += from_page
             d["image"] = img
             d["page_num_int"] = [pn+1]
             d["top_int"] = [0]
-            d["position_int"].append((pn + 1, 0, img.size[0], 0, img.size[1]))
+            d["position_int"] = [(pn + 1, 0, img.size[0], 0, img.size[1])]
             tokenize(d, txt, eng)
             res.append(d)
         return res
diff --git a/rag/nlp/search.py b/rag/nlp/search.py
index bce7db41692541ae94da0a1fa274eedc473e1ef5..b87bb27a815ee9d2a1b95d557f521098029d3336 100644
--- a/rag/nlp/search.py
+++ b/rag/nlp/search.py
@@ -243,7 +243,7 @@ class Dealer:
                 res += f" ##{c}$$"
                 seted.add(c)
 
-        return res
+        return res, seted
 
     def rerank(self, sres, query, tkweight=0.3,
                vtweight=0.7, cfield="content_ltks"):
@@ -290,7 +290,7 @@ class Dealer:
             start_idx -= 1
             if start_idx >= 0:
                 continue
-            if len(ranks["chunks"]) == page_size:
+            if len(ranks["chunks"]) >= page_size:
                 if aggs:
                     continue
                 break
@@ -322,7 +322,7 @@ class Dealer:
             if dnm not in ranks["doc_aggs"]:
                 ranks["doc_aggs"][dnm] = {"doc_id": did, "count": 0}
             ranks["doc_aggs"][dnm]["count"] += 1
-        ranks["doc_aggs"] = []#[{"doc_name": k, "doc_id": v["doc_id"], "count": v["count"]} for k,v in sorted(ranks["doc_aggs"].items(), key=lambda x:x[1]["count"]*-1)]
+        ranks["doc_aggs"] = [{"doc_name": k, "doc_id": v["doc_id"], "count": v["count"]} for k,v in sorted(ranks["doc_aggs"].items(), key=lambda x:x[1]["count"]*-1)]
 
         return ranks