Feat: Display inline (non-quoted) images in the chat and search modules #7623 (#7638)

### What problem does this PR solve?

Feat: Display inline (non-quoted) images in the chat and search modules
#7623

### Type of change


- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
balibabu 2025-05-14 15:44:54 +08:00 committed by GitHub
parent 5a0273e3ea
commit 5d5dbb3bcb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 16 additions and 9 deletions

View File

@ -86,6 +86,7 @@ export interface IReferenceChunk {
vector_similarity: number;
term_similarity: number;
positions: number[];
doc_type?: string;
}
export interface IReference {

View File

@ -20,6 +20,7 @@ import {
} from '@/hooks/knowledge-hooks';
import { useGetPaginationWithRouter } from '@/hooks/logic-hooks';
import { api_host } from '@/utils/api';
import { showImage } from '@/utils/chat';
import { useCallback, useState } from 'react';
import styles from './index.less';
@ -49,12 +50,6 @@ interface IProps {
handleTesting: (documentIds?: string[]) => Promise<any>;
}
const ShowImageFields = ['image', 'table'];
function showImage(filed: string) {
return ShowImageFields.some((x) => x === filed);
}
const TestingResult = ({ handleTesting }: IProps) => {
const [selectedDocumentIds, setSelectedDocumentIds] = useState<string[]>([]);
const { documents, chunks, total } = useSelectTestingResult();

View File

@ -20,7 +20,11 @@ import { useTranslation } from 'react-i18next';
import 'katex/dist/katex.min.css'; // `rehype-katex` does not import the CSS for you
import { preprocessLaTeX, replaceThinkToSection } from '@/utils/chat';
import {
preprocessLaTeX,
replaceThinkToSection,
showImage,
} from '@/utils/chat';
import { replaceTextByOldReg } from '../utils';
import classNames from 'classnames';
@ -108,10 +112,11 @@ const MarkdownContent = ({
const fileThumbnail = documentId ? fileThumbnails[documentId] : '';
const fileExtension = documentId ? getExtension(document?.doc_name) : '';
const imageId = chunkItem?.image_id;
const docType = chunkItem?.doc_type;
return (
return showImage(docType) ? (
<Image id={imageId} className={styles.referenceChunkImage}></Image>
);
) : null;
return (
<div key={chunkItem?.id} className="flex gap-2">

View File

@ -66,3 +66,9 @@ export function setInitialChatVariableEnabledFieldValue(
) {
return field !== ChatVariableEnabledField.MaxTokensEnabled;
}
const ShowImageFields = ['image', 'table'];
export function showImage(filed?: string) {
return ShowImageFields.some((x) => x === filed);
}