diff --git a/web/src/components/image.tsx b/web/src/components/image.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..7cb0689681ed39419c64efcf1d53958ff382bc5b
--- /dev/null
+++ b/web/src/components/image.tsx
@@ -0,0 +1,19 @@
+import { api_host } from '@/utils/api';
+
+interface IImage {
+  id: string;
+  className: string;
+}
+
+const Image = ({ id, className, ...props }: IImage) => {
+  return (
+    <img
+      {...props}
+      src={`${api_host}/document/image/${id}`}
+      alt=""
+      className={className}
+    />
+  );
+};
+
+export default Image;
diff --git a/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-card/index.tsx b/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-card/index.tsx
index 8936c1d9df201079fa3469161b4002722fdfa79b..89af5283bbace732e5f67626c13c6a95f0df99cf 100644
--- a/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-card/index.tsx
+++ b/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-card/index.tsx
@@ -1,7 +1,7 @@
+import Image from '@/components/image';
 import { IChunk } from '@/interfaces/database/knowledge';
 import { api_host } from '@/utils/api';
 import { Card, Checkbox, CheckboxProps, Flex, Popover, Switch } from 'antd';
-
 import { useState } from 'react';
 import styles from './index.less';
 
@@ -13,22 +13,6 @@ interface IProps {
   handleCheckboxClick: (chunkId: string, checked: boolean) => void;
 }
 
-interface IImage {
-  id: string;
-  className: string;
-}
-// Pass onMouseEnter and onMouseLeave to img tag using props
-const Image = ({ id, className, ...props }: IImage) => {
-  return (
-    <img
-      {...props}
-      src={`${api_host}/document/image/${id}`}
-      alt=""
-      className={className}
-    />
-  );
-};
-
 const ChunkCard = ({
   item,
   checked,
diff --git a/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx b/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx
index d6a0da610f0409fc90ab8f8d8b227fb6954ce5e6..db475e22d418fa22c5725df0a6d896795da9b95d 100644
--- a/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx
+++ b/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx
@@ -28,7 +28,7 @@ import {
   UploadProps,
 } from 'antd';
 import classNames from 'classnames';
-import { ReactElement, useEffect, useRef, useState } from 'react';
+import { ReactElement, useEffect, useMemo, useRef, useState } from 'react';
 import { Nullable } from 'typings';
 import { Link, useDispatch, useNavigate, useSelector } from 'umi';
 
@@ -63,6 +63,24 @@ const UploaderItem = ({
 
   const documentId = file?.response?.id;
 
+  const parserList = useMemo(() => {
+    return parserArray.map((x) => {
+      const arr = x.split(':');
+      return { value: arr[0], label: arr[1] };
+    });
+  }, [parserArray]);
+
+  const saveParser = (parserId: string) => {
+    dispatch({
+      type: 'kFModel/document_change_parser',
+      payload: {
+        parser_id: parserId,
+        doc_id: documentId,
+        parser_config: parserConfig,
+      },
+    });
+  };
+
   const onChange = (e: RadioChangeEvent) => {
     const val = e.target.value;
     setValue(val);
@@ -72,12 +90,12 @@ const UploaderItem = ({
   const content = (
     <Radio.Group onChange={onChange} value={value}>
       <Space direction="vertical">
-        {parserArray.map(
+        {parserList.map(
           (
             x, // value is lowercase, key is uppercase
           ) => (
-            <Radio value={x.toLowerCase()} key={x}>
-              {x}
+            <Radio value={x.value} key={x.value}>
+              {x.label}
             </Radio>
           ),
         )}
@@ -92,17 +110,6 @@ const UploaderItem = ({
     }
   };
 
-  const saveParser = (parserId: string) => {
-    dispatch({
-      type: 'kFModel/document_change_parser',
-      payload: {
-        parser_id: parserId,
-        doc_id: documentId,
-        parser_config: parserConfig,
-      },
-    });
-  };
-
   useEffect(() => {
     setValue(defaultParserId);
   }, [defaultParserId]);
diff --git a/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.less b/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.less
index 46ef353dc8828c47543703f79237ecb2ed8db118..1059af55083d75ef78515a8c43991dde39c89320 100644
--- a/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.less
+++ b/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.less
@@ -33,4 +33,11 @@
     font-size: 12px;
     font-weight: 500;
   }
+  .image {
+    width: 100px;
+  }
+  .imagePreview {
+    display: block;
+    width: 260px;
+  }
 }
diff --git a/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.tsx b/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.tsx
index dbe7b22aa7fab25635e7ba56785dd3604eda6009..fac22905a324c04bfac9f0ffa5127f52292de9a9 100644
--- a/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.tsx
+++ b/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.tsx
@@ -1,6 +1,15 @@
 import { ReactComponent as SelectedFilesCollapseIcon } from '@/assets/svg/selected-files-collapse.svg';
+import Image from '@/components/image';
 import { ITestingChunk } from '@/interfaces/database/knowledge';
-import { Card, Collapse, Flex, Pagination, PaginationProps, Space } from 'antd';
+import {
+  Card,
+  Collapse,
+  Flex,
+  Pagination,
+  PaginationProps,
+  Popover,
+  Space,
+} from 'antd';
 import { useDispatch, useSelector } from 'umi';
 import { TestingModelState } from '../model';
 import styles from './index.less';
@@ -92,7 +101,22 @@ const TestingResult = ({ handleTesting }: IProps) => {
       >
         {chunks.map((x) => (
           <Card key={x.chunk_id} title={<ChunkTitle item={x}></ChunkTitle>}>
-            <div>{x.content_with_weight}</div>
+            <Flex gap={'middle'}>
+              {x.img_id && (
+                <Popover
+                  placement="topRight"
+                  content={
+                    <Image
+                      id={x.img_id}
+                      className={styles.imagePreview}
+                    ></Image>
+                  }
+                >
+                  <Image id={x.img_id} className={styles.image}></Image>
+                </Popover>
+              )}
+              <div>{x.content_with_weight}</div>
+            </Flex>
           </Card>
         ))}
       </Flex>