fix: pca calculating takes a long time
This commit is contained in:
@@ -181,7 +181,7 @@ const Scatter: React.FC<ChartProps> = (props) => {
|
|||||||
<span class="tooltip-value">${item.text}</span>
|
<span class="tooltip-value">${item.text}</span>
|
||||||
</span>`;
|
</span>`;
|
||||||
});
|
});
|
||||||
return `<div class="tooltip-wrapper">${result}</div>`;
|
return `<div class="tooltip-wrapper scatter">${result}</div>`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
|
|||||||
@@ -746,6 +746,12 @@ body {
|
|||||||
min-width: 100px;
|
min-width: 100px;
|
||||||
max-width: 360px;
|
max-width: 360px;
|
||||||
|
|
||||||
|
&.scatter {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
.tooltip-x-name {
|
.tooltip-x-name {
|
||||||
font-size: var(--font-size-small);
|
font-size: var(--font-size-small);
|
||||||
color: var(--ant-color-text-tertiary);
|
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);
|
setTokenResult(result.usage);
|
||||||
|
|
||||||
const embeddingsList = result.data || [];
|
const embeddingsList = result.data || [];
|
||||||
@@ -216,9 +215,9 @@ const GroundEmbedding: React.FC<MessageProps> = forwardRef((props, ref) => {
|
|||||||
|
|
||||||
workerRef.current!.onmessage = (event: MessageEvent) => {
|
workerRef.current!.onmessage = (event: MessageEvent) => {
|
||||||
const { scatterData, embeddingData } = event.data;
|
const { scatterData, embeddingData } = event.data;
|
||||||
console.log('worker result:', scatterData, embeddingData);
|
|
||||||
setScatterData(scatterData);
|
setScatterData(scatterData);
|
||||||
setEmbeddingData(embeddingData);
|
setEmbeddingData(embeddingData);
|
||||||
|
setLoading(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
postMessage({
|
postMessage({
|
||||||
@@ -226,15 +225,11 @@ const GroundEmbedding: React.FC<MessageProps> = forwardRef((props, ref) => {
|
|||||||
textList: textList,
|
textList: textList,
|
||||||
fileList: fileList
|
fileList: fileList
|
||||||
});
|
});
|
||||||
|
|
||||||
// generateEmbedding(embeddingsList);
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.log('result=========error', error);
|
|
||||||
setTokenResult({
|
setTokenResult({
|
||||||
error: true,
|
error: true,
|
||||||
errorMessage: extractErrorMessage(error.response)
|
errorMessage: extractErrorMessage(error.response)
|
||||||
});
|
});
|
||||||
} finally {
|
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -386,7 +381,9 @@ const GroundEmbedding: React.FC<MessageProps> = forwardRef((props, ref) => {
|
|||||||
children: (
|
children: (
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: 'var(--ant-color-bg-container)'
|
backgroundColor: 'var(--ant-color-bg-container)',
|
||||||
|
borderRadius: 'var(--border-radius-base)',
|
||||||
|
overflow: 'hidden'
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<HighlightCode
|
<HighlightCode
|
||||||
@@ -655,8 +652,7 @@ const GroundEmbedding: React.FC<MessageProps> = forwardRef((props, ref) => {
|
|||||||
style={{
|
style={{
|
||||||
border: '1px solid var(--ant-color-border)',
|
border: '1px solid var(--ant-color-border)',
|
||||||
borderRadius: 'var(--border-radius-base)',
|
borderRadius: 'var(--border-radius-base)',
|
||||||
width: '100%',
|
width: '100%'
|
||||||
overflow: 'hidden'
|
|
||||||
}}
|
}}
|
||||||
className="scatter"
|
className="scatter"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -14,10 +14,14 @@ self.onmessage = (
|
|||||||
const dataList = embeddings.map((item) => {
|
const dataList = embeddings.map((item) => {
|
||||||
return item.embedding;
|
return item.embedding;
|
||||||
});
|
});
|
||||||
|
let pca: any = null;
|
||||||
|
|
||||||
console.log('list:', dataList);
|
// for large datasets, use NIPALS method for PCA
|
||||||
const pca = new PCA(dataList);
|
if (dataList.length > 200) {
|
||||||
console.log('list:', pca);
|
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 pcadata = pca.predict(dataList, { nComponents: 2 }).to2DArray();
|
||||||
|
|
||||||
const input = [
|
const input = [
|
||||||
|
|||||||
Reference in New Issue
Block a user