Skip to content

Commit 9e9253c

Browse files
authored
πŸ› Modify the knowledge base front-end rendering #1458#1456
πŸ› Modify the knowledge base front-end rendering #1458#1456
2 parents 8a003af + 59a44fd commit 9e9253c

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

β€Žbackend/utils/document_vector_utils.pyβ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,10 +237,18 @@ def kmeans_cluster_documents(doc_embeddings: Dict[str, np.ndarray], k: Optional[
237237
doc_ids = list(doc_embeddings.keys())
238238
embeddings_array = np.array([doc_embeddings[doc_id] for doc_id in doc_ids])
239239

240+
# Handle single document case
241+
if len(doc_ids) == 1:
242+
logger.info("Only one document found, skipping clustering")
243+
return {0: doc_ids}
244+
240245
# Determine K value
241246
if k is None:
242247
k = auto_determine_k(embeddings_array)
243248

249+
# Ensure k is not greater than number of documents
250+
k = min(k, len(doc_ids))
251+
244252
logger.info(f"Clustering {len(doc_ids)} documents into {k} clusters")
245253

246254
# Perform K-means clustering

β€Žfrontend/components/ui/markdownRenderer.tsxβ€Ž

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,15 @@ export const MarkdownRenderer: React.FC<MarkdownRendererProps> = ({
437437
const code = mmd[1];
438438
return <Diagram key={`mmd-${index}`} code={code} className="my-4" />;
439439
}
440+
// Handle line breaks in text content
441+
if (part.includes('\n')) {
442+
return part.split('\n').map((line, lineIndex) => (
443+
<React.Fragment key={`${index}-${lineIndex}`}>
444+
{line}
445+
{lineIndex < part.split('\n').length - 1 && <br />}
446+
</React.Fragment>
447+
));
448+
}
440449
return part;
441450
})}
442451
</>

β€Žtest/backend/test_document_vector_utils.pyβ€Ž

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,19 @@ def test_kmeans_cluster_documents_empty(self):
145145
clusters = kmeans_cluster_documents(doc_embeddings)
146146

147147
assert clusters == {}
148+
149+
def test_kmeans_cluster_documents_single(self):
150+
"""Test handling of single document"""
151+
doc_embeddings = {
152+
'doc1': np.array([1.0, 1.0, 1.0])
153+
}
154+
clusters = kmeans_cluster_documents(doc_embeddings)
155+
156+
# Should return single cluster with one document
157+
assert len(clusters) == 1
158+
assert 0 in clusters
159+
assert len(clusters[0]) == 1
160+
assert clusters[0][0] == 'doc1'
148161

149162

150163
class TestExtractRepresentativeChunksSmart:

0 commit comments

Comments
Β (0)