fix: pca calculating takes a long time

This commit is contained in:
jialin
2025-05-26 19:56:51 +08:00
parent 4b4343a9fd
commit 61e506010c
4 changed files with 19 additions and 13 deletions
+1 -1
View File
@@ -181,7 +181,7 @@ const Scatter: React.FC<ChartProps> = (props) => {
<span class="tooltip-value">${item.text}</span>
</span>`;
});
return `<div class="tooltip-wrapper">${result}</div>`;
return `<div class="tooltip-wrapper scatter">${result}</div>`;
}
},
title: {
+6
View File
@@ -746,6 +746,12 @@ body {
min-width: 100px;
max-width: 360px;
&.scatter {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.tooltip-x-name {
font-size: var(--font-size-small);
color: var(--ant-color-text-tertiary);
@@ -207,7 +207,6 @@ const GroundEmbedding: React.FC<MessageProps> = forwardRef((props, ref) => {
}
);
console.log('result=========', result);
setTokenResult(result.usage);
const embeddingsList = result.data || [];
@@ -216,9 +215,9 @@ const GroundEmbedding: React.FC<MessageProps> = forwardRef((props, ref) => {
workerRef.current!.onmessage = (event: MessageEvent) => {
const { scatterData, embeddingData } = event.data;
console.log('worker result:', scatterData, embeddingData);
setScatterData(scatterData);
setEmbeddingData(embeddingData);
setLoading(false);
};
postMessage({
@@ -226,15 +225,11 @@ const GroundEmbedding: React.FC<MessageProps> = forwardRef((props, ref) => {
textList: textList,
fileList: fileList
});
// generateEmbedding(embeddingsList);
} catch (error: any) {
console.log('result=========error', error);
setTokenResult({
error: true,
errorMessage: extractErrorMessage(error.response)
});
} finally {
setLoading(false);
}
};
@@ -386,7 +381,9 @@ const GroundEmbedding: React.FC<MessageProps> = forwardRef((props, ref) => {
children: (
<div
style={{
backgroundColor: 'var(--ant-color-bg-container)'
backgroundColor: 'var(--ant-color-bg-container)',
borderRadius: 'var(--border-radius-base)',
overflow: 'hidden'
}}
>
<HighlightCode
@@ -655,8 +652,7 @@ const GroundEmbedding: React.FC<MessageProps> = forwardRef((props, ref) => {
style={{
border: '1px solid var(--ant-color-border)',
borderRadius: 'var(--border-radius-base)',
width: '100%',
overflow: 'hidden'
width: '100%'
}}
className="scatter"
>
@@ -14,10 +14,14 @@ self.onmessage = (
const dataList = embeddings.map((item) => {
return item.embedding;
});
let pca: any = null;
console.log('list:', dataList);
const pca = new PCA(dataList);
console.log('list:', pca);
// for large datasets, use NIPALS method for PCA
if (dataList.length > 200) {
pca = new PCA(dataList, { nCompNIPALS: 2, method: 'NIPALS' });
} else {
pca = new PCA(dataList); // default method is SVD
}
const pcadata = pca.predict(dataList, { nComponents: 2 }).to2DArray();
const input = [